蓝牙跳频算法分析【经典蓝牙 vs BLE 4.x vs BT 5.0 BLE部分】
------------------------------------------------------------------------------------------------------------
文章版權歸為微信公眾號 Wireless Inside (前身 ?無線技術聯盟),轉載請注明出處.
XCODER.
技術博客:www.iotbzw.com
------------------------------------------------------------------------------------------------------------
?
FHSS : Frequency-hopping-spread-spectrum?
關注微信公眾號 "無線技術聯盟",?提供有價值的市場信息和最新的技術分析
“?本篇講述藍牙跳頻算法及原理分析,分為四塊部分,為什么需要跳頻,經典藍牙跳頻,BLE 4.x跳頻和BLE 5.x跳頻,最后附上一份跳頻代碼,需要的朋友可以后臺和我聯系”
01
為什么需要跳頻
WLAN和基于IEEE 802.11規范的無線設備與藍牙一樣,在無需許可的2.4 GHz ISM(工業,科學和醫療)無線電頻段中運行。為了改善在該環境中的相同規范設備的通訊性能,SIG引入了自適應跳頻的技術AFH(advance frequence hopping),以減少這種干擾的影響。該跳頻技術可以通過各種方法實現,每種方法都有其固有的優點和缺點。愛立信是藍牙無線技術領域的領導者,采用的方法非常適合作為知識產權(IP)銷售的廣泛的藍牙設計解決方案。愛立信通過使用其他標準和專有技術進一步增強了AFH的實施,在多種無線技術的存在下為語音中心應用提供了出色的音頻質量。
在AFH解決方案出現之前開發的藍牙產品采用另一種形式的跳頻,其跳頻在設計上是隨機的。 這些第一代藍牙設備使用2.4 GHz頻段中的83.5個可用頻道中的79個,以隨機方式跳過這些頻道,速率為每秒1600次。 一旦將另一個無線設備引入環境中,這種類型的跳躍就會導致偶爾的沖突。 沒有AFH藍牙缺乏避免這些沖突的能力,從而適應其環境。 結果如下圖所示,顯示了藍牙(BT)和無線LAN(WLAN)都在運行的環境。
與上述相反,自適應跳頻AFH允許藍牙通過識別固定的干擾源并將其從可用信道列表中排除來適應環境。 這種重新映射過程還涉及減少藍牙使用的信道數量。 藍牙規范要求至少20個信道的最小集合。 下圖顯示了與上圖相同的環境,但現在使用了自適應跳頻后的藍牙通訊信道。
02
經典藍牙跳頻原理
經典藍牙跳頻框架如下所示:有一個Channel map,即為跳頻表,一個跳頻階躍;根據跳頻表和跳頻階躍和當前通訊頻點,即可計算出主從機下一次數據通訊的頻點。
藍牙跳頻表算法各家的算法略有不同,但都需要解決兩個問題
1.?信道評估:
SIG規范沒有規定如何識別不良信道,這一過程通常被稱為“信道評估”,因此AFH算法工程師面臨著為每個特定解決方案選擇最合適方法的任務。目前,有兩種主要的方法用于執行具有自適應跳頻的信道評估:RSSI(接收信號強度指示)和PER(分組錯誤率)。
RSSI和PER都是眾所周知的用于確定哪些信道可能已被占用的技術。然而,當涉及監聽當前信道狀態時,這兩種方法不同。 PER用于反復測試和重新評估不良信道的方法不如RSSI準確,并且可能導致臨時挫折。然而,在使用RSSI時還存在許多其他問題,例如RSSI消耗的功率大于PER。當缺少可用的時隙時,RSSI還可以要求從其他功能獲取帶寬。
2. 同一信道數據通訊:
藍牙AFH規定,主設備和從設備都通過同一頻道進行通信。 這樣做是為了避免主設備在“好”信道上發送而從設備響應“壞”信道(反之亦然)的情況,因為這將導致多次重傳(其他協議AFH的數據收發是在不同信道,會產生發數據正常,接收信道干擾導致無法響應主產生的多次重傳)。由于主設備和從設備在相同頻率上發送接收數據,因此信道跳頻率降低50%至每秒800次。 雖然這可以使藍牙設備對來自其他藍牙設備的干擾更敏感,但迄今為止所帶來的好處超過了這個小缺點。?
03
BLE4.x跳頻算法
Bluetooth LE CSA #1
調頻算法用于數據連接中,數據信道同37個,調頻公式如下: unmappedChannel = (lastUnmappedChannel + hopIncrement) mod 37
fn+1=(fn+hop) mod 37 hop是一個5~16的值,每次調頻之后中心頻率加后hop并模37。因為都是正整數,這個表達式在軟件中非常容易實現,軟件中通過求余運算便能完成運算,協議規定第一次連接事件中fn=0,fn+1=(0+hop) mod 37,也就是hop信道編號。
假設主機ChanelMap=00011110 00000000 11100000 00000110 00000000b,最右邊為第一通道,最左邊為第40信道,8bit為一組,總共五組(包括了三個廣播信道)。
那么使用到的信道為9,10,21,22,23,33,34,35,36。
usedChannel[]={9,10,21,22,23,33,34,35,36}
假設hopIncrement =7,那么就可以進行自適應調頻計算了,第一連接時
?fn+1=(0+7) mod 37=7?
而7信道不是一個可用的好信道,那么就要重映射?
remappingIndex = 7 mod 9=7?
再通過?
usedChannel[7]=35
編號35信道一定是一個可用的信道了,因為它本身就從可用的信道集合中求出來的,下圖是仿真軟件計算的部分跳頻表,和上面分析一致。
04
BLE5.0跳頻算法
Bluetooth LE CSA #2
信道選擇算法#2(CSA#2)是更復雜和更難跟蹤用于獲得下一個連接事件的信道索引的算法。特別是在高通量使用情況下,避免干擾和多路徑衰落效應,使得藍牙可以在超過10dBm的發射功率情況下獲取全世界不同國家的無線電認證(單點發射功率過高肯定是難過歐美無線電認證,必須通過跳頻方式使得產品平均低于當地政府要求,CSA #2的算法下,藍牙產品在整個工作頻段的平均功率較CSA #1要低)。
CSA #2和CSA #1一樣的地方是都有一張約定的跳頻表;不一樣的是跳頻階躍的值,CSA #1的跳頻階躍值是固定的,CSA #2的跳頻階躍是通過算法計算出來的。
另外一個不一樣的是CSA #2可以用在廣播信道和連接信道,CSA #1只適用于連接信道。
CSA #2跳頻階躍算法:(不要問我為什么要弄這么復雜,背后是數學邏輯..)
Counter N:當前通信信道
ChannelIdentifier?= (Access Address31-16) XOR (Access Address15-0)
通過Counter N和ChannelIdentifier?兩個輸入信號和一個隨機序列產生器生成輸出信號,輸出信號即為跳頻階躍。
隨機數據產生器中的MAM算法介紹:
MAM(The Multiply, Add, and Modulo)算法得出輸出:
output = (17 x a + b) mod 216
經過幾輪亦或運算XOR,置換排序PERM,MAM之后得到prn_e16(跳頻階躍),余下步驟和CSA#1一致。
完整跳頻算法如下所示:
假設主機使用到的信道為9,10,21,22,23,33,34,35,36。
usedChannel[]={9,10,21,22,23,33,34,35,36}
Access Address為上一篇文章里面用到的0x364F10C1,下圖為仿真軟件計算的出來的prn_e和跳頻表:
05
跳頻總結
經典藍牙跳頻AFH算法最為復雜,需要實時監聽壞信道,更新跳頻表,對MCU資源要求較高,BLE 4.x是AFH的簡化版,跳頻表隨機,跳頻階躍固定,藍牙5的BLE部分使用新的CSA #2算法,跳頻階躍通過算法計算得到,避免干擾和多路徑衰落效應。
大家看完不知道有沒有過癮,這是藍牙的跳頻算法,是一種被實驗認證的標準,我們是不是可以換個思路,把算法放在其他私有頻段通信使用呢?需要完整跳頻算法代碼的朋友后臺留言給我:)
「Wireless Inside 微信公眾號 (原無線技術聯盟微信公眾號) 微信交流群」
助力IoT行業朋友打通短距離無線通信圈的行業小社區。
集高通,Broadcom,TI,Nordic,Dialog,ST,Silicon lab, NXP, AMBIQ等藍牙芯片原廠技術,市場,銷售
集華為,MTK,泰凌微,凌思微,盛源達,ASR,華普微,中穎電子,百瑞互聯,Realtek 國產芯片原廠技術,市場,銷售
集Arrow,北高智,迅通,世強,利爾達,科通,全科等一線原廠代理商技術,市場,銷售
集小米,華米,綠米,涂鴉,雅觀,百度,阿里,Oppo,Vivo,京東互聯網公司,品牌客戶,方案公司技術,市場,銷售,創始人
集藍牙認證機構,被動器件,射頻公司,以及SIG大佬
申請流程:
① 因群人數已超過限制人,請先微信掃描以下微信二維碼或添加Xcoder微信號(blecoder),添加微信時請將您的個人信息進行備注(名字 公司 職位),以便登記,同時也歡迎同行和我進行交流。
② 由于需要我逐個邀請入群,所以請大家耐心等待!謝謝理解與支持!
無線技術聯盟微信公眾號,提供有價值的市場信息和最新的技術分析,歡迎關注交流,轉載請注明出處。
總結
以上是生活随笔為你收集整理的蓝牙跳频算法分析【经典蓝牙 vs BLE 4.x vs BT 5.0 BLE部分】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python绘制全国图_python-使
- 下一篇: Android网易云鲸云音效UI