打印
[STM32F1]

STM32的USB音频 单片机I2S时钟比USB输入时钟快2%,有没有办法解决?

[复制链接]
3150|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
单片机用的是STM32F103 就是F3 discovery, 72M时钟
USB这边只管接收 96K 16bit 双声道数据,因为电脑这边始终比较准,数据都是按时传来


I2S用的96K 16bit 2声道,但是事实上因为分频不够准 大概是97K的频率来发,结果导致大概20ms就有0.37ms的断档时间。。。
除了外接时钟源之外有啥办法解决吗?
沙发
香水城| | 2015-5-26 17:47 | 只看该作者
有两个大的方向:

第一:在MCU和PC之间的USB通信,增加一个control pipe来告知主机加快或者减慢数据的下传;但是取决于PC驱动是否支持

第二:软件算法:
ST提供的两个库,一个是比较简单的,根据输入(USB)输出(I2S)的快慢,定期增加或者去掉若干采样;还有一个比较复杂的库,SRC算法,可以非常好效果,但是对Flash、ram的占用率会比前面简单库占用的多,并且也会占用CPU额外的workload。这两种算法官网上没有发布,需要找ST的市场或者销售人员。

使用特权

评论回复
板凳
john_lee| | 2015-5-26 18:05 | 只看该作者
easy,设置数据缓冲,根据缓冲的数据存量来动态微调I2S的时钟,以改变I2S的吞吐率。

使用特权

评论回复
地板
musich| | 2015-5-28 02:04 | 只看该作者
香水城 发表于 2015-5-26 17:47
有两个大的方向:

第一:在MCU和PC之间的USB通信,增加一个control pipe来告知主机加快或者减慢数据的下传 ...

定期增加或者去掉若干采样, 声音就变调了.

使用特权

评论回复
5
戈卫东| | 2015-5-28 06:27 | 只看该作者
时钟无法严格同步,声音失真无法避免。

使用特权

评论回复
6
rgwan| | 2017-1-26 10:29 | 只看该作者
用UAC2协议。UAC1无法避免。

使用特权

评论回复
7
yuanbuqi| | 2017-6-8 11:25 | 只看该作者
楼主您好,我也遇到同样的问题,请问找到解决办法了吗

使用特权

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

本版积分规则

6

主题

16

帖子

0

粉丝