Standard SDK: [RTL8195] I2S – Ameba I2S Audio Demo

Ameba I2S 簡介

RTL8195AM和RTL8711AM分別擁有2路和1路I2S界面,支持master和slave模式。
I2S特徵:
1. 支持採樣頻率:8/16/24/32/48/96/44.1/88.2 KHz
2. 支持採樣位寬:16/24 bits
3. 集成DMA引擎
4. 支持TX/RX雙向傳輸
5. 支持master/slave模式

I2S Audio demo

此demo使用Ameba作為I2S master,音頻編解碼芯片SGTL5000作為I2S slave。 Ameba通過I2S將數據音頻數據傳送到SGTL5000,SGTL5000通過耳機輸出音頻信號,並設置一個音量調節旋鈕,用於調節耳機音量(可選)。
此demo有兩種獲取數字音頻數據的方式,第一種是通過數組的方式,存放在Ameba的RAM中。第二種是將音頻文件存放在SD卡中,結合Ameba的文件系統和SD卡驅動,從SD卡中播放音頻文件。
Demo所用音頻數據都是CD品質(16bits,44.1KHz)。

材料準備

Demo平台搭建

Teensy音頻擴展板,使用飛思卡爾SGTL5000 codec,支持立體聲耳機輸出與線路輸出,同時也支持立體聲線路輸入以及單通道麥克風輸入。
1

Teensy音頻擴展板官網資料:https://www.pjrc.com/store/teensy3_audio.html

1. Ameba连接SGTL5000

2
SGTL5000擴展板通過7根信號線與Ameba相連。 I2C(SDA和SCL)用來控制和調整SGTL參數。 I2S用於傳輸音頻數據,TX,RX,LRCLK(44.1KHz),BCLK(1.41MHz)和MCLK(11.29MHz), 三個時鐘信號均由Ameba產生。
3

2. Ameba擴展SD卡槽 (optional)

參照下圖連接SD/MMC卡槽到Ameba,可實現Ameba播放存儲在SD卡上的音頻文件(wav格式)。
4

3. Ameba接音量旋鈕 (optional)

可選用一個線性電位計調節耳機輸出音量大小,連接電位計的1端和3端(視電位計本身而定)分別至V3.3和GND,連接2端到Ameba開發板A2。 Ameba通過ADC採集A2端口的電壓信號,轉換為音量信號,以調節codec的耳機輸出音量。
5

開啟Audio Example

如果使用SDK 3.4b,需要先加入patch:3.4b_patch_i2s_audio_demo(v01)
如果需要開啟SD卡功能(僅限RTL8195AM),還需要加入patch:3.4b_patch_sd_storage_(v04)
在platform_opts.h中將Audio Example的設置成1,開啟Audio example。
6

在example_audio.c中設定是否從SD中讀取音頻數據,以及是否開啟音量調節功能,默認都是關閉,即音頻數據存放在RAM中,關閉音量調節功能。

#define CONFIG_PLAY_SD_WAV		0	// 1: play wav audio file store on SD card
                                                // 0: play audio file store on memory
#define CONFIG_TUNE_VOLUME		0	// tune volume by trimmer resistor and ADC

重新build SDK,下載ram_all.bin到Ameba,插入耳機即可以聽到相應的音頻。
如果從RAM中獲取音頻數據,默認的音頻文件為‘鳥叫聲’,所以可以聽到循環的鳥叫聲。
如果選擇從S​​D卡中播放音頻文件(wav格式),需要先將wav格式的音頻文件存放在SD卡中,並更名為AudioSDTest.wav。
如果已開啟音量調節功能,可以左右調節電位器,可以感覺到耳機有明顯的音量變化。