日韩成人激情_欧美黑人xxx_国产一区二精品区在线_精品在线一区_97成人资源_久久久久久一区

產(chǎn)品分類

當前位置: 首頁 > 工業(yè)電氣產(chǎn)品 > 端子與連接器 > 線路板連接器 > FFC連接器

類型分類:
科普知識
數(shù)據(jù)分類:
FFC連接器

如何在嵌入式系統(tǒng)中高效解碼并播放音頻文件

發(fā)布日期:2022-04-17 點擊率:29

音頻接口日益成為嵌入式設計的期望特性。與此同時,嵌入式系統(tǒng)的用戶對音頻質(zhì)量的要求越來越高。對開發(fā)人員來說,這帶來了如下挑戰(zhàn):如何在基于微控制器的系統(tǒng)中運行 MP3 或其他音頻文件。這些系統(tǒng)不僅受資源限制,而且缺少便于開發(fā)人員在 Linux 系統(tǒng)上使用的音頻接口。因此,解碼音頻文件并高效地將內(nèi)容轉(zhuǎn)換為模擬聲音,就變得更加困難。

開發(fā)人員還必須在硬件或軟件解決方案之間謹慎選擇,并決定使用哪些元器件,這是因為成本、空間和開發(fā)時間都是重要考慮因素。

本文介紹了 AKM Semiconductor、Adafruit、STMicroelectronics 和 Cirrus Logic Inc. 提供的幾種硬件和軟件解決方案,開發(fā)人員可以使用它們來高效地將音頻文件添加到其嵌入式設備中。此外,本文還說明了一些“小技巧”,以幫助確保解決方案成功實施。

選擇嵌入式音頻格式

在深入探討如何將音頻功能集成到嵌入式設備之前,有必要仔細思考為何通常首選 MP3 音頻格式。對于嵌入式系統(tǒng),實際上有三種潛在音頻格式可供開發(fā)人員使用:脈沖編碼調(diào)制 (PCM)、WAV 和 MP3。

PCM 是一種未經(jīng)壓縮的無損音頻格式,常由音頻編解碼器用來將音頻流的數(shù)字表示轉(zhuǎn)換為用戶聽到的模擬聲音。這是一種廣受支持的標準格式,可以追溯到 CD 年代。PCM 可以在嵌入式系統(tǒng)中使用,但問題是 PCM 文件通常比 WAV 或 MP3 文件大得多。在資源受限且錙銖必較的設備中,若要支持這種格式,產(chǎn)品可能需要更大的外部存儲設備或具有更大存儲器的微控制器。因此,除非產(chǎn)品容量低、只有一個音頻文件或成本不受限制,否則通常會避免使用 PCM。

WAV 文件也是未經(jīng)壓縮且無損的,這方面與 PCM 非常相似。WAV 文件在嵌入式應用中往往比 PCM 文件更受歡迎,但它同樣會占用大量空間。如果嵌入式系統(tǒng)已經(jīng)有 SD 卡或其他大容量存儲設備,那么 WAV 文件可能非常適合。

對于大多數(shù)系統(tǒng),MP3 文件是首選音頻格式。MP3 文件是有損的,因此在對音頻進行編碼時,可能會損失一些音頻保真度。但是,MP3 遠小于 PCM 或 WAV,因此將音頻文件放到設備上的傳輸和存儲時間更短,并且其對存儲器的要求也更小。

一旦決定要使用 MP3,開發(fā)人員便可選擇使用硬件或軟件來實現(xiàn)。

基于硬件的 MP3 解碼

最快速、最簡單的解決方案通常是使用硬件 MP3 解碼器,例如 Adafruit 的 1681 VS1053B(圖 1)。VS1053B 可以通過串行流直接接受 MP3、WAV、OGG 或 MIDI 文件格式并進行解碼,開發(fā)人員幾乎不需要花什么精力。對流進行解碼后,VS1053B 利用 18 位數(shù)模轉(zhuǎn)換器 (DAC) 將其轉(zhuǎn)換為音頻。

Adafruit 基于硬件的 VS1053B MP3 解碼器芯片示意圖圖 1:Adafruit 的 VS1053B 是基于硬件的 MP3 解碼器芯片,可接收音頻流并將其解碼為代表性的模擬音頻信號。此解決方案所需的軟件最少,并且不需要開發(fā)人員了解如何解碼或轉(zhuǎn)換 MP3 文件。(圖片來源:Adafruit)

VS1053B 真正有意思的地方是,與許多其他使用 I2C 的解碼器相比,它還能通過簡單的 UART 進行調(diào)試和控制。此外,它有八個通用輸入/輸出引腳,可用于讀取位、設置開關或狀態(tài) LED 之類的應用功能。

