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