新聞中心

EEPW首頁 > 電源與新能源 > 設計應用 > 基于DDK的TLV320AIC23型編解碼器的驅動設計

基于DDK的TLV320AIC23型編解碼器的驅動設計

——
作者:范學鋒,吳成柯 時間:2007-01-26 來源:《國外電子元器件》 收藏


1 引言

本文引用地址:http://butianyuan.cn/article/20982.htm

tlv320aic23是ti公司推出的一款高性能立體聲音頻編解碼器,內置耳機輸出放大器,支持mic和line in二選一的輸入方式,輸入和輸出都具有可編程的增益調節(jié)功能。tlv320aic23的模/數轉換器(adc)和數/模轉換器(dac)集成在芯片內部,采用先進的σ-δ過采樣技術,可以在8khz至96khz的采樣率下提供16bit、20bit、24bit和32bit的采樣數據。adc和dac的輸出信噪比分別可達90db和100db。同時,tlv320aic23還具有很低的功耗(回放模式為23mw,節(jié)電模式為15μw)。上述優(yōu)點使得tlv320aic23成為一款非常理想的音頻編解碼器,與ti的dsp系列相配合更是相得益彰。

dsp/bios driver developer’s kit(ddk)是ti為簡化驅動程序開發(fā)為tms320系列dsp及其evm板等提供的驅動程序開發(fā)套件。該套件為tms320系列各種外圍器件提供完整的標準化驅動程序模型,使得驅動程序可以很方便地移植到其他應用中,大大提高驅動程序開發(fā)的效率。ddk是對每種tms320系列dsp都提供的芯片支持庫(clip support library-csl)的補充,csl提供對外圍器件寄存器配置及初始化等的低級控制,ddk完全通過csl對外圍器件進行控制。簡單的說,ddk建立在csl上層,所以用ddk來開發(fā)驅動程序將更為快捷且可移植性更好。

ddk為開發(fā)驅動程序定義了標準模型和一系列的api。為簡化程序設計,標準模型又被分為二個層次,其中高層稱為class driver,低層稱為mini-driver。class driver與器件相對獨立,完成諸如緩沖區(qū)管理和請求同步等功能,同時扮演著與api和mini-driver二者接口的角色。mini-driver完成特定的器件初始化和控制功能,它符合iom(i/o mini-driver)的接口標準。ddk的這種分層結構使得驅動開發(fā)人員僅需了解單一的mini-driver api就可以完成整體外圍器件的驅動設計,而且這一過程比設計整個驅動程序要簡單得多,因為class driver控制了緩沖區(qū)管理和同步等。ddk提供3種class driver,分別為sio/dio、pip/pio和gio,它們都可以和任何mini-driver結合使用。

2 tlv320aic23的驅動設計基礎

ddk的標準模型結構如圖1所示,高層的應用和低層驅動相互沒有直接的關聯,開發(fā)中只需通過class driver控制mini-driver。

下面以dm642 evm板為例,說明基于ddk的tlv320aic23的驅動程序設計方法。

首先,需要使用配置工具建立驅動程序的入口。在dsp/bios config下的cdb文件中,依次選擇input/output→device drivers→user→defined drivers,在這些例程中一般已經添加了udevcodec,如果需要的話,用戶可以自行添加或編輯。右鍵單擊選擇properties選項來編輯其屬性,其屬性應設置如下:

正確配置驅動程序入口后,就要按照需要設置相關的參數,下面具體討論tlv320aic23參數的設置。

tlv320aic23的參數結構體原型如下:

typedef struct

在一般應用中,上述結構體的大多數參數無需更改,需要修改的主要是aic23config,他是tlv320aic23控制寄存器值,需要通過它來控制tlv320aic23的工作模式、輸入輸出選擇、采樣率等重要參數。

除了復位寄存器外,tlv320aic23共有9個控制寄存器,每個寄存器控制字長為9bit,地址位為7bit,共有16bit。地址位為高7位而控制字在低9位。具體如下:

register 0:左聲道輸入音量控制,缺省值為0x0017

register 1:右聲道輸入音量控制,缺省值為0x0017

register 2:左聲道輸入音量控制,缺省值為0x01f9

register 3:右聲道輸入音量控制,缺省值為0x01f9

register 4:模擬音頻通道設置,缺省值為0x0011

register 5:數字音頻通道設置,缺省值為0x0000

register 6:節(jié)電模式控制,缺省值為0x0000

register 7:數字音頻接口格式控制,缺省值為0x0043

register 8:采樣率控制,缺省為48khz,對dm642 evm板,缺省值為0x0002

register 9:數字音頻接口激活開關,缺省值為0x0001

