你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

我用1K采样率采集的模拟电压在通过USB发送给电脑时丢失了部分数据。

[复制链接]
Boone301 提问时间:2022-10-7 17:11 / 未解决
大家好:
我的芯片STM32F103C8T6。
我用定时器产生1K的中断,中断里进行模拟采集并打开USB发生允许。
主程序里USB发送数据并关闭USB发生允许。
电脑上接收数据时有部分数据丢失了。
请高手指点一下。
谢谢
陆迅海

中断

中断

电脑上丢失了

电脑上丢失了
收藏 评论9 发布时间:2022-10-7 17:11

举报

9个回答
xmshao 回答时间:2022-10-8 10:58:40
也就是说你现在1ms产生1批数据通过USB上传。你的USB传输估计是中断传输吧。我记得全速中断传输的查询间隔最短就是1ms。
如果这样就很难保证不丢数据。如果你将ADC生产数据的时间变长,比方变长3ms或5ms会怎么样呢?先锁定原因,再找解决办法。
废鱼 回答时间:2022-10-8 09:59:59
建议读取数据SPI在外部做处理。定时器只提供计数基准,通过基准判断是否需要读取SPI数据。
butterflyspring 回答时间:2022-10-8 12:03:42
测试一下,中断里面执行的时间有多长。是否还有其他中断,这些时间如果过长有可能会少一次
Boone301 回答时间:2022-10-8 19:35:08
废鱼 发表于 2022-10-8 09:59
建议读取数据SPI在外部做处理。定时器只提供计数基准,通过基准判断是否需要读取SPI数据。
...

是的,我也是怎么做的,貌似是usb发送给电脑出现了问题。
USB发送.png
废鱼 回答时间:2022-10-9 16:12:57
Boone301 发表于 2022-10-8 19:35
是的,我也是怎么做的,貌似是usb发送给电脑出现了问题。

如果用的是虚拟串口,在异常的时候,看一下设备管理器里面的串口设备是否正常,如果不正常,可能是因为USB驱动或者USB使用的问题。同时也可以增加串口打印,确认程序是正常的。可以正常的采集数据。另外看一下传输1K的空间,USB的底层驱动缓冲区是否比较小。建议开大一些。
Boone301 回答时间:2022-10-9 20:36:11
xmshao 发表于 2022-10-8 10:58
也就是说你现在1ms产生1批数据通过USB上传。你的USB传输估计是中断传输吧。我记得全速中断传输的查询间隔最 ...

非常同意你的观点,先要找到问题再解决问题,或者尝试一个新的思路,USB的传输不是有有缓冲的吗?没必要进行实时传输,有了缓冲为什么还会有数据丢失?
这是我觉得奇怪的地方。
下面是正常情况和数据丢失(数据丢失前通信异常)。

正常

正常

数据丢失

数据丢失
Boone301 回答时间:2022-10-9 21:11:12
Boone301 发表于 2022-10-9 20:36
非常同意你的观点,先要找到问题再解决问题,或者尝试一个新的思路,USB的传输不是有有缓冲的吗?没必要进 ...

正常情况有许多等待响应的帧,没有数据就是不响应,有数据在同步后就有数据跟上了,异常时没有等待发送的帧,如下图:

正常帧

正常帧

间隔大

间隔大
Boone301 回答时间:2022-10-11 08:43:45
废鱼 发表于 2022-10-9 16:12
如果用的是虚拟串口,在异常的时候,看一下设备管理器里面的串口设备是否正常,如果不正常,可能是因为US ...

这个不行的,受USB协议的约束。
Boone301 回答时间:2022-10-13 10:46:14
废鱼 发表于 2022-10-8 09:59
建议读取数据SPI在外部做处理。定时器只提供计数基准,通过基准判断是否需要读取SPI数据。
...

你好!
我不是用的中断,我用的是批量,不过我也试过中断的了,并比较了中断和批量的区别。
1:中断确实如你说的1mS一次,在1mS之间没有许多的发送了,不过丢包的更多。
2:批量的在1mS间有许多发生。

偶尔有丢失.rar

下载

797.94 KB, 下载次数: 3, 下载积分: ST金币 -1

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版