Audio驅動開發 之 音訊鏈路學習筆記

2021-07-15 14:03:08 字數 1446 閱讀 4033

【元器件說明】

本文中使用的 codec 晶元為 alc5677。

【音訊鏈路模型】

乙個常見的音訊鏈路如 圖1 所示,包含 音訊輸入、adc、dsp、dac、音訊輸出 5 大部分。

圖1 音訊鏈路模型

【音訊輸入部分】

圖2 實際專案的 dsp 音訊輸入

第 1 部分音訊輸入是 if1_dac_0/1 和 if2_dac_0/1,這是從 i2s 介面傳遞過來的資料,是 cpu 開啟並讀取的音訊檔案資料;第 2 部分音訊輸入是 stereo1_adc_mixer,這是麥克風採集的聲音頻號經過 adc 之後得到的;第 3 部分音訊輸入是 dac1_fs,目前只知道她是音訊輸出前對各路訊號混音後的產物(見圖3),但還不清楚其存在的意義。

mx-a3[14:12] 的作用是決定哪一部分音訊可以進入 dsp 進行處理,每個時刻只允許一路資料進入到 dsp。在這裡,音訊訊號重新被拆分成左、右聲道資料,用 inbound0、inbound1 表示。

【音訊輸出部分】

音訊輸出到揚聲器或耳機前,需要對待輸出的音訊訊號進行混音。在專案中,這些音訊訊號也分為 3 部分。如 圖3 所示(如果圖比較小可以按下 ctrl 鍵同時向前滾動滑鼠滾軸以放大):

圖3 實際專案的音訊輸出

圖4 輸出部分混音後的音訊最終被送入 dac 電路

在 圖3 中我們還可以看到合成了上文提到的 dac1_fs 音訊流。

【實際電路連線】

知道了音訊資料的流向之後,我們再來看看電路板上音訊相關的實際電路連線。我將所有音訊相關的引腳整理成了乙個關係圖。如 圖5 所示(如果圖比較小可以按下 ctrl 鍵同時向前滾動滑鼠滾軸以放大):

圖5 電路連線結構圖

通過這幅結構圖我們可以很清晰地看到:

麥克風音訊輸入通過 mic2p 接入到 codec 晶元;音訊檔案資料輸入通過 i2s_2_*** 接入到 codec 晶元。

耳機音訊輸出通過 lout1p/n 和 lout2p/n 從 codec 晶元引出到耳機功放晶元 max97220,之後連線到耳機喇叭。

揚聲器音訊輸出通過 lout1p/n 和 lout2p/n 從 codec 晶元引出到揚聲器功放晶元 aw8736fcr,之後連線到揚聲器喇叭。

AUDIO驅動點檢表

備註 以下都以mt6753,android 5.1版本為基礎。配置檔案 accdet custom def.h 耳機 模式配置 預設 define accdet mic mode 6 更改為 define accdet mic mode 1 模式 這個是由硬體電路決定的,具體是模式幾能跟硬體確定。耳...

小程式開發之元件audio(音訊)

音訊。注意 1.6.0 版本開始,該元件不再維護。建議使用能力更強的 wx.createinneraudiocontext 介面 例如 效果展示 index.wxml audio音訊 進度暫停 index.wxss audio title audio slider button index.js p...

瞎掰驅動開發

去圖書館淘點書看,發現四層居然有 天書夜讀 從組合語言到windows核心程式設計 這本書,很新很好的一本書,前段時間在噹噹就看到它了,沒想到圖書館也有了,翻了幾番,卻想到很多東西。現在的病毒,pe格式的,主要技術和手段就是執行緒插入 程序守護 埠等等,到了ring0核心態,因為有了驅動在搞鬼,所以...