This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM335x评估板问题

Other Parts Discussed in Thread: TMDXEVM3358, TLV320AIC3106

你好,问几个问题。用刚买的AM335x Evaluation Module(TMDXEVM3358)进行测试,测试了其他几个例子是可以的,但测试McASP时有问题。例子实现的功能是在音频输入端和输出端分别插入话筒和耳机,在话筒说话,应该在耳机端就应该能听到说话的声音;但是,测试后,并不能实现预期效果,听不到声音。

(1)按说开发板上功能应该都是经过测试可以实现的,对吧?

(2)应该只要用3.5mm标准接口的话筒都可以用吧?对音频输入话筒的匹配阻抗有没要求啊?相关资料中我并没有找到说明。

(3)同样我还是要说,开发板上的功能应该是测试过的。在电路上看到,音频输入端用到的耦合电容是0.1uF,会不会太小?我不确定,如果确实测试过,那就说明电路是没问题的。

(4)同样我还是要说,开发板上的功能应该是测试过的。不过我有疑问,在输入端直接接话筒,可是话筒的输出幅度是很小的,噪声都比它大,一起进入输入端可以用吗?由于很小,PGA是不是应该增大增益?(注:例程中PGA配置的就是0dB,没有做放大)如果放大,岂不是可噪声一起放大了。我试过,放大后,耳机输入端听到的噪声很大,但话筒端的声音却听不到。

(5)开发板上用到的codec是TLV320AIC3106,在配置采样率时CODEC_CLKIN可以分PLLDIV_OUT和CLKDIV_OUT,这个是通过配置page 0的101寄存器的第0位来实现,为什么在这一位写0或写1对采样率都没有影响,都是将PLLDIV_OUT作为CODEC_CLKIN。而且,从提供的例程看,它就是要通过PLLDIV_OUT作为CODEC_CLKIN的,可是它在那一位却是写的1,即用CLKDIV_OUT作为CODEC_CLKIN。

谢谢!

  • 通过AM335xGPEVM的原理图可以了解到,AIC3106接的是Line In而不是Mic IN,因此这个demo不能做MIC录音。

    更多的audio信息请参考:

    http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.11_Features_and_Performance_Guide#ALSA_SoC_Audio_Driver

    http://processors.wiki.ti.com/index.php/AM335x_Audio_Driver%27s_Guide

  • 说话可以听到声音这个需要陪下codec,默认应该没有配置。

    目前这个板子上的音频输入的确做得一般,效果不大好,如果声音要求很高,可以考虑加放大器。

  • 我试了,可以,不在于输入幅度的大小,因为我直接用信号源输入信号,即使小到1mV,在输出端用耳机也是可以听到的。后来用我自己的电路板测试,找到了原因,我用的那个话筒需要麦克风偏置电压,我用MIC3L作为输入,且配置寄存器使输出偏置电压,然后就可以了。但又需要问如下几个问题:

    (1)就在EVM开发板上测试提供的例程,不知你们试过没,它的左右声道输入输出不是对应的,即往LINE1L输入信号,LINE1R不输入信号,输出端HPLOUT无输出,而HPROUT有输出;反之亦然。在page 0的寄存器7中有几位是配置输入输出路径配对的,所提供例程中配置是这样的,即Left DAC datapath plays left channel input data,Right DAC datapath plays right channel input data,这样配置很自然,但结果就像我刚说的,不对应了。我试了把这个寄存器改为Left DAC datapath plays right channel input data,Right DAC datapath plays left  channel input data,结果当然就对应上了。我现在疑惑的是,是datasheet有误了,还是提供的例程中有问题?我倾向于前者。

    (2)好多例程中都有MMU和Cache这两个函数,关于McASP的例程,EVMSK中是有这两个函数的,EVM中没有,后来我把这两个函数加到EVM的例程中测试,发现只用这两个函数中的一个或者两个干脆都不用,测试是正确的;但如果这两个函数都用,结果就不对了,检测显示ARM收到codec的数字化数据后再向codec返回不了数据。看这两个函数的具体代码,但都是汇编了,也看不懂。不知为什么这两个函数不能“共存”?

    (3)一个TLV320AIC3106有好多输入输出,我怎么能把它们都用起来?即在输入端如何实现mux?或更具体的,我想实现这样的输入输出通信对:LINE1L->HPLOUT  LINE1R->HPROUT  LINE2L->HPLCOM  LINE2R->HPRCOM  MIC3L->LEFT_LOP/M  MIC3R->RIGHT_LOP/M,该如何实现呢?

    谢谢了!