OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3567|回复: 3

关于USB全速设备的帧间隔时间

[复制链接]

24

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2017-10-21
在线时间
41 小时
发表于 2020-10-13 16:04:51 | 显示全部楼层 |阅读模式
10金钱
在调试USBHID全速设备的时候,参考了原子的虚拟串口的例程,是在SOF_Callback中调用端点中断服务函数来完成端点数据的传输。 1.png
我了解到,“对于全速设备来说,每1毫秒有1个帧首信号,因此,每1毫秒会调用1次这个帧首中断回调函数SOF_Callback”。注意在函数内部通过对FrameCount累加到HID_IN_FRAME_INTERVAL再调用端点中断服务函数来控制每帧传输的时间间隔。
以上是我的理解,但是似乎并不对,因为我设置HID_IN_FRAME_INTERVAL = 20,也就是最短的帧间隔也要20个帧首中断(20ms),但实测发现帧间隔最快只有8ms!

另外我注意到另外一个时间概念
就是定义在端点描述符中的“轮询时间


我理解的轮询时间,就是主机隔多久来查这个端点,难道这个时间是主机直接触发端点1中断来调用端点1的中断服务函数(不通过SOF回调函数)进行查询的?如果是这样的话,理论上我注释掉SOF回调函数里的内容也应该是可以发送数据的,但并不是。
我有些迷惑。。。求个各路大佬指点迷津

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

24

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2017-10-21
在线时间
41 小时
 楼主| 发表于 2020-10-13 16:17:24 | 显示全部楼层
修改端点描述符里的那个轮询时间可以修改帧间隔,但是也并不准,实际时间间隔是我在端点描述符里设置的轮询时间的70%左右。通过控制端点中断服务函数被SOF调用的次数并不能影响帧间隔!这是目前实测的结果
回复

使用道具 举报

2

主题

582

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2690
金钱
2690
注册时间
2014-5-23
在线时间
188 小时
发表于 2020-10-15 10:02:34 | 显示全部楼层
ForestLi 发表于 2020-10-13 16:17
修改端点描述符里的那个轮询时间可以修改帧间隔,但是也并不准,实际时间间隔是我在端点描述符里设置的轮询 ...

这个时间是主机来轮训的时间
回复

使用道具 举报

24

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2017-10-21
在线时间
41 小时
 楼主| 发表于 2020-10-15 17:42:14 | 显示全部楼层
awsawzj 发表于 2020-10-15 10:02
这个时间是主机来轮训的时间

那和SOF那个时间有什么区别呀?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 05:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表