I2S通訊詳解
1,概念:I2S(Inter—IC Sound)匯流排, 又稱 積體電路內建音訊匯流排,是飛利浦公司為數字音訊裝置之間的音訊資料傳輸而制定的一種匯流排標準,該匯流排專責於音訊裝置之間的資料傳輸,廣泛應用於各種多媒體系統。
2,I2S特點
①,支援全雙工和半雙工通訊。
②,支援主/從模式。
3,介面
①,SD:序列資料(對映到 MOSI 引腳),用於傳送或接收兩個時分複用的資料通道上的資料(僅半雙工模式)。
②,WS:字選擇(對映到NSS引腳),即幀時鐘,用於切換左右聲道的資料。WS頻率等於音訊訊號取樣率(fs)。
③,CK:序列時鐘(對映到SCK引腳),即位時鐘,是主模式下的序列時鐘輸出以及從模式下的序列時鐘輸入。位時鐘=取樣率*通道數*位數。
④,I2S2ext_SD和I2S3ext_SD:用於控制I2S全雙工模式的附加引腳(對映到MISO引腳)。
⑤,MCK:即主時鐘輸出,當I2S配置為主模式(並且SPI_I2SPR暫存器中的MCKOE位置1)時,使用此時鐘,該時鐘輸出頻率 256×fs,fs即音訊訊號取樣頻率(fs)。
4,I2S初始化配置
①,i2s的時鐘使能和GPIO口配置
②,配置為i2s模式
③,i2s標準,包括左對齊,右對齊,i2s標準,即資料的最高位總是出現在WS變化(也就是一幀開始)後的第2個CK脈衝處。
④,i2s資料長度,包括16位,16位擴充套件(16位資料以32位包傳送),24位,32位。
⑤,設定i2s時鐘
⑥,設定i2s空閒狀態下時鐘電平
⑦,i2s使能
⑨,設定I2S的取樣率。取樣率一般在8K-192K之間。
5,I2S讀寫資料流程
①,WS時鐘線用於切換左右聲道,在該時鐘的同一週期內的高電平和低電平應傳送相同的資料,然後左右聲道的聲音才會一樣。
②,CK時鐘用於啟動傳輸每一位音訊資料
6,單聲道音訊資料轉雙聲道音訊資料
把單聲道資料轉換成雙聲道資料傳輸時,可作如下資料轉換:
for(res=0;res<DATA_LEN;res++)
{
buf2[res*4]=buf1[res*2];
buf2[res*4+1]=buf1[res*2+1];
buf2[res*4+2]=buf1[res*2];
buf2[res*4+3]=buf1[res*2+1];
}