[USB驱动]

请教如何实现USB异步传输的同步功能

[复制链接]
5112|12
手机看帖
扫描二维码
随时随地手机跟帖
jinxuan97|  楼主 | 2018-7-25 18:01 | 显示全部楼层 |阅读模式
本帖最后由 jinxuan97 于 2018-7-31 09:47 编辑

USB规范,有三种传输模式:同步、自适应,和异步. (Synchronous/Adaptive/Asynchronous)

Asynchronous模式, 据说对USB Audio 是比较好的同步方法. 需要一个Feedback endpoint, 读取Device的相对速率, 以供Host调整收发速率.
但是实现机制比较复杂, 有大神做过类似代码吗? 可不可以提供例程, 或者宝贵的建议提示?

非常感谢!

相关帖子

ayb_ice| | 2018-7-27 11:24 | 显示全部楼层
不是控制,中断,批量,同步这四种吗,没有听说什么异步传输

使用特权

评论回复
jinxuan97|  楼主 | 2018-7-27 14:19 | 显示全部楼层
ayb_ice 发表于 2018-7-27 11:24
不是控制,中断,批量,同步这四种吗,没有听说什么异步传输

我是指同步类型, endpoint 的bmAttributes有Synchronization Type: 01 = Asynchronous
一般有另一个反方向传输的endpoint feedback, 每隔几个frame可以查询到Device的data rate, Host 可以根据读取的数值调整传输数据长度.
我在测试Host时发现有的device读取不到这个数值. 或者data, feedback pipe 互相制约, 只有一个pipe持续工作.
所以感到比较迷惑!

使用特权

评论回复
ayb_ice| | 2018-7-27 14:23 | 显示全部楼层
jinxuan97 发表于 2018-7-27 14:19
我是指同步类型, endpoint 的bmAttributes有Synchronization Type: 01 = Asynchronous
一般有另一个反方 ...

底层的我就不太懂了

使用特权

评论回复
jinxuan97|  楼主 | 2018-8-6 17:46 | 显示全部楼层
问题解决了! 发现底层USB driver不能支持多通道的通讯.
从device拿到Ff后, Host应该调整发送的数据长度. 这样就可以保持数据的同步, 不会发生overflow/underflow.

使用特权

评论回复
jinxuan97|  楼主 | 2018-8-6 17:48 | 显示全部楼层
jinxuan97 发表于 2018-8-6 17:46
问题解决了! 发现底层USB driver不能支持多通道的通讯.
从device拿到Ff后, Host应该调整发送的数据长度. 这 ...

Ff is expressed in number of samples per (micro)frame for one channel. The Ff value consists of:
an integer part that represents the (integer) number of samples per (micro)frame and,
a fractional part that represents the “fraction” of a sample that would be needed to match the sampling frequency Fs to a resolution of 1 Hz or better.

使用特权

评论回复
zhs2007| | 2018-8-9 09:41 | 显示全部楼层
楼主研究的很深入啊
如果开发的是USB AUDIO DEVICE端程序,建议用自适应方式做采样率同步,DEVICE通过硬件或软件来动态微调采样率,无需HOST参与。
如果开发的是USB AUDIO HOST端程序,个人感觉也没太大必要去考虑同步问题,大部分低端USB AUDIO DEVICE都是没有任何同步机制,少数做的好的厂商会实现采样率自适应(Adaptive),用Synchronous/Asynchronous方式的还没见到过。

使用特权

评论回复
jinxuan97|  楼主 | 2018-8-13 12:24 | 显示全部楼层
zhs2007 发表于 2018-8-9 09:41
楼主研究的很深入啊
如果开发的是USB AUDIO DEVICE端程序,建议用自适应方式做采样率同步,DEVICE通过硬件 ...

非常感谢分享!

使用特权

评论回复
评论
jinxuan97 2020-1-7 11:43 回复TA
@不明所以 :Host 已经实现 
jinxuan97 2019-12-31 09:58 回复TA
@不明所以 :Device端应该更加容易实现. 
jinxuan97 2019-12-31 09:58 回复TA
@不明所以 :你好! 我主要实现Host端的协议代码. 已经完成功能. 
不明所以 2019-12-31 09:28 回复TA
我们现在也在搞这个,非常希望得到你的帮助 
不明所以 2019-12-31 09:27 回复TA
楼主你好,请问你实现了同步下的异步反馈端点设计吗? 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

72

帖子

6

粉丝