Snapdragon 平臺具有適用于任何類型的音頻/語音處理系統(tǒng)的所有必要組件。本文著眼于如何使用 Snapdragon 的藍牙無線電芯片來創(chuàng)建完整的藍牙音頻系統(tǒng)。
將 QCA 藍牙/Wi-Fi 模塊與 Snapdragon 配合使用是藍牙用例的完整解決方案。在本文中,我們將提供一些有關音頻路由和 BlueZ 接口的信息,以使 Snapdragon 平臺(在此示例中為 APQ8009 - Snapdragon 200 系列)成為免提設備。在這個平臺中,我們使用帶有 I2S 接口的 WCD9326 作為前端音頻編解碼器。
QCA 模塊具有專用于 APQ 的總線接口,使用此總線和定制的主機控制器接口 (HCI) 驅(qū)動程序,用戶應用程序可以以與以前相同的方式與藍牙接口通信(圖 1)。接口模塊可以使用共享內(nèi)存基礎通信直接訪問低功耗音頻子系統(tǒng) (LPASS)。LPASS 是 Hexagon 數(shù)字信號處理器 (DSP),它為信號處理應用提供了一個平臺。這意味著需要對藍牙流進行的任何處理都可以在作為 Snapdragon 的一部分的 LPASS 中完成。
【圖1 | 與藍牙接口通信的用戶應用程序]
該平臺上的人機交互 (HCI) 接口是一個共享的、基于內(nèi)存的驅(qū)動程序,您可以將它與各種藍牙堆棧一起使用。我們將使用 BlueZ 作為示例。
使用高級音頻分發(fā)配置文件 (A2DP) 接收器和免提配置文件 (HFP),您可以設計出大多數(shù)車載套件中的藍牙揚聲器/HFP 設備。
A2DP 接收器配置文件
讓我們完成啟用此配置文件的步驟:
在 BlueZ 配置中啟用配置文件。
在 DBus 配置中啟用正確的消息。使用 。添加與每個接口相關的 DBus 消息dbus_bus_add_match。
開始偵聽 DBus 以獲取與請求連接相關的消息,并提供代理以使用dbus_connection_pop_message.
media_register_endpoint使用 A2DP的正確 UUID 為A2DP 接收器注冊正確的端點。
等待 DBus 上的設置和選擇配置消息,這將由遠程設備觸發(fā)。SelectConfiguration 之類的消息將通知 SBC 編解碼器的正確設置。
配置編解碼器(如 SBC)后,收聽播放消息。收到 SetConfiguration 消息后,打開線程進行下一步。
BlueZ 堆棧提供指向來自遠程設備的音頻流的文件指針。
打開該流,讀取數(shù)據(jù)包,對其進行解碼,然后將它們發(fā)送到輸出音頻設備。
在這個級別,LPASS 就位,音頻流將由 DSP 處理。使用 Hexagon DSP 及其軟件開發(fā)套件 (SDK),您可以在將其傳遞到 APQ 之前進行任何自定義音頻處理。例如,您可以將低復雜度子帶編碼 (SBC) 解碼留給 DSP 和/或?qū)σ纛l流進行一些過濾。高級操作系統(tǒng) (HLOS) 上的音頻接口是標準的。例如,在 Linux/Android 上,高級 Linux 聲音架構(gòu) (ALSA) 是音頻層。在 ALSA 端使用混音器命令,您可以控制音頻路由,這為 HLOS 端提供了靈活性。
音頻路由
要設置揚聲器路由,請應用混音器命令來設置 CODEC。
cset “name=‘MI2S_RX Channels’ 1”
cset “name=‘SLIM RX0 MUX’ 1”
cset “name=‘RX INT7_1 MIX1 INP0’ 5”
cset “name=‘COMP7 Switch’ 1”
cset “name=‘SpkrLeft COMP Switch’ 1”
cset “name=‘SpkrLeft BOOST Switch’ 1”
cset “name=‘SpkrLeft SWR DAC_Port Switch’ 1”
cset “name=‘PRI_MI2S_RX Audio Mixer MultiMedia2’ 1”
現(xiàn)在,使用任何將音頻流發(fā)送到 MultiMedia2 的播放應用程序?qū)⒁纛l流從 DSP 路由到揚聲器。
免提配置文件
由于 BlueZ 堆棧支持 HFP,我們可以輕松設置對 HFP 的支持,如下所示
設置 BlueZ 配置以支持 HFP。
設置 DBus 配置以獲取 HFP 消息。
使用適當?shù)脑O置設置語音的 HCI。
hciconfig hci0 類 4C0100
聽取配對請求并提供適當?shù)拇韥硗瓿膳鋵Α?/p>
啟用同步面向連接 (SCO) 連接。
等待 BlueZ 堆棧提供 RFCOMM 和 SCO 套接字。
當 SCO 連接建立后,LPASS 將擁有來自藍牙接口模塊的 TX 和 RX 音頻流。
現(xiàn)在 LPASS(Hexagon DSP)就位。音頻流將通過 DSP 并傳遞到 APQ。使用 DSP 上的現(xiàn)有模塊,您可以輕松地為 HFP 案例設置回聲消除系統(tǒng)。此外,現(xiàn)有的模塊可用于噪聲消除或抑制。
音頻路由
amixer cset name=‘MI2S_RX Channels’ ‘Two’
amixer cset name=‘SLIM RX0 MUX’ ‘AIF1_PB’
amixer cset name=‘SLIM RX1 MUX’ ‘AIF1_PB’
amixer cset name=‘RX INT7_1 MIX1 INP0’ ‘RX0’
amixer cset name=‘RX INT8_1 MIX1 INP0’ ‘RX1’
amixer cset name=‘COMP7 Switch’ 1
amixer cset name=‘COMP8 Switch’ 1
amixer cset name=‘SpkrLeft COMP Switch’ 1
amixer cset name=‘SpkrLeft BOOST Switch’ 1
amixer cset name=‘SpkrLeft VISENSE Switch’ 1
amixer cset name=‘SpkrLeft SWR DAC_Port Switch’ 1
amixer cset name=‘RX7 Digital Volume’ 90
amixer cset name=‘RX8 Digital Volume’ 90
amixer cset name=‘AIF1_CAP Mixer SLIM TX6’ 1
amixer cset name=‘MI2S_TX Channels’ 0
amixer cset name=‘SLIM TX6 MUX’ 2
amixer cset name=‘ADC MUX6’ 0
amixer cset name=‘DMIC MUX6’ 1
amixer cset name=‘IIR0 INP0 MUX’ 7
amixer cset name=‘PRI_MI2S_RX Port Mixer INTERNAL_BT_SCO_TX’ 1
amixer cset name=‘HFP_INT_UL_HL Switch’ 1
amixer cset name=‘INTERNAL_BT_SCO_RX Audio Mixer MultiMedia6’ 1
amixer cset name=‘MultiMedia6 Mixer QUAT_MI2S_TX’ 1
aplay -D hw:0,5 -P &
arec -D hw:0,17 -P -R 8000 -C 1 &
aplay -D hw:0,18 -P &
arec -D hw:0,18 -P -R 8000 -C 1 &
使用此環(huán)回,音頻流來自藍牙,被路由到揚聲器和來自麥克風的音頻流,并被路由到藍牙。
在所有這些情況下,您需要做的是在 RX 或 TX 音頻路徑中設置拓撲(音頻/語音處理模塊的組合),并在拓撲中定義它。然后,在需要時將該拓撲 ID 加載/發(fā)送到 DSP。
審核編輯:郭婷
-
dsp
+關注
關注
556文章
8158瀏覽量
357830 -
揚聲器
+關注
關注
29文章
1341瀏覽量
64178
發(fā)布評論請先 登錄
曠世之聲全新無損藍牙發(fā)射器支持驍龍暢聽技術
CYW20721 是否支持 HFP、HSP 和 A2DP 配置文件?
高通展示驍龍數(shù)字底盤產(chǎn)品組合的最新成果
CYBT-343026 a2dp sink音頻音量總是忽大忽小,為什么?
請問刪除“wiced_voice_path.a”并繼續(xù)開發(fā) HFP 和 A2DP 功能可以接受嗎?
如何才能知道英飛凌Bluetooth?產(chǎn)品支持哪種Bluetooth?配置文件和版本?
高通驍龍正在成為PC出色動力的核心
高通發(fā)布全新驍龍6 Gen 4移動平臺
高通明年驍龍8 Elite 2芯片全數(shù)交由臺積電代工
高通推出驍龍8至尊版

評論