专栏中心

EEPW首页 > 专栏 > iMX6 音频编解码器 SGTL5000 扩展

iMX6 音频编解码器 SGTL5000 扩展

发布人:toradex 时间:2017-04-19 来源:工程师 发布文章

By Toradex 胡珊逢

1). 简介

嵌入式ARM设备在需要音频解决方案的时候有时候需要通过I2S总线扩展外部Codec或者DSP,本文就基于NXP iMX6 ARM平台演示通过I2S扩展NXP SGTL5000音频Codec。

 

本文所实际使用的演示平台来自于Toradex Apalis iMX6 ARM嵌入式平台,Apalis iMX6 模块上面已经集成了一路SGTL5000扩展的模拟音频接口,同时也提供了多个数字音频接口,这些数字接口可以连接音频编解码器扩展多路音频,也可以将数字音频信号直接传输给 DSP 等其他处理器做进一步处理。

 

2. 准备

a). i.MX6 处理器内部具有三个同步串行接口(synchronous serial interfaces,SSI)。以 Apalis iMX6 模块为例,三个 SSI 和 digital audio multiplexer  (AUDMUX) 相连接。AUDMUX 还有 4 个外部接口,其被引出至 Apalis iMX6 金手指接口上。这些接口相互独立,并具有同样的功能。AUDMUX 可以连接任意一对外部和内部接口。例如 AUD1 <--> AUD3、AUD1 <--> AUD5 或者 AUD2 <--> AUD5 等。

 

其中AUD4 已经用于连接模块上的 SGTL5000,如果用户使用模块集成的模拟音频,那么就无法使用 AUD4 的外部接口。因为 AUD6 并没有引出到金手指接口,所以 Apalis iMX6 能最多支持 3 路音频,包括模块集成的 SGTL5000。

 

b). 使用 I2S 扩展音频编解码器,还需要使用 I2C 接口。DAP1_MCLK 能提供部分编解码器所需的外部时钟信号。DAP1_MCLK  使用 CCM_CLKO1 作为时钟源,这信号也用于模块集成的 SGTL5000。如果需要同时使用外部的音频编解码器和模块集成的 SGTL5000,就需要给外部的音频编解码器提供不同的时钟信号。

 

3). SGTL5000 音频Codec扩展实例

下面以在 Apalis iMX6 上通过AUD5接口外部扩展一路 SGTL5000进行说明。

 

a). SGTL5000 和 Apalis iMX6 引脚连接

AUD5_RXD(MXM-202) -> I2S_DOUT

AUD5_TXFS(MXM-204) -> I2S_LRCLK

AUD5_TXC(MXM-200) -> I2S_SCLK

AUD5_TXD(MXM-196) -> I2S_DIN

I2C3_SDA(MXM-201) -> CTRL_DATA

I2C3_SCL(MXM-203) -> CTRL_CLK

 

b). 修改 device tree文件

./ imx6qdl-apalis.dtsi

------------------------------------------------

sound2 {

compatible = "fsl,imx6q-apalis-sgtl5000",

         "fsl,imx-audio-sgtl5000";

model = "imx6q-external-sgtl5000";

cpu-dai = <&ssi1>;

audio-codec = <&codec_external>;

audio-routing =

"LINE_IN", "Line In Jack",

"MIC_IN", "Mic Jack",

"Mic Jack", "Mic Bias",

"Headphone Jack", "HP_OUT";

mux-int-port = <2>;

mux-ext-port = <5>;

};

 

&ssi2 {

         fsl,mode = "i2s-slave";

         status = "okay";

};

 

pinctrl_audmux: audmuxgrp {

fsl,pins = <

                                     MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0           MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x130b0

         MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0

         MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0

                                      /*AUD5 for external sgtl5000*/             MX6QDL_PAD_DISP0_DAT19__AUD5_RXD  0x130b0          MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS 0x130b0              MX6QDL_PAD_DISP0_DAT16__AUD5_TXC  0x130b0           MX6QDL_PAD_DISP0_DAT17__AUD5_TXD 0x130b0

         >;

         };

 

