BLE快速开发入门之Controller

       最近一段时间在调试BR/EDR Controller和对应的射频,真正的感受到,不对基础知识理解,很难将蓝牙做好,在这里先抹一把眼泪。各种频偏、各种射频敏感性的矫正,已经将之前那颗傲娇的心碾压的粉粹。好了,现在开始BLE Controller的学习吧。

        相比起BR/EDR的Controller,BLE确实是另外一套通信机制。
        区别一:BD Adress这块,BLE的地址有三种类型,第一种是公共地址:可以用在与BR/EDR共存的模式下。第二种是静态私有地址,它不需要IRK来进行解析。第三种就是动态的私有地址,每一次设备之间的交互,都会去通过IRK去解析地址。

        区别二:phy层,BLE的phy只有40个频点,每个频点都对应有相应的channel,其中有三个频点是用来做primary advertising

        区别三:packet format,由一下几部分组成:

         preamble:用来做频率同步,时隙预估和自动增益控制

         access adress:主要是用来做同步,按照一定的要求随机生成的,每个设备之间的这串数字也不一样,并且设备的不同状态切换对应的这串数字也会变化,这样就能够很好辨识当前通信的两两设备,和设备的状态。

         PDU:这个分为Control和Data PDU

         Control Data PDU分为三个type:Advertising PDU、Scanning PDU、Initiating PDU

         Advertising PDU主要有这么几种类型:adv_ind, adv_direct_ind, adv_nonconn_ind, adv_scan_ind这些包在Advtising state下发射,以及在Scanning state和Initiating state下接受。

         Scanning PDU主要有这么几种类型:Scan req和Scan rsp,在Scanning State下可以用

         Initiating PDU主要有这么几个类型:Connect ind,在Initiaing state下可用   

         除去Scanning PDU,其它的都会包含有Data PDU,而Data PDU包含有LL Data PDU(接受L2cap 的data)和LL Control Data控制命令

         CRC:校验码
         区别四:交互协议  确实是风格迥异的两套通信协议
         BLE的时隙需求分为两部分,一部分是主动精准时隙,一部分是sleep 精准时隙。主动精准时隙在扫描、请求连线,或者连线之后的packet的传输会用到,它要求在前后俩个packet之间的间隙不能超过2us。而sleep 精准时隙在是前面的一种特殊情况,它会在SCA 不及时update或者有延迟响应的时候会采用当前精确性最差的精度来当作时隙。连线在一段时间之后不能存在超过16us的偏移,这就意味着在某一段时间之内(这个时间可以计算:根据rxSCA和txSCA),两个设备可以有一个滑动的时间window来交互packet,一般用在advertising或者周期性adversiting等。

         BLE链路设备过滤,除去单个的设备状态,一般都会支持这种功能,它可以用来将设备的action限制在filter list的范围内。并且每一个Advertising state、Scanning State、Initiating State和Periodic Sync Establishment都有自己独立的list。当然这些fileter list的策略是通过Host来配置的,可以通过不同的配置,将会处理不同device的不同action
         


 

 

你可能感兴趣的:(Bluetooth)