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.

AIC3106 无法录音

Other Parts Discussed in Thread: TLV320AIC3106

本人依据 AM335x General Purpose EVM Board 设计了一块基板,上面的音频芯片为tlv320aic3106,控制板为Beaglebone。固件为TI提供的linux-3.2.0-psp04.06.00.10,经过一段时间调试,tlv320aic3106终于可以发出声音了,但无论如何也无法进行录音。请问各位大神,该如何对内核进行修改呢?万分感谢。

  • 我和你的问题一样啊。 开始录音,及调试信息如下:

    [root@me share]# aplay -C -t wav -c 2 -r 44100 -f S16_LE -d 10 -v record.wav

    [ 1917.347137] davinci-mcasp davinci-mcasp.1: ---wxj---davinci_mcasp_startup
    Recording WAVE 'record.wav' : Signed 16 bit Litt[ 1917.359069] tlv320aic3x-codec 3-001b: ---wxj---sound/soc/codecs/tlv320aic3x.c aic3x_hw_params()
    le Endian, Rate [ 1917.368530] tlv320aic3x-codec 3-001b: ---wxj--- SNDRV_PCM_FORMAT_S16_LE
    44100 Hz, Stereo[ 1917.376831] tlv320aic3x-codec 3-001b: ---wxj--- params_rate:44100

    [ 1917.384582] tlv320aic3x-codec 3-001b: ---wxj---snd_soc_write AIC3X_GPIOB_REG, AIC3X_PLL_PROGA_REG,AIC3X_PLL_PROGA_REG
    [ 1917.396423] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_hw_param(), Set AHCLKRCTL_REG
    [ 1917.405426] tlv320aic3x-codec 3-001b: ---wxj--- aic3x_set_power
    [ 1917.411621] tlv320aic3x-codec 3-001b: ---wxj--- power is truePlug PCM: Hardware PCM card 0 'AM335X EVM' device 0 subdevice 0
    Its setup
    [ 1917.458404] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_mcasp_trigger() data:
    [ 1917.466278] davinci-mcasp davinci-mcasp.1: ---wxj---, transmits sound data
    [ 1917.473449] davinci-mcasp davinci-mcasp.1:
    [ 1917.477813] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_mcasp_start()
    [ 1917.485015] davinci-mcasp davinci-mcasp.1: ---wxj--, mcasp_start_rx()
     is:
      stream       : CAPTURE
      access       : RW_INTERLEAVED
      format       : S16_LE
      subformat    : STD
      channels     : 2
      rate         : 44100
      exact rate   : 44100 (44100/1)
      msbits       : 16
      buffer_size  : 32768
      period_size  : 2048
      period_time  : 46439
      tstamp_mode  : NONE
      period_step  : 1
      avail_min    : 2048
      period_event : 0
      start_threshold  : 1
      stop_threshold   : 32768
      silence_threshold: 0
      silence_size : 0
      boundary     : 1073741824
      appl_ptr     : 0
      hw_ptr       : 0
    [ 1927.523956] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_mcasp_trigger() data:
    [ 1927.531890] davinci-mcasp davinci-mcasp.1: ---wxj---, transmits sound data
    [ 1927.539062] davinci-mcasp davinci-mcasp.1:
    [ 1927.543395] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_mcasp_stop()
    [ 1927.550506] davinci-mcasp davinci-mcasp.1: ---wxj--, mcasp_stop_rx()
    [ 1927.558532] tlv320aic3x-codec 3-001b: ---wxj--- aic3x_set_power
    [ 1927.564758] tlv320aic3x-codec 3-001b: ---wxj--- power is false

    播放过程及调试信息:
    [root@me share]# aplay record.wav

    [ 1935.303894] davinci-mcasp davinci-mcasp.1: ---wxj---davinci_mcasp_startup
    Playing WAVE 'record.wav' : Signed 16 bit Little[ 1935.316070] tlv320aic3x-codec 3-001b: ---wxj---sound/soc/codecs/tlv320aic3x.c aic3x_hw_params()
     Endian, Rate 44[ 1935.325500] tlv320aic3x-codec 3-001b: ---wxj--- SNDRV_PCM_FORMAT_S16_LE
    100 Hz, Stereo
    [ 1935.333831] tlv320aic3x-codec 3-001b: ---wxj--- params_rate:44100
    [ 1935.341613] tlv320aic3x-codec 3-001b: ---wxj---snd_soc_write AIC3X_GPIOB_REG, AIC3X_PLL_PROGA_REG,AIC3X_PLL_PROGA_REG
    [ 1935.353363] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_hw_param(), Set _AHCLKXCTL_REG
    [ 1935.362548] tlv320aic3x-codec 3-001b: ---wxj--- aic3x_set_power
    [ 1935.368865] tlv320aic3x-codec 3-001b: ---wxj--- power is true
    [ 1935.410888] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_mcasp_trigger() data:
    [ 1935.418823] davinci-mcasp davinci-mcasp.1: ---wxj---, transmits sound data
    [ 1935.426025] davinci-mcasp davinci-mcasp.1:
    [ 1935.430419] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_mcasp_start()
    [ 1935.437622] davinci-mcasp davinci-mcasp.1: ---wxj--, stream == SNDRV_PCM_STREAM_PLAYBACK
    [ 1935.446105] davinci-mcasp davinci-mcasp.1: ---wxj--,dev->base=fa03c000
    [ 1935.453033] davinci-mcasp davinci-mcasp.1: ---wxj-- flush and enable FIFO
    [ 1935.460235] davinci-mcasp davinci-mcasp.1: ---wxj--, mcasp_start_tx()
    [ 1935.467010] davinci-mcasp davinci-mcasp.1: ---wxj---, mcasp_start_tx(),num_serializer = 16
    [ 1935.475677] davinci-mcasp davinci-mcasp.1: ---wxj---, mcasp_start_tx(),serial_dir[2] = TX_MODE
    [ 1935.484710] davinci-mcasp davinci-mcasp.1: ---wxj---, mcasp_start_tx() wait for TX ready ......
    [ 1935.493865] davinci-mcasp davinci-mcasp.1: ---wxj---, Tx ready cnt=118
    [ 1945.497863] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_mcasp_trigger() data:
    [ 1945.505828] davinci-mcasp davinci-mcasp.1: ---wxj---, transmits sound data
    [ 1945.513031] davinci-mcasp davinci-mcasp.1:
    [ 1945.517425] davinci-mcasp davinci-mcasp.1: ---wxj--, davinci_mcasp_stop()
    [ 1945.524536] davinci-mcasp davinci-mcasp.1: ---wxj--, stream == SNDRV_PCM_STREAM_PLAYBACK
    [ 1945.533020] davinci-mcasp davinci-mcasp.1: ---wxj-- disable FIFO
    [ 1945.539428] davinci-mcasp davinci-mcasp.1: ---wxj--, mcasp_stop_tx()
    [root@me share]# [ 1950.556579] tlv320aic3x-codec 3-001b: ---wxj--- aic3x_set_power
    [ 1950.562774] tlv320aic3x-codec 3-001b: ---wxj--- power is false

    结果,没有声音

  • 我的也是一样不能录音,但可以播放。你现在解决了吗???

  • 和你同病相怜,可以播放,无法录音。

    我是搞软件的额,你好像是做硬件的。

  • 录音的时候可以用这个命令试试 arecord -d 10 -c 2 -t wav -r 8000 -f "Signed 16 bit Little Endian" test.wav ,我在PC上测试非常完美,在嵌入式板子上怎么也无法录音。

  • 没有啊,现在也在愁这个问题呢,我感觉需要对3106驱动文件尽心修改,可alsa音频架构看不懂,看了好久也不晓得应该修改什么地方。

  • 您录音成功了吗?如果录音成功了,那说明设备驱动程序是工作的呀。