增強(qiáng)型 eDMA的結(jié)構(gòu)與典型應(yīng)用
3 音頻驅(qū)動(dòng)設(shè)計(jì)
TLV320DAC23與MCF5329之間的音頻數(shù)據(jù)傳輸采用I2S音頻格式,由MCF5329的同步串行接口SSI實(shí)現(xiàn)與TLV320DAC23的數(shù)據(jù)傳輸。MCF5329處理器內(nèi)核與同步串行接口SSI發(fā)送/接收寄存器之間的音頻數(shù)據(jù)傳輸采用eDMA機(jī)制傳輸,由MCF5329中的eDMA模塊實(shí)現(xiàn)。
3.1 硬件連接
TLV320DAC23與MCF5329的接口有兩個(gè):一個(gè)是控制接口,用于設(shè)置TLV320DAC23的寄存器,從而設(shè)置它的工作參數(shù);一個(gè)是數(shù)字音頻接口,用于傳輸TLV320DAC23的音頻數(shù)據(jù)并控制數(shù)據(jù)的時(shí)序。本設(shè)計(jì)采用由MCF5329提供的時(shí)鐘信號(hào),所以將MCF5329設(shè)為主設(shè)備,TLV320DAC23作為從設(shè)備。音頻數(shù)據(jù)采用I2S音頻格式傳輸,控制字通過SPI接口傳輸。具體連接如圖2所示。
3.2 軟件設(shè)計(jì)
(1)設(shè)備的初始化
同步串行接口SSI的初始化包括對(duì)控制寄存器、傳輸配置寄存器和接收配置寄存器、時(shí)鐘配置寄存器、發(fā)送時(shí)隙掩碼寄存器和接收時(shí)隙掩碼寄存器以及中斷允許寄存器的配置。最后設(shè)置中斷源和中斷級(jí)別。
eDMA的初始化包括eDMA與同步串行接口SSI發(fā)送/接收寄存器連接的配置,以及確定eDMA的通道仲裁方式。
具體代碼如下:
TLV320DAC23的初始化主要是通過SPI接口設(shè)置編解碼芯片控制接口相關(guān)的寄存器。初始化設(shè)置為I2S從模式,輸入字長32位,高位先,設(shè)置采樣率8 kHz。設(shè)置完后激活數(shù)字接口。
(2)數(shù)據(jù)的傳輸
完成設(shè)備的初始化后,就要設(shè)置傳輸控制描述符TCD的相關(guān)寄存器以控制eDMA的傳輸。以音頻驅(qū)動(dòng)中的放音過程為例,該過程的音頻數(shù)據(jù)由處理器內(nèi)核傳送到SSI發(fā)送寄存器。音頻數(shù)據(jù)分為左右2個(gè)聲道,所以啟動(dòng)2個(gè)eDMA通道――通道11和通道12――負(fù)責(zé)傳送數(shù)據(jù)。設(shè)置次循環(huán)的大小為4字節(jié),由于是2個(gè)通道傳輸,所以1次次循環(huán)共8字節(jié)。若一次主循環(huán)需要傳完的數(shù)據(jù)為count字節(jié),那么設(shè)置主循環(huán)中包含的次循環(huán)數(shù)為count/8。最后允許通道12的主循環(huán)中斷,并開啟2個(gè)通道,開始傳輸。下面以通道ll為例來說明eDMA的設(shè)置流程(TCD代表通道11):
通道12的設(shè)置基本與通道11相同,只有一點(diǎn)不同,就是在開啟通道12傳輸?shù)耐瑫r(shí)允許通道12的大循環(huán)中斷。音頻驅(qū)動(dòng)中的錄音過程與放音過程eDMA設(shè)置相似,只是音頻數(shù)據(jù)的傳送方向是由SSI接收寄存器傳輸?shù)教幚砥鲀?nèi)核。
設(shè)計(jì)完成后的音頻驅(qū)動(dòng)經(jīng)測(cè)試,在系統(tǒng)任務(wù)繁重的情況下(例如MP3文件解碼并實(shí)時(shí)播放),仍然可以完成正常語音播放,效果良好。
結(jié) 語
本文分析了一種增強(qiáng)型直接內(nèi)存存取eDMA的訪問機(jī)制,并通過實(shí)例闡述了eDMA的典型應(yīng)用。eDMA模塊加快了數(shù)據(jù)傳輸?shù)乃俣?,減少了CPU的干預(yù)。并且它在TCD中設(shè)置了主循環(huán)和次循環(huán)傳輸,從而增強(qiáng)了單次單通道的傳輸數(shù)據(jù)量,也增強(qiáng)了傳輸?shù)撵`活性。
評(píng)論