STM32 USB通信延迟有多大?

STM32 USB通信延迟有多大?

STM32 USB通信延迟有多大?

[复制链接]

OMG!!

提问时间:2019-7-23 12:47 /

问答

是否解决:

STM32作为从机,接收来自PC的实时IO信号,大约每秒100次,那每次信号只有20ms的间隔我用串口做,主机发送到从机接收到,延迟很不稳定,大约从10ms-40ms,从机执行的IO信号的时候很不均匀。。

不知道USB通信能做到多低的延迟,会不会出现串口的问题

不知道还有别的解法没?

谢谢各位大佬!

赞 0

收藏 0

评论5

分享

发布时间:2019-7-23 12:47

举报

请先登录后回复

5个回答

butterflyspring

回答时间:2019-7-26 17:30:26

a0a.1 32b0c

假定USB是FULL SPEED, 那么bps 是12MHZ, 一个毫秒握手通讯一次,最多18包数据,一次可以传64个字节,所以USB通讯速度足够快。 收到数据后STM32会产生中断,这个延迟也很小,推测后最多不会少于2毫秒就应该响应到。 建议你用USB分析仪检测你主机发送的速率是否及时,如果上位机发送及时再测量STM32响应速度(OUT 中断)

1

评论

回复

支持 1

反对 0

radio2radio

回答时间:2019-7-23 13:25:07

a0a.1 32b0c

使用PC做主机,由于现在的Windows不是真正的实时操作系统,延时是不可控的。

早期的DOS,和早期的Windows,是可以直接控制IO的,现在的Windows都是虚拟控制的,从控制台到RS232或者USB口,都要经过多次缓存,不可能稳定预知时延(ms级)。串口简单一些,USB驱动复杂,延时会更不稳定。

如果不能修改从机,容许接受不稳定的控制输入,只能主机不使用PC,使用实时操作系统的控制器。比如另一STM32作为主机。

0

评论

回复

支持

反对

maxtch

回答时间:2019-7-24 00:58:52

a0a.1 32b0c

USB 在设计之初就根本没有考虑过实时性能,因此说如果对于传输时序有要求的话还是避开吧,替代方案我有三个:

其一:如果主板支持,考虑用硬件串口。硬件串口在 PC 上不论是总线结构还是驱动都要简单得多,因此时序更可控。不过现在大多数新主板都取消了硬件串口,找起来会有点累。

其二:如果固件复杂度可以接受,考虑走以太网。以太网光是速度就要比 USB 快得多,哪怕一样是不针对实时优化软硬件设计,光这个接口提速就可以消除不少延迟问题。

其三:如果要求更高的话,考虑 PCIe。这个要用一片桥接芯片,桥接芯片不便宜,而且电脑上的驱动也是比较复杂的。但是不论速度还是实时性,PCIe 都要好得多。PCIe 可以再转成 ExpressCard 或 Thunderbolt 来兼容笔记本电脑。

0

评论

回复

支持

反对

bird0123

回答时间:2019-7-24 09:16:45

a1024a.1 32b0c

学习以下

0

评论

回复

支持

反对

天臆弄人

回答时间:2019-7-26 13:42:47

a0a.1 32b0c

WIN 不是实时系统,但是你的20ms延时控制软件上是可以做到的,就是不会很精确会相差个5-10ms

0

评论

回复

支持

反对

相关推荐

小米电视与手机如何连接:三种方式详细教学
在线365bet盘口

小米电视与手机如何连接:三种方式详细教学

📅 07-07 👁️ 3475
CUDA Samples 使用教程
在线365bet盘口

CUDA Samples 使用教程

📅 07-13 👁️ 2237
DNF哪个材料卖商店最贵
在线365bet盘口

DNF哪个材料卖商店最贵

📅 08-02 👁️ 4489