藍牙技術在車載信息娛樂系統中的應用
隨著汽車電子和消費電子技術的融合,車載信息娛樂系統近幾年發展迅猛,成為融合各種技術的集成化平臺,很多在消費電子領域中的應用開始在汽車上實現,滿足了用戶在娛樂、舒適與安全方面的追求。在消費電子領域大行其道的藍牙技術也開始滲透到汽車應用中,汽車內部空間有限,正符合藍牙短距離連接應用的初衷,而且藍牙SIG組織以剖面(profile)的形式詳細定義了在各方面應用中的操作方式和應該遵循的原則和步驟,相比于其他無線技術更能保證通用性和互操作性。藍牙SIG組織專門定義了HFP(Hand Free Profile)規范了藍牙在車載免提裝置中的應用,使得用戶通過車載麥克風和音響便可以打電話,保證了行車安全;定義了PBAP(Phone Book Access Profile)和OPP(Obeject Push profile)規范了電話簿下載的應用,使得用戶可以將手機中的電話簿同步到車載免提裝置上,從而可以利用汽車上的按鍵和液晶屏直接撥打電話,方便了用戶的使用;藍牙技術在立體聲耳機中的應用經驗也開始應用到車載娛樂系統中,利用車載音響便可以播放藍牙立體聲流媒體音樂,大大提升了用戶的車內娛樂體驗。在筆者研制的一款車載娛樂設備中,將USB技術、藍牙技術、音頻解碼技術融合在一起,結合汽車內部麥克風和音響,集成了播放U盤存儲的音樂、免提應用、電話簿下載和流媒體音樂播放功能,而且通過CAN總線連接車載CAN網絡,實現了與車載信息娛樂系統的集成和功能的可擴展性。本文主要從硬件設計和軟件設計兩個方面講述一下藍牙技術在這款車載娛樂設備中的應用與開發。
一、硬件設計
該車載娛樂設備的硬件設計采用雙處理器結構實現,主CPU采用Freescale的高性能32位處理器MCF5251,藍牙芯片采用CSR的Bluecore5-MM,采用UART作為兩款處理器的接口。其中USB HOST、音頻文件解碼、CAN通訊、人機接口均在主CPU上實現,Bluecore5-MM實現藍牙通訊和相應的剖面協議,其結構框圖如圖1所示:
圖1:硬件結構圖
下面介紹下Bluecore5-MM芯片的特點及應用。
BlueCore5-MM是CSR提供的一款高度集成的藍牙單芯片,在8*8*1.2mm TPBGA封裝內集成了藍牙MAC層和基帶IC,其發射功率和接收功率分別可達到+8dBm和-90dBm,無須外部功放即能實現Class 2的范圍。CSR以固件的形式提供了完全兼容藍牙2.0規范的的協議棧,且內部提供了自動校準和內建的自測試機制,用于原型開發和藍牙協議認證。
Bluecore5-MM內部包含一16位MCU,可外接32M bits FLASH,用于完成協議棧和應用程序,還集成了一顆處理能力高達64MIPS的DSP,主要完成三個功能:
1. 回聲消除及噪聲抑制,提供非常清晰的語音質量;
2. 實現對流媒體音樂的解碼,可以對mp3,aac等格式的音樂文件解碼;
3. 能夠方便地增加CSR第三方合作伙伴基于該DSP開發的專用的經過驗證的音頻或語音增強軟件,快速加強其終端設計的性能和功能。
這樣便提升了免提組件的用戶體驗, 使其適用于各種先進且高質量音頻的車載應用。其內部結構如圖2所示:
圖2: Bluecore5-MM 結構圖
藍牙子系統硬件在CSR提供的BlueTunes2開發板的基礎上進行設計開發,該開發板提供了基于BlueCore5-Multimedia芯片的完整的硬件解決方案,包括原理圖設計和PCB設計和天線設計。基于BlueCore5的藍牙子系統硬件開發一個很重要的工作便是利用PSTOOL工具調整可以決定RF特性的PSKEY值,比如Crystal trim。筆者設計好電路板后,采用多部手機進行搜索和連接測試,發現有的手機搜索不到該設備,采用Anritsu/安立公司的MT8852藍牙測試儀測試了其RF特性,發現“初始載波”不合格,通過修改影響初始載波偏移的PSKEY-Crystal trim,測試通過,且設備可以被所有的手機搜索到。
二、軟件設計
CSR提供固件(firmware)完成藍牙協議棧,軟件開發環境提供各個剖面(profile)庫及其源代碼,這樣我們就可以不必深究底層協議,而在CSR提供的協議棧和剖面庫的基礎上專注于應用軟件開發,軟件結構框圖如下圖所示:
圖3: 軟件結構圖
我們選擇的開發環境為RoadTunesSdk,基于其提供的操作系統VM實現應用程序的開發。基于其HFP剖面,可以實現免提通話應用,并可以傳遞信號強度、電池電量、充電狀態、漫游狀態等信號量,在液晶屏上顯示;基于其A2DP和AVRCP剖面,可以實現流媒體音樂播放和遠程控制,這些部分CSR提供了完整的例程,比較容易實現。以下我們從UART通訊、自動連接、電話簿同步等幾個方面闡述下軟件開發的關鍵技術。
2.1 UART通訊
BC5和主CPU之間的數據交換采用通訊幀的方式,采用幀頭(0x55+0xaa)+ID(標示該幀的含義)+DLC(數據場長度)+DATA(數據)+CRC16(16位CRC校驗)的格式進行傳輸,并且采用緩沖區的方式保證數據在未處理之前可以存儲。
主CPU到BC5主要是人機接口命令,比如接聽電話、掛斷、呼叫保持、激活保密模式等,這個數據量小而且幀間間隔比較長,所以數據可以得到有效的存儲和處理。而從BC5到主CPU的數據傳輸便比較復雜,因為涉及到藍牙手機、BC5 和主CPU之間的三方通信,藍牙手機到BC5可能在短時間內有大量的數據傳輸,這樣在BC5到主CPU短時間內便會有多幀傳輸,為了保證數據存儲和次序處理的正確性,采用開辟多個獨立緩沖區的方式便有些不可取,我們采用了在主CPU端開辟一個大的FIFO(先入先出)緩沖區的方式,保證了數據得到正確緩存和次序處理。該緩沖區空間比較大,數據便可以得到有效緩存,而且由于其先入先出的特性,所以數據的次序處理又可以得到保證。
串行通信的錯誤來自于其采樣時刻的干擾,當DLC不產生錯誤時,CRC校驗可以保證數據的正確性。但是當DLC由于干擾產生錯誤時,便會引起幀的解析狀態機的混亂,將下一幀的數據誤判斷為該幀數據,便會產生漏幀的現象,并進而引起FIFO緩沖區的混亂。為了有效解決該問題,必須保證填充到FIFO緩沖區的數據都是嚴格按照之前定義的幀格式進行順序排列的。我們采用了幀延時和定時器監測的方式來剔除錯誤幀,首先在幀發送時會有個10ms的延時,相鄰兩條幀的時間間隔則大于10ms,在主CPU端接收幀時開啟一個7ms的超時定時器,每接收到一個數據便重啟該定時器,如果定時器超時,則可以判斷出DLC出錯,從而將這一幀判斷為不完整,將該幀不完整的數據丟掉,然后退出幀尾等待,等待下一個幀頭的到來。不完整幀不填充到FIFO緩沖區中,這樣便解決了因為DLC錯誤引起整個FIFO緩沖區混亂的問題。
2.2 自動連接
為了增強使用的便利性和對用戶的友好性,我們實現了自動連接功能。我們定義了自動連接的三個觸發條件:
1. 系統上電
2. 由于連接設備離開有效范圍引起當前連接斷開
3. 一個已配對設備進入藍牙有效范圍
為了實現這三個條件下的自動連接,我們實現了配對列表管理和周期搜索功能。配對設備的管理包括添加配對設備、從液晶屏上刪除配對設備、存儲、提取、優先級管理、查找最后一次連接的免提設備和音頻設備、查找進入藍牙環境的最高優先級的設備等功能。優先級設計為:優先級最高的為上次連接的設備,然后按照配對列表的次序依次遞減。
為了確定是否有一個已配對設備進入藍牙有效范圍,采用周期“搜索”的方式進行判斷。當配對列表不為空而且當前沒有連接的前提下發起周期搜索,如果上次沒有搜索到某個配對設備而這次搜索搜索到了,便發起與該設備的自動連接。由于搜索是個對藍牙基帶帶寬要求比較高的操作,所以為了保證不因為自動搜索影響外部發起的搜索配對、手動連接、從液晶屏發起的連接,在配對和手動連接進行中停止自動搜索并重啟搜索定時,使得自動搜索盡量不影響這些操作。
2.3 電話簿同步
電話簿條目在下載傳輸時采用VCARD格式,符合vCard2.1和vCard3.0規范,格式如下所示:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8:jianhui
TEL;CELL:13475909642
. . . . .
END:VCARD
可以采用以下幾種方式下載: AT命令、OPP、PBAP、syncML,筆者實現了后三種方式。OPP即用戶在手機上選擇一條或幾條電話號碼PUSH到車載免提裝置上,PBAP是藍牙SIG為了規范電話簿的自動下載而定義的一個應用剖面,定義了兩種功能:下載和瀏覽。下載是把整個電話本作為一個文件進行下載,瀏覽是以單條VCARD為單位的下載。按照PBAP的定義,所有的手機都應支持下載和瀏覽功能,由于手機兼容性問題,我們測試的結果為所有手機都能支持下載功能,部分手機支持瀏覽功能,而且有的手機采用下載功能下載時下載不全,這是由手機本身的缺陷造成的,為了解決該問題,我們首先獲得電話號碼總條目數,當采用下載方式下載完并將VCARD解析完成后,我們判斷條目數是否相等,如果不相等,我們再采用瀏覽方式去下載。
syncML是移動設備間數據同步的一種通用協議,與藍牙OBEX協議綁定便可以實現syncML在藍牙技術上的應用。syncML不僅可以下載電話簿,還可以完成電話簿的更新,當第一次同步后,第二次同步時便將產生變化的部分以syncML文檔的格式傳過來,解析該syncML文檔便可以實現電話簿條目的增加(ADD)、刪除(DELETE)和修改(REPLACE)操作。
結語
藍牙技術的車載應用開發研究越來越廣泛,筆者融合了藍牙技術和汽車電子技術,設計實現了一款車載信息娛樂設備,介紹了其藍牙子系統硬件設計和軟件開發的若干關鍵技術,該設備運行穩定,具有良好的用戶體驗和使用價值。
評論