Snapdragon 平臺(tái)具有適用于任何類型的音頻/語(yǔ)音處理系統(tǒng)的所有必要組件。本文著眼于如何使用 Snapdragon 的藍(lán)牙無(wú)線電芯片來(lái)創(chuàng)建完整的藍(lán)牙音頻系統(tǒng)。
將 QCA 藍(lán)牙/Wi-Fi 模塊與 Snapdragon 配合使用是藍(lán)牙用例的完整解決方案。在本文中,我們將提供一些有關(guān)音頻路由和 BlueZ 接口的信息,以使 Snapdragon 平臺(tái)(在本示例中為 APQ8009 - Snapdragon 200 系列)成為免提設(shè)備。在這個(gè)平臺(tái)中,我們使用帶有 I2S 接口的 WCD9326 作為前端音頻編解碼器。
QCA 模塊具有專用于 APQ 的總線接口,使用此總線和定制的主機(jī)控制器接口 (HCI) 驅(qū)動(dòng)程序,用戶應(yīng)用程序可以以與以前相同的方式與藍(lán)牙接口通信(圖 1)。接口模塊可以使用共享內(nèi)存基礎(chǔ)通信直接訪問(wèn)低功耗音頻子系統(tǒng) (LPASS)。LPASS 是 Hexagon 數(shù)字信號(hào)處理器 (DSP),它為信號(hào)處理應(yīng)用提供了一個(gè)平臺(tái)。這意味著需要對(duì)藍(lán)牙流進(jìn)行的任何處理都可以在作為 Snapdragon 的一部分的 LPASS 中完成。
【圖1 | 與藍(lán)牙接口通信的用戶應(yīng)用程序]
該平臺(tái)上的人機(jī)交互 (HCI) 接口是一個(gè)共享的、基于內(nèi)存的驅(qū)動(dòng)程序,您可以將它與各種藍(lán)牙堆棧一起使用。我們將使用 BlueZ 作為示例。
使用高級(jí)音頻分發(fā)配置文件 (A2DP) 接收器和免提配置文件 (HFP),您可以設(shè)計(jì)出大多數(shù)車(chē)載套件中的藍(lán)牙揚(yáng)聲器/HFP 設(shè)備。
A2DP 接收器配置文件
讓我們完成啟用此配置文件的步驟:
在 BlueZ 配置中啟用配置文件。
在 DBus 配置中啟用正確的消息。使用 。添加與每個(gè)接口相關(guān)的 DBus 消息dbus_bus_add_match。
開(kāi)始偵聽(tīng) DBus 以獲取與請(qǐng)求連接相關(guān)的消息,并提供代理以使用dbus_connection_pop_message.
media_register_endpoint使用 A2DP的正確 UUID 為A2DP 接收器注冊(cè)正確的端點(diǎn)。
等待 DBus 上的設(shè)置和選擇配置消息,這將由遠(yuǎn)程設(shè)備觸發(fā)。SelectConfiguration 之類的消息將通知 SBC 編解碼器的正確設(shè)置。
配置編解碼器(如 SBC)后,收聽(tīng)播放消息。收到 SetConfiguration 消息后,打開(kāi)線程進(jìn)行下一步。
BlueZ 堆棧提供指向來(lái)自遠(yuǎn)程設(shè)備的音頻流的文件指針。
打開(kāi)該流,讀取數(shù)據(jù)包,對(duì)其進(jìn)行解碼,然后將它們發(fā)送到輸出音頻設(shè)備。
在這個(gè)級(jí)別,LPASS 就位,音頻流將由 DSP 處理。使用 Hexagon DSP 及其軟件開(kāi)發(fā)套件 (SDK),您可以在將其傳遞到 APQ 之前進(jìn)行任何自定義音頻處理。例如,您可以將低復(fù)雜度子帶編碼 (SBC) 解碼留給 DSP 和/或?qū)σ纛l流進(jìn)行一些過(guò)濾。高級(jí)操作系統(tǒng) (HLOS) 上的音頻接口是標(biāo)準(zhǔn)的。例如,在 Linux/Android 上,高級(jí) Linux 聲音架構(gòu) (ALSA) 是音頻層。在 ALSA 端使用混音器命令,您可以控制音頻路由,這為 HLOS 端提供了靈活性。
音頻路由
要設(shè)置揚(yáng)聲器路由,請(qǐng)應(yīng)用混音器命令來(lái)設(shè)置 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 的任何播放應(yīng)用程序?qū)⒁纛l流從 DSP 路由到揚(yáng)聲器。
免提配置文件
由于 BlueZ 堆棧支持 HFP,我們可以輕松設(shè)置對(duì) HFP 的支持,如下所示
設(shè)置 BlueZ 配置以支持 HFP。
設(shè)置 DBus 配置以獲取 HFP 消息。
使用適當(dāng)?shù)脑O(shè)置設(shè)置語(yǔ)音的 HCI。
hciconfig hci0 類 4C0100
聽(tīng)取配對(duì)請(qǐng)求并提供適當(dāng)?shù)拇韥?lái)完成配對(duì)。
啟用同步面向連接 (SCO) 連接。
等待 BlueZ 堆棧提供 RFCOMM 和 SCO 套接字。
當(dāng) SCO 連接建立后,LPASS 將擁有來(lái)自藍(lán)牙接口模塊的 TX 和 RX 音頻流。
現(xiàn)在 LPASS(Hexagon DSP)就位。音頻流將通過(guò) DSP 并傳遞到 APQ。使用 DSP 上的現(xiàn)有模塊,您可以輕松地為 HFP 案例設(shè)置回聲消除系統(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)回,音頻流來(lái)自藍(lán)牙,被路由到揚(yáng)聲器和來(lái)自麥克風(fēng)的音頻流,并被路由到藍(lán)牙。
在所有這些情況下,您需要做的是在 RX 或 TX 音頻路徑中設(shè)置拓?fù)洌ㄒ纛l/語(yǔ)音處理模塊的組合),并在拓?fù)渲卸x它。然后,在需要時(shí)將該拓?fù)?ID 加載/發(fā)送到 DSP。
審核編輯:郭婷
-
芯片
+關(guān)注
關(guān)注
456文章
51019瀏覽量
425394 -
解碼器
+關(guān)注
關(guān)注
9文章
1144瀏覽量
40827 -
無(wú)線電
+關(guān)注
關(guān)注
60文章
2145瀏覽量
116648
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論