由文档说明得知: CH341T串口接收的数据放在其缓冲区内,每隔1ms按USB协议打包发送,
请问: 此USB发送速度是不是固定的(比如12Mbps)?如果是固定波特率,那么满缓冲区数据打包发完一次要多长时间,以便于DSP间隔同长时间后发送数据,进而避免溢出。
还是USB发送速度与串口波特率有关系,即串口波特率越大,其发送速度越快,而串口波特率越小,其发送速度越慢?也就是说高波特率有利于缓冲区快速发出数据后使缓冲区进入接收状态,从而可以尽量避免溢出?
由文档说明得知: CH341T串口接收的数据放在其缓冲区内,每隔1ms按USB协议打包发送,
请问: 此USB发送速度是不是固定的(比如12Mbps)?如果是固定波特率,那么满缓冲区数据打包发完一次要多长时间,以便于DSP间隔同长时间后发送数据,进而避免溢出。
还是USB发送速度与串口波特率有关系,即串口波特率越大,其发送速度越快,而串口波特率越小,其发送速度越慢?也就是说高波特率有利于缓冲区快速发出数据后使缓冲区进入接收状态,从而可以尽量避免溢出?
您说的波特率跟USB传输无关. USB转串口其实就是计算机将数据通过USB通道发送到芯片里,芯片固件再来控制硬件串口UART,收发数据是以指定波特率按串行方式来收发数据.在串口硬件内有缓冲区来缓冲收发的数据.对于发送的数据是先放到发送缓冲区内来等待对方来取,当数据从缓冲区来移走,此时会通知计算机发送成功;对于接收,是CH341先把收到的数据收到CH341的硬件缓冲区内,接着通知计算机,CH341接收缓冲区内有数据,然后计算机来取.这过程是很快的.当然硬件缓冲区肯定不会像计算机串口驱动的缓冲区那么大,所以于341据缓冲区溢出:一是计算机没有足够带宽来将串口缓冲区内的数据及时收到计算机驱动内,或者是与ch341相连的设备没有及时来接收CH341串口发出的暂存在发送缓冲区内的数据. 所以在串口通讯中为什么会有握手信号(CTS,RTS等),就是为了防止在高波特来有及时收发数据而丢失数据. 所以鉴由于您的情况,强烈建议您用握手信号来控制断气的收发.
非常感谢沁恒的工程师的详细说明和热心帮助, 我把波特率改为1M,连续不间断发送数据的情况下(最密集的发送方式),数据发送非常流畅,图形完全正确,这个速度完全能满足我的要求!
感谢沁恒产品的良好品质!!!感谢沁恒工程师的热心帮助!!!
这是我们应该做的. 另外,您可以在您设备在带宽不是很大的情况下,采集数据.如让U盘不停的传输数据或其他USB设备不停的工作.因为USB带宽的分配是USB主机驱动来分配的.看看会不会对您的设备数据采集有影响.