0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【技術干貨】原來ARM+Linux音頻方案如此簡單!

武漢萬象奧科 ? 2022-07-13 11:28 ? 次閱讀

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

我們先認識下I2S(Inter-ICSound)總線。I2S又稱集成電路內置音頻總線,該總線專門用于音頻設備之間的數(shù)據(jù)傳輸,廣泛應用于各種多媒體系統(tǒng)。它采用了沿獨立的導線傳輸時鐘與數(shù)據(jù)信號的設計,通過將數(shù)據(jù)和時鐘信號分離,有效避免因時差誘發(fā)的失真。

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

HDG2L-IoT音頻接口

圖1HDG2L-IoT音頻接口

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

音頻通訊引腳

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

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

ALSA是linux的主流音頻體系結構,它包含內核驅動集合,API庫和工具對Linux聲音進行支持,應用程序只要調用alsa-lib提供的API,即可以完成對底層音頻硬件的控制。

Linux通過alsa庫以及alsa工具管理音頻IC的控件,通過“amixercontrols”列出當前系統(tǒng)內的音頻控制項:

音頻控制項

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

音頻功能的關鍵控件信息

在開發(fā)板下,運行aplay程序可以對音頻播放進行測試。在測試前,需要將耳機插入開發(fā)板的耳機插孔中。

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

5.jpg

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

在進行音頻播放時,對于基于I2S的音頻輸出接口,可以使用amixer程序對音量進行調節(jié)。使用amixer程序對耳機播放音量進行調節(jié)的命令行格式為:

6.jpg

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

7.jpg

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

8.jpg

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

9.jpg

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

10.jpg

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

11.jpg

將“ADCDataOutputSelect”設定為1,其值含義為“LeftData=LeftADC;RightData=LeftADC”。

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

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

控件修改后的寫入操作如下所示。

12.jpg

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

13.jpg
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    8966

    瀏覽量

    365009
  • 嵌入式
    +關注

    關注

    5045

    文章

    18816

    瀏覽量

    298459
  • Linux
    +關注

    關注

    87

    文章

    11123

    瀏覽量

    207895