pinctrl_audmux_mclk: audmux_mclk {

         fsl,pins = <                            MX6QDL_PAD_GPIO_5__CCM_CLKO1       0x000b0                  /* SGTL5000 sys_mclk */

                                     MX6QDL_PAD_GPIO_19__CCM_CLKO1     0x000b0           /* external SGTL5000 sys_mclk   */

         >;

};

------------------------------------------------

 

./ imx6qdl-apalis-eval.dtsi

------------------------------------------------

&i2c3 {

         status = "okay";

codec_external: sgtl5000@0a {

         compatible = "fsl,sgtl5000";

         reg = <0x0a>;

         clocks = <&clks 201>;

         VDDA-supply = <&reg_2p5v>;

         VDDIO-supply = <&reg_3p3v>;

};

------------------------------------------------

 

4). 部署针对Linux 3.14.52内核版本的补丁,用于支持两路SGTL5000音频Codec

如果是只是使用一个外部 SGTL5000,或者直接输出数字音频信号,而不使用模块集成的SGTL5000,那么就无需使用该补丁,正确配置 AUDMUX 即可。如果是需要使用三个SGTL5000,那么需要在补丁中添加第三组配置。

 

sgtl5000_2nd.patch下载地址:

------------------------------------------------

ftp://ftp.toradex.cn

Documents\Application_Note\resource

------------------------------------------------

 

5). 重新编译内核。将新生成的 dtb 和 uImage 重新部署到 Apalis iMX6 上。然后重新启动。

 

6). 使用 apaly 能发现两个声卡设备

------------------------------------------------

aplay -L

 

card 0: imx6qexternalsg [imx6q-external-sgtl5000], device 0: HiFi sgtl5000-0 []

  Subdevices: 1/1

  Subdevice #0: subdevice #0

card 1: imx6qapalissgtl [imx6q-apalis-sgtl5000], device 0: HiFi sgtl5000-0 []

  Subdevices: 1/1

  Subdevice #0: subdevice #0

card 2: imxspdif [imx-spdif], device 0: S/PDIF PCM snd-soc-dummy-dai-0 []

------------------------------------------------

 

4). 总结

以上配置适用于 Linux 3.14.52 内核,即 Toradex 发布的 V2.6 和 V2.6.1 Linux Image。V2.7 Linux Image 使用了新内核 Linux 4.1 ,SGTL5000 的驱动也发生了变化,需要重新调整。另外Toradex Colibri iMX6 和 Apalis iMX6 具有类似的音频控制器,上述方法也应用 Colibri iMX6。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

最新ARM技术和嵌入式技术发展动态 下

视频 2009-10-22

遥控编码电路SC2260

Active Object技术讲解 上

视频 2009-10-22

WinCE+ARM开发及关键技术 下

视频 2009-10-22

意法半导体全新集成STM32WBA6无线微控制器将额外功能和性能与能效相结合

今年智能手机售价预计将上涨约20%

2026-01-06

Diodes公司推出超低VCE(sat) NPN与PNP双极型晶体管

Other World Computing宣布推出ThunderBlade X12升级版,提供最高达192TB的Thunderbolt 5移动式RAID存储

WinCE+ARM开发及关键技术 上

视频 2009-10-22

一种UHF频段RFID读写器的硬件设计与实现

Teledyne Space Imaging宣布推出用于太空的升级筛选传感器

贸泽电子与STMicroelectronics推出全新电子书 分享工业自动化领域的新知和观点

安世半导体芯片出货延迟,本田宣布延长停产时间

2026-01-06

一种基于VCO的电-光转换发射电路的设计

Other World Computing推出8TB OWC Envoy Ultra Thunderbolt 5 SSD

Active Object技术讲解 下

视频 2009-10-22

一种带联动功能的报警控制器

意法半导体推出创新型Teseo VI系列全球导航卫星系统 (GNSS) 接收器芯片,推动汽车及工业应用领域,精准定位技术普及化

遥控编码电路SC2262

高通发布入门级PC芯片死磕英特尔!还剑指万亿机器人赛道

更多 培训课堂
更多 焦点
更多 视频

技术专区