<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 嵌入式系統(tǒng)中的IIS音頻接口技術(shù)

          嵌入式系統(tǒng)中的IIS音頻接口技術(shù)

          作者: 時間:2009-02-25 來源:網(wǎng)絡(luò) 收藏
          1 總線
          (Integrate Interface of Sound)即集成,在上個世紀(jì)80年代首先被Philips公司用于消費產(chǎn)品的設(shè)備,并在一個稱為LRCLK(Left/Right CLOCK)的信號機(jī)制中經(jīng)過多路轉(zhuǎn)換,將兩路信號合成單一的數(shù)據(jù)隊列。當(dāng)LRCLK為高時,左聲道數(shù)據(jù)被傳輸;LRCLK為低時,右聲道數(shù)據(jù)被傳輸(也可以反過來,高低與左右聲音的對應(yīng)可以自定義)。對于多通道,在同樣的BCLK和LRCLK條件下,并行執(zhí)行幾個數(shù)據(jù)隊列也是可能的。由于、PCM和類似的音頻不能提供寄存器入口,因此需要獨立的控制
          IIS總線一般具有4根信號線,如圖1所示,包括串行數(shù)據(jù)輸入(IISDI)、串行數(shù)據(jù)輸出(IISD0)、左/右聲道選擇(IISLRCK)和串行數(shù)據(jù)時鐘(IISCLK);產(chǎn)生IISLRCK和IISCLK的是主設(shè)備。


          本文引用地址:http://www.ex-cimer.com/article/167062.htm

          2 IIS音頻驅(qū)動實現(xiàn)
          音頻驅(qū)動有3種模式:MDD/PDD模式、Wavedev2模式、UAM模式。它們相同的地方很明顯:接口相同,都是流驅(qū)動,透過流接口與上層的waveapi.dll交互。
          第1種MDD/PDD模式是最早的模式,也是其他驅(qū)動常見的分層模式。如果使用CE提供的MDD(wavem―dd.1ib),會受到一些限制:僅支持一個設(shè)備;一個設(shè)置僅支持一個流;對循環(huán)的支持不大可靠;對流的支持較弱。當(dāng)然,由于提供了源碼,可以自己修改MDD,突破以上這些限制。
          第2種Wavedev2模式,是因為2000年的Smartphone項目產(chǎn)生了新的要求,這些需求需要大改MDD/PDD。比如上面的限制2,根據(jù)CE的開發(fā)歷史,此時waveapi.dll也不支持software mixer,這就是說只能同時允許一個應(yīng)用在播放。所以根據(jù)當(dāng)時情況,CE的多媒體開發(fā)團(tuán)隊設(shè)計了Wavedev2模式。這是一個單體(不分層)的驅(qū)動模式,平臺相關(guān)的模塊都在hwctxt.h和hwetxt.cpp中,此外還加入了midi支持、software mixer支持、S/PDlF接口、gain class接口、forcespeaker接口,等等。因此,開發(fā)Smartphone或者PPC,這個模式是挺適合的。
          第3種UAM模式,即統(tǒng)一音頻模式(Unified AudioModel),在開發(fā)WinCE4.2時,要增加對DirectSound的支持,而且有一些音頻設(shè)備是支持硬件mixer的,對此使用UAM是很好的選擇。
          本測試采用MDD/PDD的驅(qū)動結(jié)構(gòu),下面講述本驅(qū)動的關(guān)鍵點。
          2.1 DMA控制及驅(qū)動
          通俗地講,DMA(直接內(nèi)存存取)不需要CPU干擾也不消耗CPU資源,可以把音頻數(shù)據(jù)自動地從總線搬到IIS總線上;如果音頻平均按采樣頻率44.1 kHz、16位字長、左右2聲道計算,碼流為1.411 Mbps,通常在1~3Mbps,所以采用DMA傳輸十分必要。
          2.2 時鐘配置
          只要位時鐘和采樣時鐘能匹配好,IIS數(shù)據(jù)格式主從一致,DMA配置好,音頻就可以工作了。


          IIS數(shù)據(jù)格式主要分3種:左對齊、右對齊、IIS格式。聲音聽起來“怪怪地”,就是數(shù)據(jù)格式不對。頻率計算方法如表1所列。

          IIS主設(shè)備時鐘頻率可以通過采樣頻率來選擇。IIS主設(shè)備時鐘頻率是由IIS預(yù)分頻器產(chǎn)生的(IIS主設(shè)備時鐘頻率=MCLK/預(yù)分頻器值),因此必須選擇合適的預(yù)分頻器的值和CODECLK的采樣頻率類型(256或者384fs),才能獲得合適的IISLRC采樣頻率(IISLRCK頻率=IIS主設(shè)備時鐘頻率/CODECLK的采樣頻率類型);串行位采樣頻率類型(16/32/48fs)可以通過配置每個通道的串行位數(shù)和CODECLK采樣頻率類型來完成,它們之間的關(guān)系如表2所列。

          如晶振頻率為16.934 4 MHz,通過384分頻為44.1kHz(采樣頻率就是這么來的)。
          位時鐘頻率=采樣頻率×數(shù)據(jù)位×2=44.1 kHz×16×2=1.411 MHz
          對于其他頻率的晶振或是來自于總線的時鐘頻率,就要計算出IISC0N中的分頻系數(shù)了,以最大限度擬合CODECLK。
          2.3 CODEC控制
          目前有SPI、I2C和L3三種總線控制CODEC。L3總線(L3MODE、L3CLOCK、L3DATA)都是由通用的I/O端口來控制的。其中L3接口實際上是一種串行接口,它由3根信號線組成,完成處理器和C0DEC之間的數(shù)據(jù)和控制信號交換。UDAl341TS就是采用L3接口的。
          L3DATA:處理器接口數(shù)據(jù)線。
          L3MODE:處理器接口模式信號線。
          L3CLOCK:處理器接口時鐘信號線。
          三種控制方式中以I2C最為常見。其中I2C又分為寄存器方式和I/O模擬方式兩種,I/O模擬方式的可移植性好,僅I/0模擬方式的I2C驅(qū)動又可分為8位、9位、16位,以及是否帶子地址、是否可以連讀連寫、是否要兼容SCCB總線。
          2.4 音量控制節(jié)點
          使用音量調(diào)節(jié)的地方較多。圖2是音量控制節(jié)點的一般模型。
          ①處的增益由播放器的音量控制功能決定,最大是0dB。也就是說,最多只能還原出原信號強(qiáng)度。
          ②和③處的增益由Coded IC自身控制,WM8731沒有產(chǎn)生增益功能,②處容易引入信號失真,一般置為O dB,codec加大音量時主要在③處提高增益。
          ④、⑤處由功放決定,最大也是O dB,便攜式功放通常是電流型,靠放大電流去推動揚聲器。
          ①+②+③三處的增益和超過O dB時,1 kHz的信號就會產(chǎn)生失真,但是大部分音樂的強(qiáng)度都小于1 kHz測試方波時的強(qiáng)度,所以這三項的和可以比O dB略大,但不能太大,否則會引起信號失真。
          a.應(yīng)用程序通過調(diào)用waveOutSetVolume,與手工在控制面板中調(diào)節(jié)音量等效。
          b.調(diào)節(jié)MediaPlay播放器音量時,通過消息跟蹤可以判斷是否改變了①處的增益,即ARM的DSP數(shù)字輸出增益。
          c.調(diào)節(jié)控制面板里的音量時,會發(fā)現(xiàn)CODEC的功放寄存器值也會改變。猜想是通過IIS總線實現(xiàn)控制相關(guān)寄存器,因為在IoControl消息中沒有發(fā)現(xiàn)通過I2C改寫任何寄存器。
          通過分析調(diào)整音量的方法,有圖2所示的5個節(jié)點可控制,目的是音量最大失真最小:讓①處輸出增益最大的情況下,②處PCM Volume置為0 dB(此處放大最容易引入失真),功放置最大時便能獲得不失真最大音量了;如果想再增大音量只能犧牲失真度了,人耳最多接收10%THD(Total Hamonic Distortion,總諧波失真),此種情況下主要靠調(diào)節(jié)③處的增益。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();