藍牙車載音頻流播放器的設計與實現
1 系統結構
系統結構如圖1所示。音頻流播放器、液晶屏和收音機組成一個車載娛樂系統的CAN網絡,控制命令及狀態信息均通過CAN總線傳輸,其中收音機帶有功放,直接驅動汽車喇叭,并統一管理包括FM、CD和音頻流播放器的音頻輸出在內的音源。音頻流播放器和藍牙手機通過藍牙進行交互,采用A2DP(Advanced Audio Distribution Profile)完成音樂音頻流數據及相關格式信息的傳輸,通過AVRCP(Audio/Video Remote Control Profile)完成對音樂的遠程播放控制及播放信息及狀態的讀取。在A2DP中引入了2個終端名:SRC(Source)和SNK(Sink)。在這里,數字音頻流的數據發送端藍牙手機稱為SRC,數字音頻流的接收端藍牙音頻流播放器稱為SNK。
2 硬件設計
藍牙音頻流播放器的硬件設計中,包括CAN通訊、藍牙子系統和音頻系統3個部分,其中藍牙子系統和音頻系統部分采用CSR的藍牙單芯片Bluecore5-MutiMedia(以下簡稱BC5)實現。該芯片集成了MCU實現藍牙協議棧及應用,集成了性能高達64MIPS的DSP實現音樂文件的編解碼,集成了CODEC、音頻ADC及DAC,實現了音頻輸入輸出功能,圖2描述了基于該芯片的硬件設計。
由圖2可見,BC5內部集成了藍牙射頻及基帶控制、MCU、DSP和音頻CODEC,只需要很少的外圍元件便能完成電路設計。
3 播放控制狀態機的設計
藍牙音頻流的遠程播放控制使得用戶可以使用車載收音機上控制CD音樂的按鍵來控制藍牙手機上的音樂,控制操作包括播放、暫停、上一首、下一首、快進和快退,通過AVRCP(音視頻遠程控制剖面)命令實現。考慮到用戶操作隨機性很強及藍牙手機的音頻流支持特性不同的問題,需要設計一個完善的遠程播放控制狀態機來保證良好的操作體驗。
遠程播放控制狀態機是個組合式狀態機,包括2個小的狀態機:(1)狀態為藍牙手機音樂狀態,輸入為人機接口操作,在人機接口操作的處理中判斷當前音樂狀態,決定輸出的AVRCP命令;(2)狀態為人機接口操作或者說“期望狀態”,輸入為藍牙手機音樂當前狀態的更新,在音樂狀態更新的處理中根據期望狀態決定輸出的AVRCP命令。把人機接口操作稱為“期望狀態”,把當前音樂狀態稱為“實際狀態”,這兩個狀態機的原理便是當期望狀態和實際狀態不一致時,發送可以達到期望狀態的AVRCP命令。下面詳細介紹下狀態機的設計要點。
首先每個人機操作的控制命令在AVRCP上都對應2個命令,對于播放、暫停、上一首、下一首操作,命令是連續執行的,比如暫停操作便是在AVRCP上連續執行PAUSE_PRESS和PAUSE_RELEASE命令;而對于快進命令,則是先執行FF_PRESS命令,在快進按鍵松開時再執行FF_RELEASE命令。
評論