uda1341原理及驅動

2021-07-16 07:48:51 字數 2616 閱讀 5732

現在主流的音訊匯流排介面有iis和ac97(audio codec)。

一。iis是由sony和pilips公司共同推出的一套標準。

iis有3--5根物理連線

iisdi:序列資料輸入

iisdo:序列資料輸出

iissclk:為序列資料提供位時鐘。iissclk=聲道數*取樣頻率*採用位數。如:fs=44.1khz   聲道數字2.取樣位數為16.則可以知道 iisclk的具體數值。

iislrck:幀時鐘,用於左右聲道的切換,iislrck為高電平時表示正在傳輸的是左聲道資料,為低時傳輸的是右聲道資料,因此iislrck應正好與取樣頻率相等。(ws)

mclk(也叫cdclk編碼解碼時鐘):由於iis只是負責了數字音訊訊號的傳輸,要實現錄音和放音還需要其他的晶元支援(如uda1341),而cdclk就能為晶元提供同步時鐘訊號。主要用於a/d.d/a時的採用時鐘,一般為256fs或384fs

上面是iis的匯流排控制器結構圖

ipsr是連個5位的預分頻器,其中ipsr_a用於產生ii匯流排的主時鐘,ipsr_b作用於外部音訊晶元的時鐘產生器。

fifo:傳送和接收緩衝區。

sclkg:主iisclk產生器

chnc:通道產生器和狀態機負責產生並控制iisclk和iislrck.

sftr:16位移位暫存器,主要負責對資料串並轉換。

從上面可以看出設定fs的值相當重要。在2440中喲pclk和mllin可以提供iis的時鐘訊號,我們這裡選擇了pclk,經過分頻之後可以得到iisclk,iislrck,cdclk。(預分頻a得到了iisclk和iislrck,預分頻b得到了cdclk)一般a,b分頻因子n是相等的。。而cdclk=pclk/(n+1).這裡涉及到2440時鐘的一些問題,還是先來回憶一下2440中的時鐘結構:

1。在2440中有三種時鐘。

fclk is used by arm920t.(if slow mode fclk = input clock/divider ratio,if normal mode (p, m & s value

fclk =      mpll clock (mpll))

hclk is used for ahb bus, which is used by the arm920t, the memory controller, the interrupt controller, the lcd

controller, the dma and usb host block.

pclk is used for apb bus, which is used by the peripherals such as wdt, iis, i2c, pwm timer, mmc inte***ce,

adc, uart, gpio, rtc and spi

這裡需要設定mpllcon和iispsr的值。假設fs=44.1khz,cdclk=384fs=16.9344mhz,則n=3,mdiv=150,pdiv=5,sdiv=0,iispsr=3<<5 | 3;

關於uda1341:

uda1341支援iis匯流排資料格式,採用位元流轉換技術進行訊號處理,具有可程式設計增益放大器(pga)和數字自動增益控制器(agc)。 uda1341對外提供兩組音訊訊號輸入介面,每組包括左右2個聲道。由於iis匯流排只處理音訊資料,因此uda1341還內建用於傳輸控制訊號的l3總 線介面。l3介面相當於混音器控制介面,可以控制輸入/輸出音訊訊號的低音及音量大小等。

兩組音訊輸入在uda1341內部的處理存在很大的差別:第一組音訊訊號輸入後巾幗乙個0db/6db開關後取樣送入數字混音器;第二組音訊訊號輸入後先 經過可程式設計增益放大器(pga),然後再進行取樣,取樣後的資料在經過自動增益控制器(agc)送入數字混音器。硬體電路選用第二組輸入音訊訊號,這樣可 以通過軟體的方法實現對系統輸入音量大小的調節,顯然,這可以用l3匯流排介面控制agc來實現。

關於l3:

uda1341可以用l3匯流排介面調整pga,agc,vc等,來實現mixer。要通過l3來設定pga等,則需要先寫相應的位址,然後在寫相應的數 據。開發板用gpio口來與l3介面相連:

s3c2410_gpb2 l3mode

s3c2410_gpb3 l3cloc1341_reg_status

s3c2410_gpb4 l3clock

l3位址時序:

首先將l3mode,l3clock置1,等待一段時間,然後重複以下步驟8次(對應與8位位址):將l3clock拉低,置l3data為高或低(對應 與資料位是1還是0),等待一段時間後,拉高l3clock。當8次結束後,將l3mode,l3clock恢復到1。

圖:l3資料時序(寫):

l3mode,l3clock初始值都為1.重複以下步驟8次:

將l3clock拉低,置l3data為高或低 (對應與資料位是1還是0),等待一段時間後,拉高l3clock。當8次結束後,將l3mode,l3clock恢復到1。

圖:l3資料時序(讀):

還不太懂。

l3的操作在uda1341_l3_address(),uda1341_l3_data()中實 現

2440與uda1341相連除了使用iis介面外,還需要使用l3匯流排來實現對聲音的控制控制,同時2440還可以通過l3匯流排來設定uda1341的暫存器,但是在2440中並沒有l3匯流排介面,我們可以使用3個io來模擬l3匯流排。在mini2440上我們可以看到

UDA1341音效卡傳輸基本原理

uda1341連線soc的引腳分為兩類 資料引腳 控制引腳。資料引腳用於音訊碼流的傳輸,控制引腳用於該音效卡晶元控制,比如說音量控制等 如下圖為uda1341的音效卡 其中連線soc的引腳用紅框框了出來 上面那個是資料傳輸引腳 下面的是控制引腳 引腳說明 cdclk uda1341的工作時鐘 i2s...

UDA1341音效卡傳輸基本原理

uda1341連線soc的引腳分為兩類 資料引腳 控制引腳。資料引腳用於音訊碼流的傳輸,控制引腳用於該音效卡晶元控制,比如說音量控制等 如下圖為uda1341的音效卡 其中連線soc的引腳用紅框框了出來 上面那個是資料傳輸引腳 下面的是控制引腳 引腳說明 cdclk uda1341的工作時鐘 i2s...

Linux驅動之Nand Flash原理及硬體操作

nand flash 是乙個儲存晶元 問2 從nand flash晶元手冊可知,要操作nand flash需要先發出命令,怎麼傳入命令。當ale為高電平時傳輸的是位址 當cle為高電平時傳輸的是命令 當ale和cle為低電平時傳輸的是資料 問3 資料線既接到nand flash,也接到nor fla...