请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:TLV320AIC23B 我使用的是一种使用TLV320AIC23b作为ADC接口的电路板设计,它通过MCASP接口连接到TI部件。 我们发现,处理器音频堆栈中的某些内容在启动时将不可预测地交换L2左/右通道。 我一直无法解决交换问题,因此我们解决了在ADC和处理器之间具有FPGA的一些其他设计,以便使用FPGA插入测试模式来测试和纠正此问题。
使用直接的tlv->MCASP接口,我们无法插入测试模式,因此我的想法是尝试在ADC中将左侧或右侧静音,但这似乎不起作用。 我使用以下shell脚本设置芯片并获取测试音频文件:
tlv_addr=0x1a
tlv_write_reg ()
{
reg_addr=1美元
reg_LS8=2美元 #low 8 bits
reg_MSB=3美元
i2c_addr=$($($($($($($($($(${reg_addr}<1))|${reg_MSB}))
设置-x
i2cset -f $_lv_adr=0美元}{rendr_resetr_1}{rendr_{1}{r_r_reset}{<1}}{rendr_{r}}}{r_{r_laddr}}}}}}{{{r_
睡眠1
tlv_write_reg 0 0x1f 0 #left mute,no simultaneous update
tlv_write_reg 1 0x80 0 #right update tlv_write_reg 1 0x80 0 #right
phoner
tlv_write_reg 4 0x02 0 #Disable DAC,disable side tone,disable bypass,Line in selected mute 无麦克风升压
tlv_write_reg 5 0x00 0 #禁用:DAC软静音,取消强调,ADC高通
tlv_write_reg 6 0x0a 0 #开机,时钟打开,OSC打开,输出打开,DAC关闭, ADC打开,麦克风关闭,线路输入打开
tlv_write_reg 7 0x4e 0 #Master模式,无LRSwap,无相位交换,32b I2S
tlv_write_reg 8 0x00 0 #div中无clk,SR=48K,BOSR=256f_s,正常模式(非USB)
tlv_write_reg 9 0x01 0 #activate digital interface
arecord -D hw:0,0 -d5 -fS32_LE -C2 -r4.8万 test_liveswap.raw &
sle2
tlv_write_reg 0 0x80 0 #left mute,no simultaneous update
tlv_write_reg 1 0x1f 0 #right full volume,no simultaneous update
#bit noise to see lower channels。
当处理器接口处于活动状态时,我们必须交换#,因为重
置MCASP接口
时,它将不可预测地#swap l/r,等待$!
由于我无法保证模拟输入上的任何实际活动,因此计划在32位模式下捕获一个信道静音的情况,并希望板上有足够的噪音来导致未静音信道的较低位中的活动。 在检查捕获的音频时,我确实看到了较低位的噪音,但它在两个通道上,在整个录制过程中没有明显的变化。 这里我将它解释为4通道16b音频,以更好地显示较低的位:
当您看到测试记录时,显示两个信道均未有效静音,因此无法在软件中测试信道交换。 是否有某种方法强制所选通道的输出全部为零? 或者,我可以通过其他方式测试MCASP/Linux音频堆栈中的硬件通道交换?
