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