2014-09-13 48 views
4

基本上音频斗篷正在工作。除了一个令我迷惑的奇怪现象。我会尽力解释。Beagle Bone Black Audio Cape rev B同步问题

当我播放一个.wav文件时,例如speaker-test -t vaw - >如果幸运的话,我会听到Front Left - Front的权利。但10分之9,我听到白色噪音,左前方的音频声音在背景中很微弱,或者在另一时间,声音只是失真。当我使用aplay或mplayer播放文件时会发生同样的情况。

所以,当我很幸运,或者系统时钟的时间同步时,我会清楚地听到音频,如果不同步,我可能会听到白噪声或失真的播放。

我有谷歌广泛,并没有找到任何解决方案。所以我希望你们中的一位知道这里发生了什么。它必须是低水平的。

我在这件事上颇为陌生,但根据这个:Troubleshooting Linux Sound所有接缝工作正常。

这是我的系统参数和设置:根@ beaglebone:〜#lsb_release -a经销商ID:埃说明:埃GNU/Linux的v2012.12(核心版)发布:v2012.12代号:核心版

[email protected]:~# cat /sys/devices/bone_capemgr*/slots 0: 54:PF--- 

1: 55:PF--- 
2: 56:P---L CBB-Relay,00A0,Logic_Supply,CBB-Relay 
3: 57:PF--- 
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G 
5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI 
6: ff:P-O-L Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN 
7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-BONE-AUDI-02 
[email protected]:~# speaker-test -t wav 

扬声器试验1.0.25

回放设备是默认流参数是480​​00Hz,S16_LE,1个通道WAV文件(S)速率设置为48000Hz(请求48000Hz)缓冲区大小范围从128到32768期尺寸范围从8到2048使用最大缓冲区大小32768周期= 4已设置period_size = 2048已设置buffer_size = 32768

0 - 左前每个周期 时间= 0.641097

0 - 左前 根@ beaglebone:〜#mplayer的AxelF.wav MPlayer2 2.0-379-ge3f5043(C)2000至11年的MPlayer团队162音频& 361视频编解码器

播放AxelF.wav。检测到的文件格式:WAV格式(libavformat)[wav @ 0xb6082780] max_analyze_duration达到[lavf]流0:音频(pcm_s16le),-aid 0加载字幕。

============================================== ================ 强制音频编解码器:mad打开音频解码器:[pcm]未压缩的PCM音频解码器音频:44100 Hz,2 ch,s16le,1411.2 kbit/100.00 %(比例:176400-> 176400)所选音频编解码器:[pcm] afm:pcm(未压缩PCM)

======================= ======================================= [编辑] AO:[alsa] 44100Hz 2ch s16le(每个采样2字节)视频:无视频开始播放... A:1.6(01.6)15.9(15.8)0.3%

MPlayer被模块中的信号2中断:未知

正在退出...(退出)

回答

1

我可以对导致您遇到的工件的原因进行说明。对不起,我还没有一个对策 - 我正在努力解决同样的问题。你相当准确地描述可感知的后果。

使用I2S总线,声音数据从ARM片上系统传输到音频斗篷上的音频编解码器。I2S是一种串行协议,它每次发送一位数据,每个采样以最高有效位开始,然后将所有位向下发送到最低有效位。在发送一个采样的最低有效位之后,发送下一个音频信道上采样的最高有效位。为了能够解释比特流,接收音频编解码器需要知道新的声音样本何时以其最高有效位开始,并且还知道每个声音样本属于哪个通道。为此,“字选择”(WS)信号是I2S的一部分,并更改其值以指示声音采样的开始,并标识通道,请参阅this I2S timing diagram以更好地理解该概念。

当你听到巨响和目标:

你,我认为我们不-相当工作的音频斗篷什么可通过比特流要充分解释失步音频编解码器被解释信号在背景中是软的,则先前样本的一个或多个最低有效位被解释为当前样本的最高有效位。位数越多,目标信号越柔和,直到你可能只在感知噪声时(这是一种猜测!)大约4位被移位。

当偏移位于另一个方向时,即当前样本的最高有效位被解释为先前样本的最低有效位时,那么您听到的将听起来对信号的软部分是正确的,即当最重要的一点实际上并没有被使用(这是一个简化,见下文)。对于信号的较大部分,例如鼓的节拍,你会觉得失踪的最重要的位失真。当然,随着更多位向这个方向移动,失真变得更糟,并且开始于更软的层级。

在上面的段落中,最重要的将随着数据的符号而改变,所以它没有被实际使用的陈述仅在最高有效位将具有与下一最高有效位相同的值的情况下有效为了柔和的声音。有关如何在计算机中呈现负整数的介绍,请参见Two's Complement

我不确定,发生腐败的地方。这可能是由WS上的音频编解码器没有正确解释WS信号,或者WS信号没有被ARM片上系统正确发送,或者移位可能已经发生在ARM CPU内部,例如,在Alsa司机。