初级会员

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

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