對于希望嘗試基于硬件的解決方案的開發(fā)人員,不必為 VS1053B 定制分線板。Adafruit 提供 1381 VS1053B 編解碼器 + MicroSD 分線板。除 VS1053B 外,該板還有一個 MicroSD 卡插槽,可用于存儲音頻文件以進行解碼(圖 2)。分線板可連接到微控制器,后者通過 SPI 或 SDIO 端口連接到 SD 卡以讀出音頻文件。音頻文件流隨后傳送到 VS1053B 進行解碼。然后,可以根據(jù)需要將 VL1053B 的輸出導向耳機插孔或揚聲器等。

Adafruit 的 1381 VS1053B 編解碼器 + MicroSD 分線板的圖片圖 2:Adafruit 的 1381 VS1053B 編解碼器 + MicroSD 分線板包含必要的硬件,可輕松連接微控制器以播放音頻。分線板上有一個板載 MicroSD 卡插槽,微控制器可以通過 SPI 讀取卡內(nèi)容,然后將文件傳輸?shù)?VS1053B 進行解碼。(圖片來源:Adafruit)

基于軟件的 MP3 解碼

一種稍微復雜一點但從物料 (BOM) 角度看成本常常更低的解決方案,是在微控制器上解碼 MP3 文件,然后將解碼后的文件流式傳輸?shù)揭纛l編解碼器以生成音頻。為了實施基于軟件的高效解決方案,開發(fā)人員需要實現(xiàn)若干關鍵組件,例如:

  • MP3 解碼器庫

  • 存儲驅(qū)動程序

  • 文件系統(tǒng)堆棧

  • 直接存儲器訪問 (DMA) 驅(qū)動程序

  • I2S 驅(qū)動程序

  • I2C 驅(qū)動程序

  • 音頻編解碼器驅(qū)動程序

乍看之下,軟件開發(fā)人員似乎有大量工作要做,需要集成許多具有挑戰(zhàn)性的軟件組件以將 MP3 解碼并轉(zhuǎn)換為音頻。實現(xiàn) MP3 解碼解決方案的最佳辦法是利用一個支持音頻編碼、解碼和常規(guī)處理的微控制器平臺。

盡管可以在互聯(lián)網(wǎng)上找到許多開源解決方案,但 STM32 工具鏈是開發(fā)人員可以利用的專業(yè)可靠、久經(jīng)考驗的解決方案。STM32 微控制器系列有一個稱為 STM32CubeMx 的開發(fā)工具,其與 STM32CubeIDE 集成在一起,后者包含音頻示例和開發(fā)庫。這些示例和工具是 STM32CubeMX 附加插件(稱為 X-CUBE-AUDIO)的一部分。該插件為 Arm Cortex-M4 類微控制器中的所有 STM32 處理器提供了用于 MP3 解碼的音頻庫。

具體來說,它有一些代碼項目示例可用于創(chuàng)建能在 STM32F469IGH6TR 微控制器上運行的 MP3 播放器。STM32F469IGH6TR 是一款功能強大的微控制器,具有 1 兆字節(jié) (MB) 的閃存和 384 KB 的 RAM,運行速率為 180 兆赫茲 (MHz)。該微控制器采用 176 引腳 UBGA 封裝,提供了大量 GPIO 和外設特性,支持幾乎所有應用。

STMicroelectro<em></em>nics 的 STM32F469IGH6TR 是一款 180 MHz Arm Cortex-M4 處理器的示意圖圖 3:STM32F469IGH6TR 是一款 180 MHz Arm Cortex-M4 處理器,具有 1 MB 的閃存和 384 KB 的 RAM。176 引腳 UBGA 封裝提供了大量 GPIO,支持幾乎所有嵌入式應用。(圖片來源:STMicroelectronics)

MP3 播放器代碼示例運行在 STM32F469I-DISCO Discovery 套件上(圖 4)。STM32F469I-DISCO 包含 MP3 解碼和播放所需的一切功能。該板有一塊 4 英寸 800 x 480 像素 LCD,用于將當前 MP3 演示狀態(tài)告知開發(fā)人員,另外還提供了播放、停止、下一首、上一首等播放器控件。此外,Discovery 板還含有耳機插孔,能以立體聲方式播放所產(chǎn)生的音頻。關于示例代碼,唯一需要注意的是 MP3 文件須由外部提供,具體來說是由 USB 驅(qū)動大容量存儲設備提供,其通過 micro USB 連接器連接。

STMicroelectro<em></em>nics 的 STM32F469I-DISCO Discovery 套件圖片圖 4:STM32F469I-DISCO Discovery 套件有一個 4 英寸 LCD,用于操作 MP3 播放器演示。音頻文件由外部 USB 大容量存儲設備通過板載 Micro USB 連接器提供。它提供了一個解碼 MP3 文件的實際范例。(圖片來源:STMicroelectronics)