收藏 人收藏

    評論

    相關推薦

    使用 PREEMPT_RT 在 Ubuntu 中構建實時 Linux 內核

    盟通技術干貨構建實時Linux內核簡介盟通技術干貨Motrotech如果需要在Linux中實現(xiàn)實
    的頭像 發(fā)表于 04-12 08:36 ?1408次閱讀
    使用 PREEMPT_RT 在 Ubuntu 中構建實時 <b class='flag-5'>Linux</b> 內核

    無線麥克風音頻方案

    無線麥克風是音頻傳輸領域的一項重要技術,廣泛應用于演講、表演、會議等場合。而無線麥克風的音頻方案中,無線芯片起著關鍵作用。下面將介紹無線麥克風音頻
    的頭像 發(fā)表于 02-26 15:22 ?600次閱讀

    你見過這樣的音頻轉接器嗎?原來原理這么簡單

    音頻設備的橋梁,正引領著音頻領域邁向新的高度。本文將深入解讀Type-C音頻轉接器的工作原理、特點、應用場景及其未來發(fā)展趨勢。 Type-C音頻轉接器通過其內部先進的轉換電路和信號放
    的頭像 發(fā)表于 02-19 17:07 ?657次閱讀
    你見過這樣的<b class='flag-5'>音頻</b>轉接器嗎?<b class='flag-5'>原來</b>原理這么<b class='flag-5'>簡單</b>

    arm開發(fā)板如何安裝linux系統(tǒng)

    安裝Linux系統(tǒng)到ARM開發(fā)板是一個復雜的過程,涉及到多個步驟和不同的工具。下面是一個詳實且細致的教程,包含了從準備工作到最終啟動Linux系統(tǒng)的所有步驟。 準備工作 在開始之前,需要準備以下
    的頭像 發(fā)表于 01-24 14:19 ?1823次閱讀

    Linux系統(tǒng)CPU占用率100%的排查思路

    今天浩道跟大家分享linux硬核干貨,工作中當你服務器CPU達到100%時,干著急是沒有用的,該查問題還得自己去查。本文將給大家羅列排查異常故障思路,并且文末附上相關shell腳本,去實際一番,你會發(fā)現(xiàn)原來解決問題的方法
    的頭像 發(fā)表于 01-23 10:26 ?5419次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)CPU占用率100%的排查思路

    WT2003H MP3語音芯片方案:強大、靈活且易于集成的音頻解決方案

    在當今的數(shù)字化時代,音頻技術的普遍性已不容忽視。從簡單的音樂播放,到復雜的語音交互,音頻技術的身影無處不在。在這個背景下,WT2003HMP
    的頭像 發(fā)表于 12-02 09:39 ?335次閱讀
    WT2003H MP3語音芯片<b class='flag-5'>方案</b>:強大、靈活且易于集成的<b class='flag-5'>音頻</b>解決<b class='flag-5'>方案</b>

    Linux系統(tǒng)中的FBE實現(xiàn)方案和特點

    的eCryptfs FBE方案,以及眾多基于FUSE的FBE方案。 前面章節(jié)已經(jīng)簡單介紹過基于dm-crypt的FDE方案在ubuntu虛擬機上的驗證情況,這里先
    的頭像 發(fā)表于 11-29 11:23 ?875次閱讀
    <b class='flag-5'>Linux</b>系統(tǒng)中的FBE實現(xiàn)<b class='flag-5'>方案</b>和特點

    基于ARMLinux的智能家居網(wǎng)關設計

    電子發(fā)燒友網(wǎng)站提供《基于ARMLinux的智能家居網(wǎng)關設計.pdf》資料免費下載
    發(fā)表于 10-27 09:39 ?2次下載
    基于<b class='flag-5'>ARM</b>和<b class='flag-5'>Linux</b>的智能家居網(wǎng)關設計

    技術干貨 | 了解3種靜態(tài)電流的規(guī)格

    技術干貨 | 了解3種靜態(tài)電流的規(guī)格
    的頭像 發(fā)表于 10-26 15:56 ?668次閱讀
    <b class='flag-5'>技術</b><b class='flag-5'>干貨</b> | 了解3種靜態(tài)電流的規(guī)格

    ARM-Linux-IIC設備的添加與驅動實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《ARM-Linux-IIC設備的添加與驅動實現(xiàn).pdf》資料免費下載
    發(fā)表于 10-24 09:55 ?0次下載
    <b class='flag-5'>ARM-Linux</b>-IIC設備的添加與驅動實現(xiàn)

    基于ARM的USB無線網(wǎng)卡Linux設備驅動設計

    電子發(fā)燒友網(wǎng)站提供《基于ARM的USB無線網(wǎng)卡Linux設備驅動設計.pdf》資料免費下載
    發(fā)表于 10-12 11:25 ?2次下載
    基于<b class='flag-5'>ARM</b>的USB無線網(wǎng)卡<b class='flag-5'>Linux</b>設備驅動設計

    基于ARM Linux和S3C2440的嵌入式Linux內核設計

    電子發(fā)燒友網(wǎng)站提供《基于ARM Linux和S3C2440的嵌入式Linux內核設計.pdf》資料免費下載
    發(fā)表于 10-12 10:37 ?2次下載
    基于<b class='flag-5'>ARM</b> <b class='flag-5'>Linux</b>和S3C2440的嵌入式<b class='flag-5'>Linux</b>內核設計

    基于ARMLinux系統(tǒng)移植

    電子發(fā)燒友網(wǎng)站提供《基于ARMLinux系統(tǒng)移植.pdf》資料免費下載
    發(fā)表于 10-11 10:57 ?1次下載
    基于<b class='flag-5'>ARM</b>的<b class='flag-5'>Linux</b>系統(tǒng)移植

    基于LinuxARM和單片機的串口通信設計

    電子發(fā)燒友網(wǎng)站提供《基于LinuxARM和單片機的串口通信設計.pdf》資料免費下載
    發(fā)表于 10-11 10:35 ?0次下載
    基于<b class='flag-5'>Linux</b>的<b class='flag-5'>ARM</b>和單片機的串口通信設計

    pcb釘頭產(chǎn)生的原因,原來如此

    pcb釘頭產(chǎn)生的原因,原來如此
    的頭像 發(fā)表于 10-08 09:51 ?1511次閱讀