SSI接口技術(shù)及其在音頻處理中的應(yīng)用
隨著嵌入式系統(tǒng)的廣泛應(yīng)用,系統(tǒng)內(nèi)串口通信的需求越來越高,串行數(shù)據(jù)傳輸?shù)膮f(xié)議也多樣化,常用的有SSI、SPI、I2C、UART等。其中,SSI是一種帶有幀同步信號的串行數(shù)據(jù)協(xié)議。微處理器MCF5329中的SSI接口除了能用作一般的串行數(shù)據(jù)傳輸外,由于它帶有的幀同步信號可用作左右聲道數(shù)據(jù)的同步,支持兩種音頻總線接口(I2S和AC97接口),所以它還能用作音頻數(shù)據(jù)的傳輸。
TLV320DAC23是TI公司推出的高性能立體聲高端編解碼芯片,支持多種采樣率和多種音頻格式,并具有功耗低、封裝小的特點(diǎn),廣泛應(yīng)用于便攜式數(shù)字音頻處理系統(tǒng)中。
1 同步串行接口SSI的工作原理
從圖中可看出,SSI模塊由發(fā)送電路、接收電路、串行時鐘和幀同步時鐘產(chǎn)生電路組成。發(fā)送電路和接收電路相互獨(dú)立,但是共用串行時鐘和幀同步時鐘。
1.1 SSI模塊引腳信號描述
SSLCLKIN:SSI時鐘輸入信號。
SSLBCLK:SSI串行比特時鐘。
SSLMCLK:SSI串行主時鐘信號,在SSI主模式下,
該信號也作為過采樣時鐘信號。
SSI_FS:SSI串行幀同步信號。
SSLRXD:SSI串行接收數(shù)據(jù)信號。
SSI_TXD:SSI串行發(fā)送數(shù)據(jù)信號。
1.2 SSI的操作模式
SSI有3種基本同步操作模式:普通模式、網(wǎng)絡(luò)模式和門時鐘模式。
除了上述3種基本模式外,針對音頻上的應(yīng)用,SSI還支持兩種衍生模式——I2S模式和AC97模式,分別用于傳輸I2S和AC97音頻格式數(shù)據(jù)。
1.3 SSI的初始化
初始化SSI模塊的正確順序:
?、谂渲肧SI模塊。涉及的寄存器包括控制寄存器SSI_CR、中斷允許寄存器SSI_IER、發(fā)送配置寄存器SSI_TCR、接收配置寄存器SSI_RCR和時鐘控制寄存器SSI_CCR。
?、茉O(shè)置SSI_CR[SSI_EN]=1允許SSI模塊功能。
?、菰O(shè)置SSI_CR[TE/RE],開始發(fā)送/接收數(shù)據(jù)。
1.4 SSI的工作過程
(1)發(fā)送數(shù)據(jù)
單通道時,數(shù)據(jù)從串行發(fā)送數(shù)據(jù)寄存器SSI_TX0中傳到發(fā)送移位寄存器TXSR中,再通過串行發(fā)送引腳SSI_TXD發(fā)送出去,然后根據(jù)用戶設(shè)置情況決定是否產(chǎn)生發(fā)送中斷。如果發(fā)送緩沖區(qū)TXFIFOO被允許,則SSI_TX0繼續(xù)從TXFIFOO中取數(shù)據(jù),直到TXFIFOO中的數(shù)據(jù)全部被發(fā)送,再通過用戶設(shè)置情況決定是否產(chǎn)生發(fā)送中斷。雙通道時,發(fā)送移位寄存器TXSR交替從SSI_TX0
和SSI_TXl中取出數(shù)據(jù)。
(2)接收數(shù)據(jù)
單通道時,數(shù)據(jù)從串行接收引腳SSI_RXD進(jìn)來,由接收移位寄存器RXSR傳輸給接收數(shù)據(jù)寄存器SSI_RX0,再根據(jù)用戶設(shè)置情況決定是否產(chǎn)生接收中斷。如果接收緩沖區(qū)RXFIFOO被允許,則SSI_RX0將數(shù)據(jù)寫入RXFIFOO,并繼續(xù)從接收移位寄存器中獲取數(shù)據(jù)。雙通道時,接收移位寄存器RXSR交替將數(shù)據(jù)傳輸給SSI_RX0和SSI_RXl。
2 音頻編解碼芯片簡介
TLV320DAC23是TI公司推出的一顆高性能立體聲音頻處理芯片(CODEC芯片),采用了多比特sigma-delta過采樣技術(shù),采樣率可以從8 kHz到96 kHz,傳輸字長可選擇為16位、20位、24位或32位;最大輸出信噪比可達(dá)到100 dB;控制端口可兼容SPI、2-wire等協(xié)議;回放模式下功率為18 mw,省電模式下小于15μW;適用于便攜式的數(shù)字音頻處理。其功能模塊框圖如圖2所示。
2.1 控制接口
MODE:模式選擇引腳。為0時,采用2一wire模式;為1時,采用SPI模式。
SCLK:控制端口串行數(shù)據(jù)時鐘。
SDI:控制端口串行數(shù)據(jù)輸入。
2.2 模擬接口
模擬接口包括線輸入、線輸出和耳機(jī)輸出。耳機(jī)輸出可以驅(qū)動16Ω或32 Ω的耳機(jī),音量增益為6 dB到一73 dB。
LLINEIN、RLINEIN:左、右聲道輸入。
LOUT、ROUT:左、右聲道輸出。
LHPOUT、RHPOUT:左、右聲道耳機(jī)輸出
2.3 數(shù)字音頻接口
數(shù)字音頻接口用于輸入TLV320DAC23的D/A數(shù)據(jù)。
BCLK:I2S串行比特時鐘。主模式時BCLK為輸出,從模式時BCLK為輸入。
DIN:I2S串行數(shù)據(jù)輸入。
LRCIN:字時鐘信號(幀信號),用于控制左、右聲道的數(shù)據(jù)。在主模式中,由TLV320DAC23產(chǎn)生該信號,在從模式中,由主設(shè)備(如DSP或MCU)產(chǎn)生該信號。
TLV320DAC23支持4種音頻接口模式:右對齊模式、左對齊模式、I2S模式和DSP模式。這4種模式都是最高有效位MSB在前,16到32位不同的字長(右對齊除外,它不支持32位)。圖4是I2S模式下的數(shù)字音頻接口時序,數(shù)據(jù)的MSB在LRCIN下降沿后的第2個BCLK上升沿開始傳輸。[!--empirenews.page--]
2.4 時鐘接口
MCLK:芯片主時鐘信號。當(dāng)TLV320DAC23作為主設(shè)備時,該信號由芯片自身產(chǎn)生;當(dāng)TLV320DAC23作為從設(shè)備時,該信號由外部產(chǎn)生。
CLKOUT:時鐘輸出信號??梢詾镸CLK或MCLK/2。
3 基于MCF5329的音頻驅(qū)動設(shè)計
3.1 硬件電路
TLV320DAC23與MCF5329的接口有兩個:一個是控制接口,用于設(shè)置TLV320DAC23的寄存器,從而設(shè)置它的工作參數(shù)。由于MCF5329具有QSPI模塊,它兼容SPI接口格式,所以TLV320DAC23的控制接口采用SPI模式。另一個是數(shù)字音頻接口,用于傳輸TLV320DAC23的音頻數(shù)據(jù)并控制數(shù)據(jù)的時序。由于MCF5329的SSI模塊支持I2S音頻格式,所以TLV320DAC23的數(shù)字音頻接口采用I2S模式。
在本設(shè)計中,由微控制器MCF5329提供時鐘信號,所以將MCF5329設(shè)為主設(shè)備,TLV320DAC23作為從設(shè)備。具體連接如圖5所示。
3.2 軟件設(shè)計
音頻播放的過程如下:程序檢測到用戶空間有需要播放的音頻數(shù)據(jù),便將音頻數(shù)據(jù)拷貝到所建立的緩沖區(qū)中;然后通過DMA將緩沖區(qū)的音頻數(shù)據(jù)傳輸?shù)絊SI模塊的發(fā)送引腳SSI_TXD,發(fā)送引腳將數(shù)據(jù)發(fā)送至TLV320DAC23中,通過耳機(jī)播放出來。
軟件設(shè)計的流程如圖6所示。其中,音頻緩沖區(qū)被設(shè)置為一個固定大小的循環(huán)隊列,其設(shè)置如圖7所示。初始時,bufstart、audiostart、audiotail都指向緩沖區(qū)頭。當(dāng)用戶空間有數(shù)據(jù)時,將數(shù)據(jù)拷貝到緩沖區(qū)并用audiotail指示數(shù)據(jù)尾部,數(shù)據(jù)的頭部通過DMA引擎連接到SSI_TXD引腳,隨著數(shù)據(jù)被SSI_TXD發(fā)送至TLV320DAC23,audiostart跟蹤數(shù)據(jù)的頭部。
結(jié) 語
本文分析了同步串行接口SSI的工作原理及過程,并通過與編解碼芯片TLV320DAC23的通信詳細(xì)介紹了SSI在音頻處理中的應(yīng)用。實(shí)踐表明,SSI接口簡單,使用靈活可靠。