中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. "); //-->

        博客專(zhuān)欄

        EEPW首頁(yè) > 博客 > 【技術(shù)干貨】原來(lái)ARM+Linux音頻方案如此簡(jiǎn)單!

        【技術(shù)干貨】原來(lái)ARM+Linux音頻方案如此簡(jiǎn)單!

        發(fā)布人:武漢萬(wàn)象奧科 時(shí)間:2022-07-13 來(lái)源:工程師 發(fā)布文章

          嵌入式產(chǎn)品開(kāi)發(fā)中經(jīng)常遇到音頻的輸入輸出問(wèn)題,如何為其添加“喇叭”、“麥克風(fēng)”設(shè)備呢?本文將簡(jiǎn)單介紹ARM+Linux產(chǎn)品中的音頻解決方案。

          我們先認(rèn)識(shí)下I2S(Inter-IC Sound)總線(xiàn)。I2S又稱(chēng)集成電路內(nèi)置音頻總線(xiàn),該總線(xiàn)專(zhuān)門(mén)用于音頻設(shè)備之間的數(shù)據(jù)傳輸,廣泛應(yīng)用于各種多媒體系統(tǒng)。它采用了沿獨(dú)立的導(dǎo)線(xiàn)傳輸時(shí)鐘與數(shù)據(jù)信號(hào)的設(shè)計(jì),通過(guò)將數(shù)據(jù)和時(shí)鐘信號(hào)分離,有效避免因時(shí)差誘發(fā)的失真。

          以HDG2L-IoT評(píng)估套件為例,RZ/G2L處理器提供至少一路I2S總線(xiàn),通過(guò)該總線(xiàn)與音頻編解碼芯片(IC型號(hào)WM8960)連接,用于提供高質(zhì)量的錄音播音功能。音頻模塊的硬件部署如下所示。

         

        HDG2L-IoT音頻接口

        圖1  HDG2L-IoT音頻接口

          G2L核心板與WM8960的音頻通訊引腳如下所示:

        音頻通訊引腳


          在Linux系統(tǒng)的音頻編解碼驅(qū)動(dòng)中,通過(guò)I2C通訊接口與音頻IC通訊,把音頻IC內(nèi)的各個(gè)功能寄存器抽象成音頻控件,這樣用戶(hù)即可在User空間內(nèi)直接調(diào)整IC內(nèi)的參數(shù)。I2S音頻引腳,則是數(shù)字信號(hào)發(fā)送、接收的通道。

        播音時(shí),音頻IC接收到數(shù)字信號(hào)后則轉(zhuǎn)換為模擬信號(hào)發(fā)送出去,錄音時(shí),音頻IC把收到的音頻模擬量轉(zhuǎn)換為數(shù)字量,發(fā)送給處理器。

          ALSA是linux的主流音頻體系結(jié)構(gòu),它包含內(nèi)核驅(qū)動(dòng)集合, API 庫(kù)和工具對(duì) Linux 聲音進(jìn)行支持,應(yīng)用程序只要調(diào)用alsa-lib提供的API,即可以完成對(duì)底層音頻硬件的控制。

          Linux通過(guò)alsa庫(kù)以及alsa工具管理音頻IC的控件,通過(guò)“amixer controls”列出當(dāng)前系統(tǒng)內(nèi)的音頻控制項(xiàng): 


        音頻控制項(xiàng)


          音頻功能的關(guān)鍵控件信息如下所示。(錄音通道、播音通道、耳機(jī)音量大小、喇叭音量大?。?。


        音頻功能的關(guān)鍵控件信息


          在開(kāi)發(fā)板下,運(yùn)行aplay程序可以對(duì)音頻播放進(jìn)行測(cè)試。在測(cè)試前,需要將耳機(jī)插入開(kāi)發(fā)板的耳機(jī)插孔中。

        為測(cè)試基于I2S的音頻輸出接口,在命令行下執(zhí)行如下命令:

        5.jpg

          其中2.wav為需要播放的音頻文件,且此處假定2.wav位于/home/root/audios目錄下。

        在進(jìn)行音頻播放時(shí),對(duì)于基于I2S的音頻輸出接口,可以使用amixer程序?qū)σ袅窟M(jìn)行調(diào)節(jié)。使用amixer程序?qū)Χ鷻C(jī)播放音量進(jìn)行調(diào)節(jié)的命令行格式為:

        6.jpg

          其音量值取值范圍在0~127之間,127表明最大音量。例如要將音量設(shè)置為100,可在命令行下執(zhí)行如下命令:

        7.jpg

          將揚(yáng)聲器接入HDG2L-IOT開(kāi)發(fā)板的左右聲道插座中,在播放音頻前可先設(shè)置揚(yáng)聲器播放音量以及總音量,然后播放音頻文件:


        8.jpg


          錄音功能需設(shè)置錄音控件的參數(shù),如下所示。

        9.jpg

          用arecord命令錄音并保存為“/tmp/t.wav”,然后用aplay命令回放進(jìn)行驗(yàn)證。

        10.jpg


          由于當(dāng)前的麥克風(fēng)輸出信號(hào)僅接到了音頻處理的Left端作為輸入,所以播放錄音文件時(shí)僅左聲道有輸出,若希望將麥克風(fēng)輸出信號(hào)同時(shí)記錄在左右聲道可做如下設(shè)置:

        11.jpg

          將“ADC Data Output Select”設(shè)定為1,其值含義為“Left Data = Left ADC;  Right Data = Left ADC”。

          由上可知,音頻編解碼芯片在Linux系統(tǒng)中以控件的形式存在,內(nèi)部的參數(shù)一般只記錄在內(nèi)存中,當(dāng)系統(tǒng)掉電時(shí),修改的參數(shù)就會(huì)消失,所以需要保存和恢復(fù)指令將上次的參數(shù)保存在配置文件中。

          alsa的配置文件為:/var/lib/alsa/asound.state

          控件修改后的寫(xiě)入操作如下所示。

        12.jpg

          控件恢復(fù)參數(shù)的操作如下所示(注:重啟板子后會(huì)自動(dòng)讀取配置文件)。

        13.jpg


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



        關(guān)鍵詞: ARM Linux 嵌入式 音頻

        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