藍牙開發(fā)關(guān)鍵技術(shù)剖析
藍牙是一種工作在免費的ISM頻段(2.4GHz)的短距離無線通信技術(shù),在各種設(shè)備之間實現(xiàn)靈活、安全、低成本、低功耗的語音和數(shù)據(jù)通信。它采用自適應(yīng)跳頻(AFH)技術(shù),可以和多種無線通信共存于ISM頻段,與同用于短距離無線通信的Zigbee和UWB相比,藍牙協(xié)議和標(biāo)準(zhǔn)更加完善,設(shè)備間一致性和互連通性好,而且以Profile的形式定義了具體應(yīng)用的實現(xiàn)方式,從而保證了兼容性。一款成熟穩(wěn)定的藍牙產(chǎn)品的設(shè)計面臨諸多技術(shù)上的挑戰(zhàn),結(jié)合自己設(shè)計一款車載藍牙設(shè)備的開發(fā)經(jīng)驗,筆者從配對列表管理、連接管理、時鐘設(shè)計三個方面講下相關(guān)關(guān)鍵技術(shù)及開發(fā)。連接機制分析物理信道(physical channel)是藍牙系統(tǒng)的最底層結(jié)構(gòu),通過偽隨機跳頻序列、發(fā)送時槽定時、接入碼及幀頭編碼來表征。藍牙針對不同應(yīng)用定義了一系列物理信道,包括用于匹克網(wǎng)內(nèi)設(shè)通信的匹克網(wǎng)物理信道、用于尋呼設(shè)備的尋呼掃描物理信道和用于查找設(shè)備的查找掃描物理信道。兩臺設(shè)備必須采用相同的物理信道才能進行通信。
主從設(shè)備建立連接的過程就是建立相同匹克網(wǎng)信道的過程,該過程確保主從設(shè)備以同樣的定時和次序進行載波頻率的跳變,進行數(shù)據(jù)傳輸,同時可以根據(jù)匹克網(wǎng)接入碼和幀頭編碼進行數(shù)據(jù)過濾和解析,避免和其他設(shè)備在同一個頻段上的相撞。
尋呼掃描物理信道(page scan physical channel)用于主設(shè)備尋呼從設(shè)備,是設(shè)備建立連接的必經(jīng)階段。尋呼掃描跳頻序列和尋呼請求幀的設(shè)備接入碼(DAC)是由從設(shè)備物理地址運算,處于可被連接模式的從設(shè)備以固定的周期(由page scan interval決定)在一個固定的時間窗(由page scan window決定)內(nèi)以某個跳頻頻率監(jiān)聽主設(shè)備的尋呼請求。
自動連接
為了方便用戶的使用,大多藍牙設(shè)備都實現(xiàn)了自動連接功能,根據(jù)以上對藍牙連接機制的分析,設(shè)計自動連接方案時必須考慮設(shè)備在不同的工作狀態(tài)下采用不同的物理信道和跳頻序列,而不能按照人為的邏輯隨意設(shè)置,否則會給用戶帶來不便。
以車載免提裝置為例,上電自動連接對駕駛員來說可以提高使用車載免提的自覺性,降低行車期間通話帶來的風(fēng)險。采用搜索方式判斷設(shè)備是否在有效范圍內(nèi),按照優(yōu)先級從低到高連接,最后一次連接的手機為優(yōu)先級最高的,然后按照配對列表的逆序而優(yōu)先級依次降低。鏈路丟失后的自動連接只針對最后一部手機,這樣可以實現(xiàn)服務(wù)的連續(xù)性。
時鐘設(shè)計
藍牙核心規(guī)范要求時鐘頻率精度為±20ppm,如果載波頻率不穩(wěn)定,則會發(fā)生“過零點”錯誤(zero-cross)。載波頻率由本地時鐘(晶振)做為PLL的參考時鐘倍頻產(chǎn)生。一般說來,藍牙設(shè)備的時鐘設(shè)計便是指晶振電路的設(shè)計及微調(diào)。
決定晶振工作精度的兩個重要參數(shù)是制造公差和溫度穩(wěn)定度,如果選擇有源晶振作為本地時鐘,需要滿足:制造公差+溫度穩(wěn)定度≤±20ppm,有源晶振內(nèi)部集成晶體和相應(yīng)的振蕩電路,匹配精確,頻率穩(wěn)定性高,而且抗干擾性能好,缺點是成本較高。
圖1 震蕩電路設(shè)計
本文自行設(shè)計的振蕩電路如圖1所示。
選擇溫度穩(wěn)定性高、制造公差低的高精度晶體,通過振蕩電路設(shè)計實現(xiàn)諧振頻率的精確調(diào)整,這是由晶體負載電容的匹配及可調(diào)實現(xiàn)的。負載電容是指CRY_IN和CRY_OUT兩端的電容值,在晶體的CRY_IN引腳上并聯(lián)一個可調(diào)電容,調(diào)整該電容便可以對諧振頻率進行精密微調(diào)。晶體負載電容計算公式如下:Cload=Cint+(Cin+Ctrim)×Cout/(Cin+Ctrim+Cout)
Cint包括IC內(nèi)部電容(一般為固定值)以及PCB雜散電容(3pF~5pF)。
配對列表管理
為了保證鏈路級的安全,藍牙通信要求設(shè)備在連接建立前進行“雙向認證”。認證成功的前提是設(shè)備雙方存儲了相同的鏈路密鑰Kab,配對是產(chǎn)生初始密鑰Kint的階段,Kint由PIN碼、從設(shè)備藍牙地址和主設(shè)備發(fā)給從設(shè)備的一個隨機數(shù)由一套固定的算法計算出來,只要PIN碼一致,主從設(shè)備生成的的Kint也是一致的。鏈路密鑰的輸入是主從設(shè)備的藍牙地址和主從設(shè)備各一隨機數(shù),只要主從設(shè)備能互換隨機數(shù),便能得到一致的Kab。主設(shè)備將隨機數(shù)RandA與Kint異或的結(jié)果發(fā)給從設(shè)備,從設(shè)備只將該結(jié)果與Kint異或便得到RandA,即
配對列表的管理包括添加、替代及刪除,添加配對設(shè)備是在非易失性存儲中存儲該設(shè)備的藍牙地址及Kab。刪除配對設(shè)備需要謹慎處理,如果存在連接,需要先斷開連接然后刪除,因為如果刪掉該設(shè)備而有一種應(yīng)用的連接沒有斷開,會存在臨時密鑰用于當(dāng)前應(yīng)用,這時不經(jīng)配對也可以連接上其他應(yīng)用,違反了藍牙安全性要求。
結(jié)語
一款成熟穩(wěn)定的藍牙產(chǎn)品開發(fā)需要在深入了解藍牙協(xié)議棧的基礎(chǔ)上不斷完善應(yīng)用程序,筆者從配對、連接和時鐘設(shè)計三個方面論述了相關(guān)技術(shù)和開發(fā)要點,希望可以帶來一些有益的借鑒。