欢迎来到天天文库
浏览记录
ID:1189335
大小:1.01 MB
页数:21页
时间:2017-11-08
《低功耗蓝牙(ble)学习记录》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、RW_BLE_CORE记录传输信道BLE的传输信道在2.4G频段有40个channel。包括2种物理信道:广播信道和数据信道。数据帧中设置AccessAddress用于标识该信道,防止信道碰撞。ChannelMAP如下:数据帧通信蓝牙帧结构如下:Preamble:根据AccessAddress而定,假如AA的LSB(最右bit)bit为1,则前导便是10101010b,反之则为01010101b。AccessAddress:广播帧的AA为:0x8E89BED6。其他情况可以是一个32bit的随机数。AA需满足以下条件·不超过连续6个1或者0。·与广播帧的AA
2、不同bit超过1个。·不能4byte相同。·01跳变不能超过24次·MSB6bit01跳变超过2次。以下逐个介绍PDU。一、AdvertisingChannelPDU蓝牙广播帧帧结构其中Header的帧格式如下:其中,a、广播帧类型(PDUType)分为以下几类:•ADV_IND:connectableundirectedadvertisingevent•ADV_DIRECT_IND:connectabledirectedadvertisingevent•ADV_NONCONN_IND:non-connectableundirectedadvertising
3、event•ADV_SCAN_IND:scannableundirectedadvertisingeventb、Length:3~37bytes广播帧分为很多种,其区别就是payload所代表的意义不同,以下分别对几种广播帧作分别阐释:1、ADV_INDADV_IND的payload格式如下:在广播帧帧头中的TxAdd位是广播地址的标示位:TxAdd==0:AdvA地址为公用地址;TxAdd==1:AdvA地址为随机地址。AdvData则是广播HOST的广播数据。2、ADV_DIRECT_IND这种帧用于直接接入的广播事件。ADV_DIRECT_IND的pa
4、yload帧格式如下:其中AdvA的意义与ADV_IND相同。InitA为广播发起者地址:RxAdd==0:发起者地址是公用地址;RxAdd==1:发起者地址是随机地址。注意:该帧不包含任何HOST数据。3、ADV_NONCONN_IND用于不可接入不直达(non-connectableundirected)的网络。其payload意义与ADV_IND类似。4、ADV_SCAN_IND用于可扫描不直达网络。Payload意义与ADV_IND类似。二、ScaningPDUs1)SCAN_REQ:这是扫描请求帧,处于广播状态的接收设备接收这种帧。此处,ScanA
5、为扫描者的地址,其地址由TxAdd控制是公共地址还是随机地址。AdvA为该扫描帧的目的地址。由RxAdd控制意义。2)SCAN_RSP扫描确认。处于广播状态的设备在收到扫描请求后,需要回复扫描确认帧。AdvA地址意义由TxAdd确定。ScanRspData为广播端的附带数据。三、InitiatingPDU该部分为连接发起协议。发起的帧格式仅一种:CONNECT_REQ。由发起方发送该帧,广播方接收该帧。1)CONNECT_REQCONNECT_REQ帧格式如下:TxAdd确认InitA地址为公共地址还是随机地址;RxAdd确认AdvA地址为公共地址还是随机地
6、址。LLData的数据格式如下:AA:AccessAddressCRCInit:CRC校验的初始值,它应该是LinkLayer产生的一个随机值。WinSize:发送窗长度参数。transmitWindowSize=WinSize*1.25ms。WinOffset:发送窗起始偏移量。TransmitWindowOffset=WinOffset*1.25ms。上述两个window意义如下:Interval:确定connectinterval的时间长度。connInterval=Interval*1.25ms。Latency:connSlaveLatency=La
7、tency。TimeOut:connSupervisionTimeout=Timeout*10ms(100ms~32s之间),当两帧数据之间的时间间隔超过6*connInterval或者connSupervisionTimeout时,则认为连接丢失。ChM:即ChannelMAP,一共0~36个信道。LSB代表channel0,哪一个是1,则哪一个信道有效。Channel37~39保留。Hop:5~16之间的随机值,用于设置HopIncrement。用于计算不使用的信道编号。unmappedChannel=(lastUnmappedChannel+hopIn
8、crement)mod37如果计算结果是属于保留信道
此文档下载收益归作者所有