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