01
整體概括
最近調(diào)試了一款音頻采集芯片wm8731,包含兩路音頻輸入(ADC)和一路音頻輸出(DAC),音頻芯片與主控芯片通過I2S接口傳輸ADC采集的數(shù)據(jù)和DAC驅(qū)動(dòng)數(shù)據(jù)。
本文簡(jiǎn)要講解一下I2S協(xié)議,該協(xié)議包含ADCRC(ADC采集數(shù)據(jù)的左右聲道指示信號(hào))、DACRC(DAC采集數(shù)據(jù)的左右聲道指示信號(hào))、BCLK(位數(shù)據(jù)對(duì)齊時(shí)鐘)、ADCDAT(ADC輸出數(shù)據(jù))、DACDAT(DAC采集數(shù)據(jù))共五個(gè)信號(hào)。
WM8731通過ADCRC、BCLK、ADCDAT三個(gè)信號(hào)傳輸ADC采集的數(shù)據(jù),DACRC、BCLK、DACDAT三個(gè)信號(hào)傳輸驅(qū)動(dòng)DAC的數(shù)據(jù),ADC和DAC的數(shù)據(jù)通道共用BCLK信號(hào)。ADCDAT和DACDAT均在BCALK的下降沿變化,在BCLK上升沿保持不變。
WM8371的I2S接口包含主機(jī)和從機(jī)兩種模式,兩種模式的區(qū)別在于時(shí)鐘(BCLK)和聲道指示信號(hào)(ADCLRC、DACLRC)由主控芯片還是WM8371提供。
圖1是WM8371的主機(jī)模式,時(shí)鐘和聲道指示信號(hào)均由WM8371提供。
圖1 主機(jī)模式
下圖是WM8731的從機(jī)模式,時(shí)鐘和聲道指示信號(hào)均由WM8371提供,通過配置內(nèi)部寄存器實(shí)現(xiàn)模式選擇,使用FPGA作為主控時(shí),兩種模式均可使用,后續(xù)詳解。
圖2 從機(jī)模式
02
I2S協(xié)議的四種模式
I2S總線根據(jù)ADCDAT和DACDAT的數(shù)據(jù)變化,分為左對(duì)齊,右對(duì)齊,I2S及DSP共四種模式,其實(shí)就是四種數(shù)據(jù)傳輸時(shí)序,推薦使用左對(duì)齊模式或者I2S模式。
2.1左對(duì)齊模式
對(duì)應(yīng)時(shí)序如下所示,ADCDAT在ADCLRC高電平時(shí)傳輸左聲道的數(shù)據(jù),ADCDAT在ADCLRC低電平時(shí)傳輸右聲道數(shù)據(jù),ADCDAT先傳輸高位數(shù)據(jù)。ADCLRC的頻率等于配置的ADC采樣頻率fs。
ADCDAT在BCLK的前n個(gè)時(shí)鐘的下降沿傳輸數(shù)據(jù),n表示ADC采集數(shù)據(jù)的位寬。
圖3 左對(duì)齊模式
注意BCLK的頻率必須大于等于ADC采樣率乘以ADC數(shù)據(jù)位寬乘以2。當(dāng)WM8371作為主機(jī)時(shí),BCLK由WM8371提供,用戶不能設(shè)置其頻率。當(dāng)WM8371作為從機(jī)時(shí),BCLK由用戶提供,必須滿足頻率關(guān)系。
注意BCLK的下降沿與ADCLRC/DACLRC的跳變沿對(duì)齊,而DACDAT/ADCDAT的第一個(gè)數(shù)據(jù)(MSB)在BCLK下降沿開始傳輸,即DACDAT/ADCDAT與ADCLRC/DACLRC左邊對(duì)齊,因此被稱為左對(duì)齊模式。
在實(shí)測(cè)主機(jī)模式時(shí)發(fā)現(xiàn)BCLK的周期可能存在占空比不是百分之五十的情況,在設(shè)計(jì)時(shí)需要注意。
2.2右對(duì)齊模式
因?yàn)锽CLK的頻率滿足大于等于ADCLRC/DACLRC頻率乘以ADC/DAC數(shù)據(jù)位寬乘以2即可,導(dǎo)致BCLK在ADCLRC/DACLRC高電平或低電平時(shí)的時(shí)鐘個(gè)數(shù)可能大于ADC/DAC數(shù)據(jù)位寬,就存在無(wú)效時(shí)鐘。
此時(shí)數(shù)據(jù)起始位與ADCLRC/DACLRC邊沿對(duì)齊,則是左對(duì)齊模式,如果數(shù)據(jù)的結(jié)束位置與ADCLRC/DACLRC邊沿對(duì)齊,則是右對(duì)齊模式,右對(duì)齊模式時(shí)序如下。
圖4 右對(duì)齊模式
DACDAT/ADCDAT依舊在BCLK下降沿先傳輸高位數(shù)據(jù),LSB與ADCLRC/DACLRC邊沿對(duì)齊。
這種模式不好編寫適配多種采樣率的發(fā)送驅(qū)動(dòng),因?yàn)橹鳈C(jī)模式下不同采樣率時(shí)ADCLRC/DACLRC電平對(duì)應(yīng)的BCLK個(gè)數(shù)不同,通用的驅(qū)動(dòng)會(huì)比較麻煩,因此一般不推薦使用這類驅(qū)動(dòng)時(shí)序。該模式不支持32位ADC和DAC數(shù)據(jù)位寬。
2.3I2S模式
I2S模式時(shí)序如下所示,與左對(duì)齊模式類似,但ADCDAT/DACDAT在ADCLRC/DACLRC邊沿后的第一個(gè)BCLK不傳輸數(shù)據(jù),從BCLK的第二個(gè)下降沿傳輸最高位數(shù)據(jù)。
圖5 I2S模式
該模式使用起來(lái)也比較方便,推薦使用。
2.4DSP模式
DSP模式時(shí)序如下圖所示,每次傳輸數(shù)據(jù)LRCLK只持續(xù)一個(gè)BCLK周期,其余時(shí)間保持電平。
LRCLK的下降沿與BCLK的下降沿對(duì)齊,ADCDAT/DACDAT開始傳輸n位左聲道數(shù)據(jù),然后傳輸n位右聲道數(shù)據(jù),ADCDAT/DACDAT在剩余的BCLK周期無(wú)效。
圖6 DSP模式
四種模式下LRCLK和BCLK的頻率都是遵守相同規(guī)則的,且ADCDAT/DACDAT均在BCLK的下降沿傳輸數(shù)據(jù),在BCLK上升沿期間數(shù)據(jù)保持不變。
03
WM8371的時(shí)序參數(shù)
WM8731的ADC和DAC的數(shù)據(jù)位寬始終為24位,但在I2S或左對(duì)齊模式下,數(shù)字音頻數(shù)據(jù)可編程為16位、20位、24或32位。即寄存器編程音頻數(shù)據(jù)位寬為16位時(shí),ADCDAT會(huì)將ADC采集的高16位數(shù)據(jù)輸出,低8位數(shù)據(jù)舍棄。如果寄存器編程音頻數(shù)據(jù)位寬為32位時(shí),ADCDAT會(huì)把ADC采集的24位數(shù)據(jù)作為高位,低八位補(bǔ)零,達(dá)到32位數(shù)據(jù)輸出。
主機(jī)模式下的時(shí)序參數(shù)如下所示,需要重點(diǎn)關(guān)注下圖紅框中的兩個(gè)時(shí)序參數(shù)。
圖7 主機(jī)模式時(shí)序參數(shù)
兩個(gè)時(shí)序參數(shù)如下表所示,DACDAT必須在BCLK上升沿前后至少10ns內(nèi)保持穩(wěn)定。
圖8 時(shí)序參數(shù)
從機(jī)模式的時(shí)鐘信號(hào)和聲道指示信號(hào)都由主控芯片提供,相關(guān)的時(shí)序參數(shù)會(huì)多一些,如下圖所示。
圖9 從機(jī)模式時(shí)序參數(shù)
BCLK的最小周期為50ns,即接口數(shù)據(jù)傳輸?shù)淖畲箢l率為20MHz,另外DACLRC/ADCLRC和DACDAT在BCLK上升沿前后的10ns內(nèi)必須保持不變,WM8731才能穩(wěn)定采集對(duì)應(yīng)信號(hào)的狀態(tài)。
圖10 時(shí)序參數(shù)
本文主要講解I2S時(shí)序,文中圖片均來(lái)自WM8371芯片手冊(cè)
-
時(shí)序
+關(guān)注
關(guān)注
5文章
392瀏覽量
37533 -
I2S
+關(guān)注
關(guān)注
1文章
66瀏覽量
42274 -
wm8731
+關(guān)注
關(guān)注
0文章
2瀏覽量
3385
原文標(biāo)題:詳解I2S時(shí)序
文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
音頻總線I2S協(xié)議:I2S收發(fā)模塊FPGA的仿真設(shè)計(jì)

全面解析I2S、TDM、PCM音頻總線
aic3253的I2S完整的時(shí)序圖及接口協(xié)議如何設(shè)置?



音頻接口I2S實(shí)驗(yàn)
基于FPGA和AD1836的I2S接口設(shè)計(jì)
幾種常見的I2S數(shù)據(jù)格式

基于MM32F5270控制器的I2S音頻播放
I2S、TDM、PCM音頻總線
雅特力AT32 MCU SPI/I2S入門指南

評(píng)論