飞凌嵌入式的OKMX8MM-C开发板预留了I2C3和SAI引脚接口,分别位于P18和P7插针引脚上,板载音频芯片挂载到了I2C2和SAI2。今天小编为大家列举并说明如何在I2C3挂载wm8960音频芯片并通过SAI1连接传输音频数据。
设备树和设备树头文件路径如下:
OK8MM-linux-sdk/OK8MM-linux-kernel/arch/arm64/boot/dts/freescale/ok8mm-evk.dts
OK8MM-linux-sdk/OK8MM-linux-kernel/arch/arm64/boot/dts/freescale/fsl-imx8mm.dtsi
1、修改结果
1、打开设备树修改sound节点,驱动从这里获取设备信息。
(1)修改sound节点cpu-dai =<&sai2>,改为cpu-dai= <&sai1> 。
将wm8960挂载到sai1实现音频数据流的收发,同理也可挂载到sai3,修改硬件连接即可。
(2)修改 hp-det-gpios= <&gpio4 22 0 >, 改为 hp-det-gpios= <&gpio4 22 1 >。
默认使用耳机输出,使插拔检测失效。
2、注释I2C2下的wm8960节点,因为在设备树中不能存在一模一样的设备节点,所以要注释掉原来的wm8960节点。
在I2C3下添加wm8960节点,挂载到哪个I2C就把设备节点放到对应I2C下,修改clocks= <&clk IMX8MM_CLK_SAI1_ROOT>,在I2C3下有了设备节点,但是时钟需要改成sai1的。
3、修改pinctrl_sai1并注释pinctrl_sai1_dsd,i.MX8MM的默认设备树已经写好了sai1的pinctrl。
4、修改SAI1节点,如下图所示,复制SAI2节点替换SAI1,修改成SAI1的参数。
2、修改思路
我们在修改音频芯片挂载路径时的思路是这样的:
1. 屏蔽默认的挂载路径;
2. 将音频设备的节点添加到要挂载的I2C和SAI下;
3. 修改pinctrl引脚复用;
4. 屏蔽默认wm8960的引脚配置。
本文介绍的wm8960挂载方式与板载默认音频芯片属于同一型号,如果需要挂载其他型号音频芯片,则需要在sound节点指定驱动路径。
cpu-dai 表示要使用的SAI通道,默认为SAI2本文使用SAI1就修改成SAI1即可; audio-codec 属性就是I2C3下的wm8960节点。
设备树sound节点:
imx-wm8960.c驱动文件的.compatible属性:
3、总结
设备树sound节点下compatible属性对应音频驱动文件imx-wm8960.c里的.compatible,由此设备与驱动便有了联系,驱动就可以在设备节点获取关键字model,cpu-dai等信息。
当换成其他音频芯片时,修改设备树compatible属性值即可修改音频设备的配置也变得简单起来,这也是Linux分离出设备树的主要原因。
本文提供的方法是在屏蔽默认音频设备的前提下进行的,想要实现双路音频输出还需要在其他环节进行配置。以上就是在OKMX8MM-C开发板的I2C3挂载wm8960音频芯片并通过SAI1连接传输音频数据的操作过程,希望能够对屏幕前的各位工程师小伙伴有所帮助。
-
ARM
+关注
关注
134文章
9184浏览量
369725 -
嵌入式
+关注
关注
5096文章
19199浏览量
308281 -
Linux
+关注
关注
87文章
11354浏览量
210657
发布评论请先 登录
相关推荐
KT1025A蓝牙音频芯片歌名歌词ID3显示芯片的功能说明
![KT1025A蓝牙<b class='flag-5'>音频芯片</b>歌名歌词ID<b class='flag-5'>3</b>显示<b class='flag-5'>芯片</b>的功能说明](https://file1.elecfans.com//web3/M00/08/83/wKgZPGexhQCAfKlkAABt9tz3CPY240.png)
音频芯片是什么?常见的音频芯片有哪些?
![<b class='flag-5'>音频芯片</b>是什么?常见的<b class='flag-5'>音频芯片</b>有哪些?](https://file1.elecfans.com/web1/M00/F4/E2/wKgaoWcy_8GAbSxAAAB8d07GxWI945.png)
![](https://file1.elecfans.com/web3/M00/06/6F/wKgZPGeLDumAfaR5AAXBqdJIfDQ789.png)
TLV320AIC3106音频芯片采样数据或者DA转换时能不能不需要CPU的参与?
炬芯科技发布ATS323X系列端侧AI音频芯片
TLV320AIC3106音频芯片怎么发送、接收浮点数呢?
tlv320aic3007音频芯片无法录音是什么原因导致的?怎么解决?
飞凌嵌入式ElfBoard ELF 1板卡-i2c与从设备通讯编程示例之i2c-tools工具使用
如何使用TLV320AIC3268音频芯片的miniDSP?
PA3113D2在系统启动过程中会出现一个POP声,请问是什么原因造成的?
stm32mp135 i2c3无法正常probe怎么解决?
浅析在NXP I.MX6ULL+Linux平台下进行WM8960音频芯片移植的过程
![浅析在NXP <b class='flag-5'>I</b>.MX6ULL+Linux平台下进行<b class='flag-5'>WM8960</b><b class='flag-5'>音频芯片</b>移植的过程](https://file1.elecfans.com/web2/M00/E6/5C/wKgZomZG0FmAK_z5AABMnaWIF4A400.png)
评论