请问 am335x aduio 接口连接 耳机 和外置喇叭有什么不同? 代码中如何修改进行耳机和喇叭的切换?谢谢
kooking:
这个主要是和你的audio的codec芯片有关,比如TLV320AIC3x,一般会支持MIC和LINE IN两种输入方式(二选一),这两种输出方式可以通过寄存器配置的。
如果需要在app中对MIC和LINE IN进行切换,需要在内核驱动中增加一个接口,最简单的就是可以通过ioctrl
laughing Zou:
回复 kooking:
Hi Kooking
codec芯片我们用的就是 TLV320AIC3x, AM335X 参考设计不是结的是耳机吗? 我现在没有接耳机直接接了外置的扬声器。原理图如下。代码是否还是按照耳机的模式进行修改呢?分别修改 board-AM335XEVM.C 和 davince-evm.c 呢? 我用的是 I2C1, mcasp0. 谢谢 目前 BCLK,wclk,din,dout,没用检测到信号。
Jian Zhou:
回复 laughing Zou:
我们demo板上AUDIO是接的MCASP1和I2C0,所以你要修改board-AM335XEVM.C
kooking:
回复 Jian Zhou:
修改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 = {…}
laughing Zou:
回复 Jian Zhou:
Hi Jian Zhou
board-am335xevm.c 我已经修改了。 codec 的 驱动我也修改了 davinci-evm.c 我也修改了 ,改成了 mcasp0. 但是有个问题 我们这边把TLV320AIC3104 耳机的输出接到了 外置扬声器上了,而 TLV320AIC3104 中有专门的 扬声器接口,这会有对声音的输出有影响吗?谢谢
Jian Zhou:
回复 laughing Zou:
音频codec的问题建议您去音频社区支持论坛去问一下
Yaoming Qin:
回复 laughing Zou:
功放不一样,耳机和音箱需求的功率不一样,建议你最好按照参考设计的解法,如果推不动音箱,考虑外接功放
laughing Zou:
回复 kooking:
Hi Kooking
我按照你说的做了。CODEC 的耳机输出还是无法检测到信号。 因为之前 am335x 的参考设计用的是 TLV320AIC3106 而我用的 codec 是 TLV320aic3104 ,是不是需要修改 寄存器呢?
kooking:
回复 laughing Zou:
laughing Zou
Hi Kooking
我按照你说的做了。CODEC 的耳机输出还是无法检测到信号。 因为之前 am335x 的参考设计用的是 TLV320AIC3106 而我用的 codec 是 TLV320aic3104 ,是不是需要修改 寄存器呢?
laughing Zou:
回复 kooking:
Hi Kooking
时钟频率是相符合的。 寄存器的修改具体要修改哪里呢?