雖然 MP3 解碼庫確實需要 Arm Cortex-M4 或更好的處理器,但事實證明,在開發(fā)板上運行演示代碼是一種很好的方式,不僅可以查看和試驗實際范例,而且還能驗證應用性能。使用串行線調(diào)試 (SWD) 接口和 Arm 內(nèi)核的儀器跟蹤宏單元 (ITM) 功能,可以對程序計數(shù)器執(zhí)行統(tǒng)計分析,確定大約需要多大處理能力來解碼并播放 MP3 文件。結(jié)果是,將近 50% 的 CPU 時間用于更新 LCD 顯示,而 10% 或更少的時間用于 MP3 解碼。STMicroelectronics 的音頻庫非常有效,其使用 DMA 將 I2S 上的解碼幀推送到音頻編解碼器。

如果應用不需要 LCD,僅需要基于其他系統(tǒng)事件來播放音頻,那么可以使用功能較少的處理器。例如,開發(fā)人員可以看看 STM32F469VGT6。STM32F469VGT6 仍然非常強大,具有 1 MB 的閃存和 384 KB 的 RAM,全部位于 100 引腳 LQFP 中。該器件沒有使用 BGA 封裝,該封裝有時可能會讓開發(fā)人員和制造商望而卻步。

STMicroelectro<em></em>nics 的 STM32F469VGT6 180 MHz 處理器(帶 1 MB 閃存)的圖片圖 5:STM32F469VGT6 是一款 180 MHz 處理器,具有 1 MB 的閃存和 384 KB 的 RAM。該器件基于 Arm Cortex-M4 系列,由 STMicroelectronics 音頻庫支持。如圖所示,它采用 100 引腳 LQFP 封裝,這會讓開發(fā)人員和制造商沒那么望而卻步。(圖片來源:STMicroelectronics)

開發(fā)人員選定并試用了他們認為最適合其應用的解決方案之后,就需要決定如何將解碼的 MP3 文件從數(shù)字波形轉(zhuǎn)換為模擬聲音。

利用編解碼器將音頻流轉(zhuǎn)換為聲音

大多數(shù)基于硬件的解碼解決方案還會包括一個數(shù)模轉(zhuǎn)換器 (DAC),用于將接收到的數(shù)字文件格式轉(zhuǎn)換為模擬聲音。但是,這些芯片通常包含 I2S 輸出端口,允許開發(fā)人員添加自己的音頻編解碼器。基于軟件的解決方案肯定需要編解碼器,才能將解碼的數(shù)字流轉(zhuǎn)換為音頻。有兩種方法可以完成此任務。

第一種方法是可以獲取數(shù)字音頻,利用微控制器的板載 DAC 外設生成音頻輸出。一般而言,這不是生成音頻的最佳方法,因為它需要額外的分立元器件以及精心的模擬電路設計和布局,才能獲得高質(zhì)量輸出。此外,微控制器上也需要進行更多設置才能讓 DAC 正常運行,而且一般還需要額外的處理器電源以確保 DAC 獲得適當?shù)墓╇姟?/p>

第二種方法(一般推薦采用這種方法)是使用集成的音頻編解碼器。音頻編解碼器基本上是集成電路,具備所有用于生成模擬輸出的電路,例如 DAC 和 D 類放大器。相比于分立解決方案,音頻編解碼器的優(yōu)勢在于占用的電路板空間非常小,而且還能內(nèi)置數(shù)字電路來控制音頻輸出流。

舉例來說,Cirrus Logic 的 CS43L22-CNZ DAC 為開發(fā)人員提供了廣泛的功能,例如:

  • 通過 I2C 總線執(zhí)行 DAC 控制

  • 多路輸出,例如耳機和揚聲器

  • 無需外部輸出濾波

  • 數(shù)字信號處理器引擎,用于音量、低音和高音控制

  • 滴答和噼啪噪聲抑制

CS43L22-CNZ 通過 I2S 接口從微控制器接收 PCM 編碼的數(shù)據(jù)流,然后使用其內(nèi)部 DAC 進行轉(zhuǎn)換(圖 6)。CS43L22-CNZ DAC 可以驅(qū)動多路輸出,例如揚聲器或耳機。如果使用單個單聲道,CS43L22-CNZ 可以向揚聲器輸出 2 W 功率;如果使用立體聲聲道,則每個聲道最多為 1 W。

Cirrus Logic 的 CS43L22-CNZ DAC 音頻 DAC 示意圖圖 6:CS43L22-CNZ DAC 是一種音頻 DAC,可通過單聲道輸出最高 2 W 的功率,或以立體聲音頻輸出每通道 1 W 的功率。該 DAC 具有一個數(shù)字信號處理引擎,可輕松控制音量、低音和高音。(圖片來源:Cirrus Logic)

