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

STM32 USB通信延迟有多大?

[复制链接]
OMG!! 提问时间:2019-7-23 12:47 /
STM32作为从机,接收来自PC的实时IO信号,大约每秒100次,那每次信号只有20ms的间隔我用串口做,主机发送到从机接收到,延迟很不稳定,大约从10ms-40ms,从机执行的IO信号的时候很不均匀。。
不知道USB通信能做到多低的延迟,会不会出现串口的问题

不知道还有别的解法没?
谢谢各位大佬!
收藏 评论5 发布时间:2019-7-23 12:47

举报

5个回答
butterflyspring 回答时间:2019-7-26 17:30:26
假定USB是FULL SPEED, 那么bps 是12MHZ, 一个毫秒握手通讯一次,最多18包数据,一次可以传64个字节,所以USB通讯速度足够快。 收到数据后STM32会产生中断,这个延迟也很小,推测后最多不会少于2毫秒就应该响应到。 建议你用USB分析仪检测你主机发送的速率是否及时,如果上位机发送及时再测量STM32响应速度(OUT 中断)
radio2radio 回答时间:2019-7-23 13:25:07
使用PC做主机,由于现在的Windows不是真正的实时操作系统,延时是不可控的。
早期的DOS,和早期的Windows,是可以直接控制IO的,现在的Windows都是虚拟控制的,从控制台到RS232或者USB口,都要经过多次缓存,不可能稳定预知时延(ms级)。串口简单一些,USB驱动复杂,延时会更不稳定。
如果不能修改从机,容许接受不稳定的控制输入,只能主机不使用PC,使用实时操作系统的控制器。比如另一STM32作为主机。
maxtch 回答时间:2019-7-24 00:58:52
USB 在设计之初就根本没有考虑过实时性能,因此说如果对于传输时序有要求的话还是避开吧,替代方案我有三个:
其一:如果主板支持,考虑用硬件串口。硬件串口在 PC 上不论是总线结构还是驱动都要简单得多,因此时序更可控。不过现在大多数新主板都取消了硬件串口,找起来会有点累。
其二:如果固件复杂度可以接受,考虑走以太网。以太网光是速度就要比 USB 快得多,哪怕一样是不针对实时优化软硬件设计,光这个接口提速就可以消除不少延迟问题。
其三:如果要求更高的话,考虑 PCIe。这个要用一片桥接芯片,桥接芯片不便宜,而且电脑上的驱动也是比较复杂的。但是不论速度还是实时性,PCIe 都要好得多。PCIe 可以再转成 ExpressCard 或 Thunderbolt 来兼容笔记本电脑。
bird0123 回答时间:2019-7-24 09:16:45
学习以下
天臆弄人 回答时间:2019-7-26 13:42:47
WIN 不是实时系统,但是你的20ms延时控制软件上是可以做到的,就是不会很精确会相差个5-10ms
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版