產品分類

      當前位置: 首頁 > 工業(yè)電子產品 > 集成電路(ICs) > 編解碼器

      類型分類:
      科普知識
      數據分類:
      編解碼器

      iMX6音頻編解碼器SGTL5000 擴展

      發(fā)布日期:2022-10-09 點擊率:243

      • 關鍵詞: ARM Linux Audio
      • 摘要:嵌入式ARM設備在需要音頻解決方案的時候有時候需要通過I2S總線擴展外部Codec或者DSP,本文就基于NXP iMX6 ARM平臺演示通過I2S擴展NXP SGTL5000音頻Codec。

      1). 簡介

      嵌入式ARM設備在需要音頻解決方案的時候有時候需要通過I2S總線擴展外部Codec或者DSP,本文就基于NXP iMX6 ARM平臺演示通過I2S擴展NXP SGTL5000音頻Codec。


      本文所實際使用的演示平臺來自于Toradex ApalisiMX6 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 可以連接任意一對外部和內部接口。例如 AUD1AUD3、AUD1AUD5 或者 AUD2AUD5 等。


      其中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", "LineIn Jack",

      "MIC_IN", "MicJack",

      "Mic Jack", "MicBias",

      "Headphone Jack","HP_OUT";

      mux-int-port =;

      mux-ext-port =;

      };


      &ssi2{

              fsl,mode= "i2s-slave";

              status= "okay";

      };


      pinctrl_audmux:audmuxgrp {

      fsl,pins = << p="">

                                          MX6QDL_PAD_DISP0_DAT20__AUD4_TXC  0x130b0           MX6QDL_PAD_DISP0_DAT21__AUD4_TXD  0x130b0

              MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS0x130b0

              MX6QDL_PAD_DISP0_DAT23__AUD4_RXD  0x130b0

                                           /*AUD5 for external sgtl5000*/             MX6QDL_PAD_DISP0_DAT19__AUD5_RXD  0x130b0          MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS0x130b0              MX6QDL_PAD_DISP0_DAT16__AUD5_TXC  0x130b0           MX6QDL_PAD_DISP0_DAT17__AUD5_TXD0x130b0

              >;

              };


      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=;

              clocks= <&clks 201="">;

              VDDA-supply= <?_2p5v>;

              VDDIO-supply= <?_3p3v>;

      };

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


      4). 部署針對Linux 3.14.52內核版本的補丁,用于支持兩路SGTL5000音頻Codec

      如果是只是使用一個外部 SGTL5000,或者直接輸出數字音頻信號,而不使用模塊集成的SGTL5000,那么就無需使用該補丁,正確配置 AUDMUX 即可。如果是需要使用三個SGTL5000,那么需要在補丁中添加第三組配置。


      sgtl5000_2nd.patch下載地址:

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

      ftp://ftp.toradex.cn

      DocumentsApplication_Note esource

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


      5). 重新編譯內核。將新生成的 dtb 和 uImage 重新部署到 Apalis iMX6 上。然后重新啟動。


      6). 使用 apaly 能發(fā)現兩個聲卡設備

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

      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 發(fā)布的 V2.6 和 V2.6.1 Linux Image。V2.7 Linux Image 使用了新內核 Linux 4.1 ,SGTL5000 的驅動也發(fā)生了變化,需要重新調整。另外Toradex Colibri iMX6 和 Apalis iMX6 具有類似的音頻控制器,上述方法也應用 Colibri iMX6。

      下一篇: PLC、DCS、FCS三大控

      上一篇: 索爾維全系列Solef?PV

      推薦產品

      更多
      主站蜘蛛池模板: 国产中文字幕一区| 久久99精品一区二区三区| 日本一区二区三区不卡在线视频| 国产精品福利一区二区| 久久精品成人一区二区三区 | 日韩精品一区二区三区中文字幕 | 中文字幕精品无码一区二区| 中文字幕一区二区区免| 久久4k岛国高清一区二区| 亚洲熟妇成人精品一区| 天天看高清无码一区二区三区| 成人免费av一区二区三区| 国产韩国精品一区二区三区久久| 国产传媒一区二区三区呀| 奇米精品一区二区三区在| 国产乱码一区二区三区四| 一区二区三区福利| 91在线一区二区| 一区二区三区观看| 波多野结衣一区二区| 好吊视频一区二区三区| 97精品一区二区视频在线观看| 国产一区中文字幕| 日韩精品成人一区二区三区| 精品无码国产一区二区三区麻豆| 久久无码一区二区三区少妇| 国产自产对白一区| 成人影片一区免费观看| 亚洲色一区二区三区四区| 农村人乱弄一区二区| 日本免费一区尤物| 久久久av波多野一区二区| 亚洲中文字幕丝袜制服一区 | 亚洲狠狠久久综合一区77777| 成人区人妻精品一区二区三区| 一区二区三区国产| 国产在线一区二区杨幂| 久久精品午夜一区二区福利| 一区五十路在线中出| 色综合视频一区中文字幕| 天堂国产一区二区三区|