一些開發(fā)人員可能不需要 CS43L22-CNZ 的全部功能,可以通過精簡來節(jié)省一些 BOM 成本。

當然,這取決于應用的要求,但這種方法有一個很好的例子,那就是 AKM 的 AK4637EN 音頻編解碼器(圖 7)。這是一款 24 位單聲道編解碼器,其輸出 DAC 僅用于揚聲器。該編解碼器還有一個麥克風放大器,如果應用需要,它也可以用來錄制音頻。

AKM Semico<em></em>nductor 采用 20 引腳 QFN 小型封裝的 AK4637EN 音頻 DAC 的示意圖(點擊放大)圖 7:AK4637EN 是采用 20 引腳 QFN 小型封裝的音頻 DAC,可輸出最高 1 W 的單聲道音頻。該編解碼器可通過 I2C 總線以數(shù)字方式進行控制,以管理輸出音量和自動輸出控制。(圖片來源:AKM Semiconductor)

同大多數(shù)音頻編解碼器一樣,AK4637EN 也有 I2S 接口,用以接收來自微控制器的數(shù)字音頻信號。此外,該芯片還有 I2C 接口,用于控制板載數(shù)字特性,例如音量控制。

與任何產(chǎn)品功能一樣,開發(fā)人員需要花時間仔細檢查其對系統(tǒng)的要求,并在編解碼器特性和成本與目標 BOM 成本之間取得平衡。

實現(xiàn) MP3 解決方案的技巧與訣竅

開發(fā)人員在為應用選擇適當?shù)慕鉀Q方案時,可以使用以下“小技巧”:

  • 以預期的生產(chǎn)量執(zhí)行 BOM 成本分析比較:一種情況是使用外部 MP3 解碼器,另一種情況是使用功能更強大的、能夠自行運行 MP3 解碼器的微控制器。務必使用悲觀、可達成和樂觀三種生產(chǎn)量數(shù)字來確定更好的決策范圍。

  • 利用支持 I2S 的音頻編解碼器生成輸出音頻。分立解決方案的調(diào)整可能更耗時,而元器件成本可能相當。

  • 使用開發(fā)板對 MP3 軟件庫進行性能分析,以了解解決方案運行所需的最低微控制器特性。

  • 利用 DMA 通道將解碼的 MP3 幀通過 I2S 接口傳輸?shù)揭纛l編解碼器。這將支持使用較為便宜的處理器。

  • 仔細檢查 MP3 軟件庫許可,確保它們可與商業(yè)產(chǎn)品一起使用。除非是芯片供應商提供,否則大多數(shù)開源庫用于商業(yè)產(chǎn)品時都需要付費許可證。

遵循以上提示將有助于確保開發(fā)人員為其嵌入式應用選擇正確的音頻解決方案。

總結(jié)

為嵌入式系統(tǒng)增加音頻功能曾經(jīng)是一項復雜的工作,但是如本文所示,如今的開發(fā)人員有大量解決方案可供選擇:既有專用的外部編解碼器,也有集成的軟件庫。盡管如此,開發(fā)人員仍需要仔細評估應用需求,確定哪種解決路徑最合理。

需要考慮的因素包括:BOM,解決方案的復雜性,開發(fā)和集成的時間與成本,以及解決方案的可擴展性。一旦對照產(chǎn)品批量、目標成本和開發(fā)計劃權(quán)衡上述因素,最合適的解決方案就會變得清晰起來。

下一篇: PLC、DCS、FCS三大控

上一篇: 利用可調(diào)低泄漏 LDO

推薦產(chǎn)品

更多
主站蜘蛛池模板: 中文字幕亚洲一区 | 伊人伊人| 91精品国产91久久久久久丝袜 | 欧美精品影院 | 狠狠做深爱婷婷综合一区 | 91精品国产91久久久久久丝袜 | 成人免费网站www网站高清 | 日韩欧美在线观看视频网站 | 97caoporn国产免费人人 | 看真人视频一级毛片 | 国产高清精品一区二区三区 | 精品毛片在线观看 | 欧美成人免费在线视频 | 国产九九九九 | av毛片| 91黄色片免费看 | 成人免费影院 | 欧美一区二区二区 | 天堂一区| 亚洲国产精品精华素 | 国产精品视频偷伦精品视频 | 成人在线视频免费看 | 亚洲福利一区 | 日本aⅴ中文字幕 | 国产亚洲二区 | 久久国产精品一区 | 成人在线视频免费播放 | 国产一区二区三区久久久久久久久 | 国产精品久久福利 | 99色播| 欧美一二三四成人免费视频 | 一区二区三区视频在线观看 | 成人午夜av | 欧美不卡网站 | 精品九九| 怡红院成人在线视频 | 中文字幕在线三区 | 国产成人一区二区 | 五月天激情电影 | 国产人免费人成免费视频 | 99久久精品国产麻豆演员表 |