大家好: 我的芯片STM32F103C8T6。 我用定时器产生1K的中断,中断里进行模拟采集并打开USB发生允许。 主程序里USB发送数据并关闭USB发生允许。 电脑上接收数据时有部分数据丢失了。 请高手指点一下。 谢谢 陆迅海 |
也就是说你现在1ms产生1批数据通过USB上传。你的USB传输估计是中断传输吧。我记得全速中断传输的查询间隔最短就是1ms。 如果这样就很难保证不丢数据。如果你将ADC生产数据的时间变长,比方变长3ms或5ms会怎么样呢?先锁定原因,再找解决办法。
建议读取数据SPI在外部做处理。定时器只提供计数基准,通过基准判断是否需要读取SPI数据。
测试一下,中断里面执行的时间有多长。是否还有其他中断,这些时间如果过长有可能会少一次
建议读取数据SPI在外部做处理。定时器只提供计数基准,通过基准判断是否需要读取SPI数据。 ...
是的,我也是怎么做的,貌似是usb发送给电脑出现了问题。
是的,我也是怎么做的,貌似是usb发送给电脑出现了问题。
如果用的是虚拟串口,在异常的时候,看一下设备管理器里面的串口设备是否正常,如果不正常,可能是因为USB驱动或者USB使用的问题。同时也可以增加串口打印,确认程序是正常的。可以正常的采集数据。另外看一下传输1K的空间,USB的底层驱动缓冲区是否比较小。建议开大一些。
也就是说你现在1ms产生1批数据通过USB上传。你的USB传输估计是中断传输吧。我记得全速中断传输的查询间隔最 ...
非常同意你的观点,先要找到问题再解决问题,或者尝试一个新的思路,USB的传输不是有有缓冲的吗?没必要进行实时传输,有了缓冲为什么还会有数据丢失? 这是我觉得奇怪的地方。 下面是正常情况和数据丢失(数据丢失前通信异常)。
非常同意你的观点,先要找到问题再解决问题,或者尝试一个新的思路,USB的传输不是有有缓冲的吗?没必要进 ...
正常情况有许多等待响应的帧,没有数据就是不响应,有数据在同步后就有数据跟上了,异常时没有等待发送的帧,如下图:
如果用的是虚拟串口,在异常的时候,看一下设备管理器里面的串口设备是否正常,如果不正常,可能是因为US ...
这个不行的,受USB协议的约束。
建议读取数据SPI在外部做处理。定时器只提供计数基准,通过基准判断是否需要读取SPI数据。 ...
你好! 我不是用的中断,我用的是批量,不过我也试过中断的了,并比较了中断和批量的区别。 1:中断确实如你说的1mS一次,在1mS之间没有许多的发送了,不过丢包的更多。 2:批量的在1mS间有许多发生。