打印

USB声卡,频率修改遇到一些问题

[复制链接]
1303|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuqingli123|  楼主 | 2019-9-17 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xuqingli123 于 2019-9-17 11:21 编辑

USB声卡,频率修改后,传输的数据响应也会跟着修改,但是44100在双听到全速的时候,每帧要传输44100*4/1000,但是结果不是整数,这会不会影响数据之间的传输呢?现在48K时候,用扫频信号进行扫频,听不出来有什么问题,但是把频率修改成44100时候,每次扫频,在扫频结尾都会出现滋啦的声音。

使用特权

评论回复

相关帖子

沙发
394645065| | 2019-9-17 22:37 | 只看该作者
44.1kHz传输是这样的,前9帧,每帧传44个sample, 第10帧传45个sample.

使用特权

评论回复
板凳
zhs2007| | 2019-9-18 13:34 | 只看该作者
楼上正解!

使用特权

评论回复
地板
jinxuan97| | 2019-9-19 09:24 | 只看该作者
USB 的Sample Rate控制是个太关键的问题了, 搞定他你就是Expert!

使用特权

评论回复
5
zhs2007| | 2019-9-20 10:30 | 只看该作者
确实!电脑采样率和声卡采样率会有ppm级别的误差,如果不做处理,累积一段时间会有噪声。专业声卡一定要做采样率匹配微调。这里面道道很多。

使用特权

评论回复
6
xuqingli123|  楼主 | 2019-10-8 09:41 | 只看该作者
394645065 发表于 2019-9-17 22:37
44.1kHz传输是这样的,前9帧,每帧传44个sample, 第10帧传45个sample.

你好,有44.1K播放的程序吗,能否给一份,我按照这个意思改了两天还是没有改好。

使用特权

评论回复
7
jinxuan97| | 2019-10-9 11:42 | 只看该作者
xuqingli123 发表于 2019-10-8 09:41
你好,有44.1K播放的程序吗,能否给一份,我按照这个意思改了两天还是没有改好。 ...

        if ( (counter%10) == 0)        //for 44.1kHz sample rate, 44100 x 2 Channel x 2 Bytes /1000 ms = 176.4 Bytes
        {
                counter = 0;
                len = 180; //0xb4
        }
        else
        {        len = 176; //0xb0
        }

使用特权

评论回复
8
xuqingli123|  楼主 | 2019-10-15 08:40 | 只看该作者
本帖最后由 xuqingli123 于 2019-10-15 08:43 编辑
jinxuan97 发表于 2019-10-9 11:42
if ( (counter%10) == 0)        //for 44.1kHz sample rate, 44100 x 2 Channel x 2 Bytes /1000 ms = 176.4 B ...

这样修改了数据长度,DMA每次接收或者发送的长度也要跟着这个长度修改吗?我是跟着修改的,是不行的,但是如果不修改,DMA每次传输的数据长度还是176,和没修改一样的啊             if(a<9)
                {
                        /* Prepare Out endpoint to receive next audio packet */
                        DCD_EP_PrepareRx(pdev,
                                                      AUDIO_OUT_EP,
                                                       (uint8_t*)(IsocOutWrPtr),
                                                        176);
                        a++;
                }
                else
                {
                        /* Prepare Out endpoint to receive next audio packet */
                        DCD_EP_PrepareRx(pdev,
                                                     AUDIO_OUT_EP,
                                                      (uint8_t*)(IsocOutWrPtr),
                                                      180);
                        a=0;
                }


使用特权

评论回复
9
xuqingli123|  楼主 | 2020-4-8 16:54 | 只看该作者
jinxuan97 发表于 2019-10-9 11:42
if ( (counter%10) == 0)        //for 44.1kHz sample rate, 44100 x 2 Channel x 2 Bytes /1000 ms = 176.4 B ...

你好,这样接收电脑上面的数据,然后对应的播放是怎样的,现在发现我设置的播放是不正确的。求指教,我现在是把接收到的数据存在一个BUFF里面,然后每次从BUFF里面取出指定长度的数据,进行播放。但是在播放的过程中存在哒哒的声音,以为是数据重叠,把BUFF继续改大,哒哒声时间间隔还是没有改变,找不到原因。问一下,你是怎么播放的。

使用特权

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

本版积分规则

29

主题

174

帖子

2

粉丝