[数据传输]

USB中SOF的作用与设备如何向主机发送数据?

[复制链接]
5797|7
手机看帖
扫描二维码
随时随地手机跟帖
MiniMango|  楼主 | 2019-12-16 09:34 | 显示全部楼层 |阅读模式
问题1
在低速与全速设备中,SOF每1ms发送一次,看了一些资料上面说的是用于同步;
疑惑点:SOF用于同步什么东西?SOF起到的作用是什么?SOF跟发送IN、OUT等指令有啥联系吗?

问题2
主机需要读数据的时候,会向设备发送IN指令,然后开始传输数据,
疑惑点:IN指令是什么时候发的?还是主机固定周期发?周期是SOF的1ms吗?
例如:设备有数据要发送,但是主机没有发送IN指令给设备。

使用特权

评论回复

相关帖子

zhs2007| | 2019-12-16 17:02 | 显示全部楼层
本帖最后由 zhs2007 于 2019-12-16 17:10 编辑

1. SOF由HOST每1ms定时发出,作用很多,相当于是一个时钟节拍基准,如果暂时用不到,就忽略也没有关系。
2. 每1ms称为一个Frame,其中INT,ISO,CTRL,BULK四种传输类型会有一个先后优先次序。1ms内可以发出很多个BULK端点的IN令牌。
3. 如果DEVICE要发送数据,必须等到IN令牌来了才能发出,否则不可以发出。可以理解为是HOST轮询收发的。
4. HOST何时发出IN令牌就要取决于HOST端,以及具体协议了。

使用特权

评论回复
MiniMango|  楼主 | 2019-12-17 09:00 | 显示全部楼层
zhs2007 发表于 2019-12-16 17:02
1. SOF由HOST每1ms定时发出,作用很多,相当于是一个时钟节拍基准,如果暂时用不到,就忽略也没有关系。
2. ...

多谢大佬的回答。还有几点没有想明白。
1、主机是不是向每个总线下的所有设备都发送一次SOF?比如:一个USB总线下挂了设备1、设备2、设备3,主机就要发送3次SOF;
2、设备挂起了,是否还会收到SOF?还是说设备挂起之后,主机就不向设备发送SOF了?

使用特权

评论回复
zhs2007| | 2019-12-17 09:41 | 显示全部楼层
本帖最后由 zhs2007 于 2019-12-17 09:47 编辑

1. HOST广播发送SOF。
2. 挂起状态没有SOF。设备挂起由HOST控制,HOST停止给DEVICE发送SOF,3ms后设备就认为是挂起请求,进入挂起状态。设备不可自行进入挂起状态。

使用特权

评论回复
MiniMango|  楼主 | 2019-12-17 14:18 | 显示全部楼层
zhs2007 发表于 2019-12-17 09:41
1. HOST广播发送SOF。
2. 挂起状态没有SOF。设备挂起由HOST控制,HOST停止给DEVICE发送SOF,3ms后设备就认 ...

非常感谢

使用特权

评论回复
394645065| | 2019-12-18 11:12 | 显示全部楼层
SOF目的是device和host之间的时间同步,如果你的USB设备里面没有用到同步传输和中断传输,可以忽略SOF.

使用特权

评论回复
MiniMango|  楼主 | 2019-12-18 15:47 | 显示全部楼层
394645065 发表于 2019-12-18 11:12
SOF目的是device和host之间的时间同步,如果你的USB设备里面没有用到同步传输和中断传输,可以忽略SOF. ...

1、这样子理解对不对:比如设置的中断传输间隔为10ms,主机发送了10个SOF后,才会向设备发送数据传输指令?
2、什么情况下  HOST  会停止给  DEVICE  发送SOF包,让设备挂起?电脑端对应的COM没有被使用?

使用特权

评论回复
小小攻城狮| | 2022-1-14 21:30 | 显示全部楼层
这个用硬件分析仪理解起来更快。我就是边用边学。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

0

粉丝