6416與aic23進行語言資料擷取和處理的程式beta版

來源:互聯網
上載者:User

  本文實現從aic32的line-input獲得音頻資料並在line-output播放,使用McBSP和EDMA來高效的傳輸資料,避免DSP的高負載。

  資料轉送:

  codec與DSP通過McBSP2傳輸資料。EDMA配置為儲存每個到達McBSP2的16位元signed語音採樣資料在記憶體緩衝區內,之後會被處理。處理之後EDMA控制器回送資料到McBSP2進行發送。

  McBSP1設定為配置/控制AIC23。AIC23從McBSP1接收串列配置參數如音量、採樣率和資料格式。

  可以使用乒乓資料緩衝和linked-EDMA傳輸來更方便高效的傳輸資料。單個資料緩衝來接收發送資料很不方便,因為要避免新到達資料覆蓋進行中傳輸的資料。乒乓資料緩衝使用兩個資料緩衝,當乓緩衝正在填滿時,乒緩衝肯定不會被覆蓋,可以對其進行處理。可以使用接收發送各兩個共四個緩衝進行乒乓傳輸。

  在這種情況下,對於每個緩衝,EDMA控制器的配置都要有所不同。當一個緩衝填滿後,EDMA控制器產生一個中斷,中斷處理常式/interrupt-handler必須在下一個音頻採樣資料到達之前為下一個緩衝重新載入配置。EDMA的linked-transfer特性可以輕鬆的做到這一點:每個配置都預先設定,在當前配置結束後EDMA控制器自動載入下一個配置;這樣同樣產生中斷訊號,但它僅用來通知DSP可以處理資料了。唯一的約束條件是,當前緩衝填滿之前所有的音頻資料必須處理結束;這段時間遠遠大於音頻採樣間隔。應用這種方法,系統更容易達到即時處理要求。


  程式說明:

  程式運行過程中,DSP/BIOS首先初始化,main()函數作為主進程啟動。本文中,它主要實現程式初始化並開啟EDMA資料轉送。當main()函數運行結束後,由DSP/BIOS接管,為中斷程式服務。

  當一個緩衝填滿後, edmaHwi()中斷服務子程式/ISR被調用,其中pingOrPong 狀態變數標識此緩衝是乒或乓。dmaHwi把緩衝標記標識為相對的/相反的緩衝,並調用非強制中斷進程processBuffer 處理音頻資料。

  其他程式:blinkLED()當對應的開關按下時以2Hz頻率閃燈,是周期為500ticks的周期進程。load()在另一個對應的開關按下時類比20-25%的虛載荷,是周期10ms的周期進程。

  代碼之後補上

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.