天天看點

《嵌入式Linux軟硬體開發詳解——基于S5PV210處理器》——2.5 WM8960音頻編解碼晶片

本節書摘來異步社群《嵌入式linux軟硬體開發詳解——基于s5pv210處理器》一書中的第2章,第2.5節,作者:劉龍,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

嵌入式linux軟硬體開發詳解——基于s5pv210處理器

smart210開發闆具有音頻信号的輸入輸出功能,通過麥克接口,它可以接收音頻信号輸入;通過一個耳機插孔,可以連接配接音頻信号線輸出音頻資料,音頻信号的處理是通過一片具有iis總線接口的wm8960晶片來完成的。

iis (intel-ic sound)總線一般稱為內建電路内部聲音總線,寫作i2s。iis總線源于sony和philips等公司共同提出的一個串行數字音頻總線協定,許多音頻編解碼器(codec)和微處理器都提供了對iis總線的支援,s5pv210微處理器支援iis總線接口。iis總線隻傳送音頻資料,其他信号(如控制信号)必須另行傳送。

通常iis隻使用3部分串行總線(不同晶片可能會有所不同),3條線分别如下。

資料線:提供分時複用功能,資料線傳送資料時由時鐘信号同步控制,而且以位元組為機關傳送。

字段選擇線:為0或1,表示選擇左聲道或右聲道。

時鐘信号線,能夠産生時鐘信号的裝置稱為主裝置,從裝置引入時鐘信号作為内部時鐘使用。

wm8960是歐勝(wolfson)電子推出的一款低功耗、高品質的音頻編解碼晶片。該晶片内置有麥克風接口、立體聲耳機驅動器、立體聲24比特模數轉換器(adc)和數模轉換器(dac)。它主要應用于便攜式電腦遊戲、dvd播放器、手機多媒體等。wm8960編解碼晶片的特點如下。

數模轉換器(dac)信噪比為98db,采樣率為48khz、電壓為3.3v時總諧波失真為−84db。

模數轉換器(adc)信噪比為95db,采樣率為48khz、電壓為3.3v時總諧波失真為−82db。

它具有噪聲抑制功能。

該晶片具有麥克風接口。

該晶片可程式設計自動電平控制/抑制器和噪聲門限。

該晶片支援3d立體聲增強音效。

該晶片支援立體聲d類揚聲器驅動器。

該晶片每聲道輸出到8歐姆btl揚聲器的功率為1w。

該晶片具有靈活的開關時鐘。

該晶片支援無濾波連接配接。

片上內建耳機驅動器,16歐姆負載和3.3v供電時,輸出功率為40mw。

該晶片支援無電容模式。

該晶片支援低功率消耗。

該晶片支援低電源電壓。

wm8960的引腳分布如圖2-15所示。

《嵌入式Linux軟硬體開發詳解——基于S5PV210處理器》——2.5 WM8960音頻編解碼晶片

wm8960各個引腳功能如表2-9所示。

《嵌入式Linux軟硬體開發詳解——基于S5PV210處理器》——2.5 WM8960音頻編解碼晶片
《嵌入式Linux軟硬體開發詳解——基于S5PV210處理器》——2.5 WM8960音頻編解碼晶片

wm8960與s5pv210硬體連接配接如圖2-16所示。s5pv210具有iis控制單元,通過iis總線接口和i2c總線接口與音頻編解碼晶片wm8960進行互動,其中iis接口傳輸聲音資料,i2c傳輸控制資訊(如音量調節、靜音等),wm8960接收音頻資料完成編解碼功能。

《嵌入式Linux軟硬體開發詳解——基于S5PV210處理器》——2.5 WM8960音頻編解碼晶片

對于聲音信号需要對音頻資料的采集與播放。采集是對模拟聲音信号進行采集、用數字量進行标示,通過adc模數轉換器來完成。播放将以數字量的形式儲存在緩沖區裡面的音頻資料恢複為模拟信号輸出,通過dac數模轉換器來完成。

wm8960同時具備采集和播放所需的adc與dac,錄音的時候,對模拟聲音信号采樣,通過内置adc将模拟信号轉換為數字量,經過iis控制器将轉化為的數字量存放在音頻晶片記憶體中;播放的時候,從音頻晶片記憶體中讀取數字量,經iis控制器将數字量傳輸給wm8960,通過内置dac将數字量轉換為模拟量播放出來。

從圖2-15與表2-9所示可以看出,三個引腳與音頻信号頻率有關。bclk為串行時鐘(也叫位時鐘),每一個時鐘信号傳送一位音頻信号,是以bclk的頻率=聲道數×采樣頻率×采樣位數(采樣頻率即每秒鐘取樣數),如采樣頻率fs為44.1khz,采樣的位數為16位,聲道數兩個(左、右兩個聲道),則bclk的頻率=32fs=1411.2khz。

xxxlrc為幀時鐘,用于切換左、右聲道,如lrc為高電平表示正在傳輸的是左聲道資料,為低電平表示正在傳輸的是右聲道資料,是以xxxlrc的頻率應該正好等于采樣頻率。

mclk為系統時鐘,由于iis控制器隻負責數字音頻信号的傳輸,而要真正實作音頻信号的放與錄還需要額外的處理單元,mclk為晶片提供系統同步時鐘,即編解碼時鐘,主要用于音頻的a/d、d/a采樣,一般mclk為256fs或384fs(fs為采樣頻率)。通過以上分析我們可以發現,采樣頻率fs對頻率的設定至關重要。fs不是任意設定的,一般基于不同的應用場合和聽覺效果,設定不同的值,如8khz、16khz、22.05khz、44.1khz、48khz、96khz等。

在圖 2-16 中,cpu的audio_xi2slrck0連接配接到了daclrc,hp_detect連接配接到了adclrc。adclrc和daclrc分别是輸入輸出的左右聲道時鐘引腳。當采樣的時候,首先将采樣資料傳輸到左聲道緩沖區,然後将下一個采樣資料傳輸到右聲道緩沖區,然後又傳輸到左聲道緩沖區,依次往複;當播放的時候,首先将左聲道資料提取出來播放,然後是右聲道資料,之後又是左聲道資料,依次往複。

audio_xi2ssdo0_0連接配接到了dacdat數模轉換數字音頻信号輸入引腳,audio_xi2ssdi0連接配接到了adcdat引腳。dacdat從記憶體裡面取出的資料經iis控制器傳輸給編解碼晶片,數模轉換後播放。采樣的模拟信号轉換為數字信号之後,從adcdat輸出,經iis控制器傳遞給記憶體。采樣速率及串行的音頻資料的輸入輸出,則由連接配接至mclk與bclk的s5pv210的audio_xi2scdclk0引腳和audio_xi2ssclk0引腳來控制。wm8960的sclk和sdin引腳接至s5pv210的iic總線接口第一個通道,通過s5pv210實作對wm8960的配置。

繼續閱讀