通常情況下需要修改的寄存器包括4號和8號寄存器,即選擇是mic輸入還是由line in輸入和根據需要選擇采樣率。這2個寄存器的詳細配置如下:

4號寄存器配置見表1,其中,d2位insel(input select for adc)是輸入選擇,“0”為line in;“1”為mic。d1位micm(microphone mute)是mic靜音開關,為“1”表示靜音。d0位micb(microphone boost)如設置為“1”將為mic輸入提供20db的增益。

8號寄存器配置見表2,其中,采樣率控制位為d5-d2的sr[3:0]。對于dm642 evm板,設置方式見表3。



可見,需要通過4號寄存器的d2來選擇輸入,同時考慮d1和d0對mic的控制,采樣率的控制通過設置8寄存器的sr[3:0]來實現。

3 tlv320aic23的驅動配置方法

很多初學者在運行dm642 evm的echo或其他音頻例程時,最容易碰到的問題是通過line in輸入時有輸出,而通過mic輸入時沒有輸出,更不要說改變采樣率了,即使參考資料編輯aic23.h和emvdm642_edma_aic23.h修改default參數仍然無法解決。

出現這樣的問題時,首先要了解tlv320aic23的模擬音頻輸入為mic和line in二選一的,其次要知道如何能夠正確配置tlv320aic23的參數使之滿足特定應用的需要。如果仔細分析echo例程和其他音頻例程的話,可以發(fā)現只有在echo例程和中包含了aic23.h和emvdm642_edma_aic23.h 2個頭文件。其實在echo例程中,所包含的這2個頭文件和tlv320aic23的初始化語句實際并未使用。如果屏蔽掉對這2個頭文件的包含以及tlv320aic23的初始化語句,會發(fā)現編譯后仍然能夠正常運行。實際上echo例程中tlv320aic23初始化語句只是提供了對tlv320aic23進行配置的一種方法而并未直接使用,該方法在ddk包的emvdm642部分說明文件中也已提及。

由于在echo例程中初始化驅動程序入口和其他的音頻例程一樣使用了默認參數,而默認參數是通過調用ddk包中的evmdm642_edma_aic23.164庫獲得的,該庫不變則配置也不變,于是就會出現上述問題。

在明確了以上原理后,通過實踐證明,本文提供的以下三種配置方法可以適應各種應用。

方法一

既然默認參數是通過調用evmdem642_edma_aic23.164庫獲得的,那么自然可以通過修改該庫來達到修改參數的目的。ti提供的ddk包中包含了各種庫的源代碼,這使得修改庫文件成為可能。本文用到的庫生成工程是tiddksrcaudioevmdm642目錄下的evmdm642_edma_aic23_64.pjt,只需要打開該工程,修改其中aic23.h及中的默認參數,重新編譯就能生成新的庫文件地這樣,所有的音頻例程都會默認按修改過的參數運行。

這種方法合適tlv320aic23參數配置相對固定的應用場合。配置完全通過調用evmdm642_edma_aic23.164庫初始化時進行,不用在應用工程文件中添加任何附加代碼,使得工程文件更簡潔,可移植性更高。

方法二

自定義符合標準結構evmdm642_edma_aic23_devparams的結構體,例如:

然后將“_my params”作為device params ptr在指定入口指針時替代默認的0x0。這就符合ti推薦的方法,在echo例程中的相關代碼也說明了這種方法。

這種方法能夠適應幾乎任何使用情況,初始化參數自定義非常明確,代碼易讀性較高,但是不建議像echo例程中那樣直接包含默認參數的頭文件,最好參照該頭文件定義自己的結構體。

方法三

通過仔細分析生成evmdm642_edma_aic23.164庫的源代碼,可以發(fā)現對tlv320aic23寄存器的設置是通過aic23_setparams()函數來完成的,在大多數情況下,只要修改寄存器值而不必修改標準結構evmdm642_edma_aic23_devparams結構體中的其他變量,所以可以調用aic23_setparams()函數來完成對tlv320aic23參數的配置。這樣就只需要定義1個符合標準的寄存器數組,將數組名作為參數來調用aic23_setparams()函數就可以達到目的。

這種方法使用靈活,代碼長度很短,含義非常明確,可以用不同參數多次調用,尤其適用于tlv320aic23參數可變的特殊場合。

4 結束語

筆者在實際工作基礎上對tlv320aic23參數配置提出了3種方法,各有特點且都十分實用。在進行基于ddk的tlv320aic23驅動程序設計時,可以根據需要方便地選用。



關鍵詞:

評論


相關推薦

技術專區(qū)

關閉