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 aduio

Other Parts Discussed in Thread: TLV320AIC3104, TLV320AIC3106, TMP275

请问 am335x aduio 接口连接 耳机 和外置喇叭有什么不同? 代码中如何修改进行耳机和喇叭的切换?谢谢

  • 这个主要是和你的audio的codec芯片有关,比如TLV320AIC3x,一般会支持MIC和LINE IN两种输入方式(二选一),这两种输出方式可以通过寄存器配置的。

    如果需要在app中对MIC和LINE IN进行切换,需要在内核驱动中增加一个接口,最简单的就是可以通过ioctrl

  • Hi Kooking

    codec芯片我们用的就是 TLV320AIC3x, AM335X 参考设计不是结的是耳机吗? 我现在没有接耳机直接接了外置的扬声器。原理图如下。代码是否还是按照耳机的模式进行修改呢?分别修改 board-AM335XEVM.C  和 davince-evm.c 呢? 我用的是 I2C1, mcasp0. 谢谢 目前 BCLK,wclk,din,dout,没用检测到信号。

  • 我们demo板上AUDIO是接的MCASP1和I2C0,所以你要修改board-AM335XEVM.C

  • 修改board-am335xevm.c

    1.配置I2C总线,查aic3x手册

    static struct i2c_board_info am335x_i2c1_boardinfo[]

    2.增加McSAP0参数设备

    static struct snd_platform_data am335x_evm_snd_data0 = { .tx_dma_offset = 0x46000000, /* McASP0*/ .rx_dma_offset = 0x46000000, .op_mode = DAVINCI_MCASP_IIS_MODE, .num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction1), .tdm_slots = 2, .serial_dir = am335x_iis_serializer_direction1, .asp_chan_q = EVENTQ_2, .version = MCASP_VERSION_3, .txnumevt = 1, .rxnumevt = 1, };

    3.增加pinmux设置

    static struct pinmux_config mcasp0_pin_mux[] = {...}

    4.McASP0,AXR0入,AXR1出还是AXR0出,AXR1入

    static u8 am335x_iis_serializer_direction1[]

    5.增加McASP0初始化函数

    static void mcasp0_init(int evm_id, int profile) { /* Configure McASP 0*/ setup_pin_mux(mcasp0_pin_mux); switch (evm_id) { case EVM_SK: am335x_register_mcasp(&am335x_evm_sk_snd_data1, 1); break; default: am335x_register_mcasp(&am335x_evm_snd_data0, 0); }

    6.McASP0初始化设置

    static struct evm_dev_cfg gen_purp_evm_dev_cfg[] = {

    … {i2c1_init, DEV_ON_DGHTR_BRD, (PROFILE_ALL & ~PROFILE_2)},
    //{mcasp1_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_3 | PROFILE_7)},

    {mcasp0_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_3 | PROFILE_7)} … };

    7.剩下的就是aic3x的配置了omap3evm.c

    注意下系统时钟是不是一样static int evm_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params)

    修改配置参数

    static struct snd_soc_dai_link am335x_evm_dai = {...}

  • Hi Jian Zhou

    board-am335xevm.c 我已经修改了。 codec 的 驱动我也修改了 davinci-evm.c 我也修改了 ,改成了 mcasp0. 但是有个问题 我们这边把TLV320AIC3104 耳机的输出接到了 外置扬声器上了,而 TLV320AIC3104 中有专门的 扬声器接口,这会有对声音的输出有影响吗?谢谢 

  • 音频codec的问题建议您去音频社区支持论坛去问一下

  • 功放不一样,耳机和音箱需求的功率不一样,建议你最好按照参考设计的解法,如果推不动音箱,考虑外接功放

  • Hi Kooking

    我按照你说的做了。CODEC 的耳机输出还是无法检测到信号。 因为之前 am335x 的参考设计用的是 TLV320AIC3106  而我用的 codec 是 TLV320aic3104 ,是不是需要修改 寄存器呢?

  • laughing Zou 说:

    Hi Kooking

    我按照你说的做了。CODEC 的耳机输出还是无法检测到信号。 因为之前 am335x 的参考设计用的是 TLV320AIC3106  而我用的 codec 是 TLV320aic3104 ,是不是需要修改 寄存器呢?

    寄存器应该需要修改相对应的型号,还有就是要注意一下时钟频率是不是相符合的,源码好像是sysclk = 12000000;

  • Hi Kooking

    时钟频率是相符合的。 寄存器的修改具体要修改哪里呢?

  •   如果kernel是 TLV320aic3104,对比一下和TLV320AIC3106的寄存器差别就可以,应该差别不会太大,更方便的办法是,直接找厂家要一份TLV320AIC3106的寄存器配置

  • Hi Kooking 

    谢谢你问题已经解决了。但是 外接喇叭声音很小。耳机的话声音很大。 谢谢你了 ,最近打扰你了。

  • 哈哈,搞定就好,最后怎么解决的,可不可以分享一下呢

  • 您好:

      我刚刚开始了解这个音频芯片,请问一下,TLV320AIC3104中的寄存器配置在哪个文件配置的呢?

  • 您好:

      请问寄存器具体修改哪里的啊,麻烦您了,指导下,谢谢。

  •  您好:

     请问一下额,我现在也在调试,请问配置 您的这句I2C总线,查aic3x手册

    static struct i2c_board_info am335x_i2c1_boardinfo[],我查看了3104手册,没有发现
      tsl2550,tmp275这两个配置信息,请问具体在哪里找呢,谢谢额。
     

  •  您好:

     请问一下额,我现在也在调试,请问配置 您的这句I2C总线,查aic3x手册

    static struct i2c_board_info am335x_i2c1_boardinfo[],我查看了3104手册,没有发现
      tsl2550,tmp275这两个配置信息,请问具体在哪里找呢,谢谢额。
     

  • tsl2550,tmp275应该是和音频3104无关的。

    3104的驱动请参考sound/soc/codec/ tlv320aic3x.c