基於 NXP i.MXRT1010 的音樂播放器方案

       眾所周知,音樂豐富了人們的日常生活,一個好的音樂播放器有利於提高我們的生活品質。下面就給大家介紹下 i.MXRT1010 的音樂播放器方案,該方案最大的亮點是就是使用了 NXP i.MX RT1010 高性能低功耗跨界 MCU 作為主控,採用 Cortex-M7 內核,以不到一個美金的價格,頻率高達 500 MHz,可以用來音頻的編解碼、預處理及後處理等。NXP i.MXRT1010最大的特點就是“小身材,大能量”。“小身材”是指該器件採用 LQFP80 封裝,特別有利於 PCB 的布線,對整個方案進行優化。“大能量”是說 i.MX RT1010 內置 500MHz 的  CPU內核和較為豐富的外設資源,可以為開發者提供更大的發揮空間。RT1010 的框圖如下:

 

         RT1010 有兩路 I2S/SAI 接口,SAI模塊提供同步音頻接口(synchronous audio interface),支持I2S、AC97、TDM、codec/DSP等全雙工串行接口,支持幀同步。

 

       其中,SAI-1 用於多聲道音頻接口,支持 384 kHz/32 位的 2 聲道音頻輸入或 2 聲道音頻輸出。 SAI-3 可用於立體聲音頻輸入和輸出,最高可達 384 kHz/32 位。此外, SAI-3 能夠直接驅動 MQS 作為低成本音頻輸出。

       RT1010 晶片中具體的 SAI 功能主要有以下 10 點:

  • 支持帶有幀同步的全雙工串行接口,如 I2S、 AC97 和 TDM 接口。
  • 發送器帶有獨立的位時鐘和幀同步,支持 4 條數據線。
  • 接收器帶有獨立的位時鐘和幀同步,支持 4 條數據線。
  • 同步模式,用於在發送器和接收器之間共享位時鐘和幀同步線。
  • 每個數據行可以支持 1 到 32 字的最大幀大小。
  • 字大小可從 8 位到 32 位 進行編程。
  • 每個發送和接收數據線為 異步 32 × 32 位 FIFO。
  • 支持 FIFO 錯誤後自動重啟,無需軟體干預。
  • 支持將 8 位和 16 位數據打包成每個 32 位 FIFO 字(FIFO 打包模式)。
  • 支持將多個數據線 FIFOs 組合成單個數據線 FIFO(FIFO 組合模式)。

 

 

 

      其他有關音頻接口以及 SAI 通道的更多知識可以參考 大大通“小肥雪 PLUS”的博文,鏈接如下:

      i.MX RT 的多通道 SAI 介紹:

 https://www.wpgdadatong.com/blog/detail?BID=B1696

     數字音頻基礎及 i.MX RT 的音頻子系統介紹:

 https://www.wpgdadatong.com/blog/detail?BID=B1165

 

硬體設計說明:

       大聯大世平集團推出基於 NXP i.MXRT1010 的 MCU 評估板,該評估板主要由板載的燒錄 MCU LPC11U35、SPI Flash、USB 接口、Arduino 接口、SWD 接口、耳機插孔、音頻編解碼晶片、晶振、LED 燈以、用戶按鍵等部分組成,評估板功能框圖如下:

 

 

 

原理圖如下所示:

       ① 總體電源圖:

 

      ② LPC11U35 板載調試電路:

      ③ 電源電路圖:

 
      ④ IO 口配置圖:

 

      ⑤ 其他模塊圖:

 

      ⑥ 音頻模塊圖:

 

      ⑦ Arduino接口圖:

 

 

PCB Layout

       ① Top 層:

 

       ② Bottom 層:

 

 

軟體設計說明:

開發環境安裝

      我們使用的是 Keil uVision5(也可使用 NXP 提供的 MCU 開發環境 MCUXpresso),MCUXpresso 下載地址:https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE

軟體 SDK :

     SDK 包下載鏈接:https://mcuxpresso.nxp.com/en/builde

 
      ① 大聯大世平集團可以提供客制化的 API 可以快速上手 ADC、I2C、 SPI、UART、SAI等功能調試。現在用 RT1010 SDK 的 SAI 來進行演示,實現音樂播放,例程的路徑如下圖所示:

 

      ② 程序如下圖所示:

      ③ 引腳配置及初始化:

     



      ④ 將音頻文件轉化成 16 進制後存入 music[g_index] 中:
   


      ⑤ 判斷傳輸是否完成:

      當傳輸完成後,音頻數據將存入 Flash 中,再經過 I2S 將音頻數據傳輸給 Codec解碼並轉換成模擬信號,此時可通過耳機插孔外接一個喇叭播放存入的音樂。

     
      ⑥ 外接喇叭播放音樂效果演示:

 

 

 

  • 場景應用圖

          喇叭   


             
          MP3

 



  • 展示板照片

 

 

  • 技術文檔
          ① 原理圖
          ② 數據手冊
          ③ BOM 表
          ④ 用戶手冊

►場景應用圖

►展示板照片

►方案方塊圖

►核心技術優勢

① Cortex-M7 內核的低成本高處理能力的微控制           ② 128kB 的緊密耦合 SRAM 存儲器實現了僅 20ns 的低延遲響應時           ③ 支持 2 組 SPI 、2 組 I2C 和 2 組 I2S           ④ 支持設定多種波特率的音頻文件           ⑤ 免費提供硬體參考設計、軟體 SDK、API 以及軟硬體技術支持

►方案規格

          ① 兩層 Layout 板,尺寸:92 × 123 mm           ② 供電範圍:7V~3.6V           ③ 工作溫度: 0 ℃ ~ 95 ℃           ④ 支持 SWD 接口           ⑤ EMI:FCC 15B 3M Radiation

技術文檔

類型標題檔案
硬件Datasheet
硬件BOM
操作手冊IMXRT1010 reference manual