資源描述:
《低功耗藍(lán)牙(ble)學(xué)習(xí)記錄》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、RW_BLE_CORE記錄傳輸信道BLE的傳輸信道在2.4G頻段有40個(gè)channel。包括2種物理信道:廣播信道和數(shù)據(jù)信道。數(shù)據(jù)幀中設(shè)置AccessAddress用于標(biāo)識(shí)該信道,防止信道碰撞。ChannelMAP如下:數(shù)據(jù)幀通信藍(lán)牙幀結(jié)構(gòu)如下:Preamble:根據(jù)AccessAddress而定,假如AA的LSB(最右bit)bit為1,則前導(dǎo)便是10101010b,反之則為01010101b。AccessAddress:廣播幀的AA為:0x8E89BED6。其他情況可以是一個(gè)32bit的隨機(jī)數(shù)。AA需滿足以下條件·不超過連續(xù)6個(gè)1或者0?!づc廣播幀的AA
2、不同bit超過1個(gè)。·不能4byte相同?!?1跳變不能超過24次·MSB6bit01跳變超過2次。以下逐個(gè)介紹PDU。一、AdvertisingChannelPDU藍(lán)牙廣播幀幀結(jié)構(gòu)其中Header的幀格式如下:其中,a、廣播幀類型(PDUType)分為以下幾類:?ADV_IND:connectableundirectedadvertisingevent?ADV_DIRECT_IND:connectabledirectedadvertisingevent?ADV_NONCONN_IND:non-connectableundirectedadvertising
3、event?ADV_SCAN_IND:scannableundirectedadvertisingeventb、Length:3~37bytes廣播幀分為很多種,其區(qū)別就是payload所代表的意義不同,以下分別對(duì)幾種廣播幀作分別闡釋:1、ADV_INDADV_IND的payload格式如下:在廣播幀幀頭中的TxAdd位是廣播地址的標(biāo)示位:TxAdd==0:AdvA地址為公用地址;TxAdd==1:AdvA地址為隨機(jī)地址。AdvData則是廣播HOST的廣播數(shù)據(jù)。2、ADV_DIRECT_IND這種幀用于直接接入的廣播事件。ADV_DIRECT_IND的pa
4、yload幀格式如下:其中AdvA的意義與ADV_IND相同。InitA為廣播發(fā)起者地址:RxAdd==0:發(fā)起者地址是公用地址;RxAdd==1:發(fā)起者地址是隨機(jī)地址。注意:該幀不包含任何HOST數(shù)據(jù)。3、ADV_NONCONN_IND用于不可接入不直達(dá)(non-connectableundirected)的網(wǎng)絡(luò)。其payload意義與ADV_IND類似。4、ADV_SCAN_IND用于可掃描不直達(dá)網(wǎng)絡(luò)。Payload意義與ADV_IND類似。二、ScaningPDUs1)SCAN_REQ:這是掃描請(qǐng)求幀,處于廣播狀態(tài)的接收設(shè)備接收這種幀。此處,ScanA
5、為掃描者的地址,其地址由TxAdd控制是公共地址還是隨機(jī)地址。AdvA為該掃描幀的目的地址。由RxAdd控制意義。2)SCAN_RSP掃描確認(rèn)。處于廣播狀態(tài)的設(shè)備在收到掃描請(qǐng)求后,需要回復(fù)掃描確認(rèn)幀。AdvA地址意義由TxAdd確定。ScanRspData為廣播端的附帶數(shù)據(jù)。三、InitiatingPDU該部分為連接發(fā)起協(xié)議。發(fā)起的幀格式僅一種:CONNECT_REQ。由發(fā)起方發(fā)送該幀,廣播方接收該幀。1)CONNECT_REQCONNECT_REQ幀格式如下:TxAdd確認(rèn)InitA地址為公共地址還是隨機(jī)地址;RxAdd確認(rèn)AdvA地址為公共地址還是隨機(jī)地
6、址。LLData的數(shù)據(jù)格式如下:AA:AccessAddressCRCInit:CRC校驗(yàn)的初始值,它應(yīng)該是LinkLayer產(chǎn)生的一個(gè)隨機(jī)值。WinSize:發(fā)送窗長(zhǎng)度參數(shù)。transmitWindowSize=WinSize*1.25ms。WinOffset:發(fā)送窗起始偏移量。TransmitWindowOffset=WinOffset*1.25ms。上述兩個(gè)window意義如下:Interval:確定connectinterval的時(shí)間長(zhǎng)度。connInterval=Interval*1.25ms。Latency:connSlaveLatency=La
7、tency。TimeOut:connSupervisionTimeout=Timeout*10ms(100ms~32s之間),當(dāng)兩幀數(shù)據(jù)之間的時(shí)間間隔超過6*connInterval或者connSupervisionTimeout時(shí),則認(rèn)為連接丟失。ChM:即ChannelMAP,一共0~36個(gè)信道。LSB代表channel0,哪一個(gè)是1,則哪一個(gè)信道有效。Channel37~39保留。Hop:5~16之間的隨機(jī)值,用于設(shè)置HopIncrement。用于計(jì)算不使用的信道編號(hào)。unmappedChannel=(lastUnmappedChannel+hopIn
8、crement)mod37如果計(jì)算結(jié)果是屬于保留信道