CC2540 BLE开发笔记

来源:互联网 发布:佛教起源于何地知乎 编辑:程序博客网 时间:2024/05/15 03:36

        1、在尝试配对过程中出现“Pairing fail 5”的情况,解决方法如下:

        (使用抓包工具)


        这里截取了一包广播数据进行分析:

                首先,红色区域:4字节长度的访问地址(Access Address);

                紧接着,绿色区域:1字节长度的数据类型,此处为可连接的非定向广告(Adv PDU Type);

                紧接着,绿色区域:数据的属性分析(Adv PDU Header);

                紧接着,绿色区域:6字节长度的广播设备地址(AdvA);

                紧接着,绿色区域:0-31字节长度的广播数据(AdvData);

                紧接着,蓝色区域:3字节长度的CRC校验(CRC);

                紧接着,蓝色区域:1字节长度的接收的信号强度指示(RSSI);

                紧接着,蓝色区域:0-2字节的帧校验序列(FCS);


        这里是一包集中器的连接请求数据:

                首先,红色区域:4字节长度的访问地址(Access Address);

                紧接着,绿色区域:1字节长度的数据类型,此处为连接请求(Adv PDU Type);

                紧接着,绿色区域:数据的属性分析(Adv PDU Header);

                紧接着,绿色区域:6字节长度的发起连接请求的集中器的设备地址(InitA);

                紧接着,绿色区域:6字节长度的发起广播的节点设备地址(AdvA);

                紧接着,两个绿色区域:表示连接间隔、从机延时、管理超时的数据(LLData);

                紧接着,蓝色区域:3字节长度的CRC校验(CRC);

                紧接着,蓝色区域:1字节长度的接收的信号强度指示(RSSI);

                紧接着,蓝色区域:0-2字节的帧校验序列(FCS);


        这里是一包集中器发出的配对请求数据:

                首先,红色区域:4字节长度的访问地址(Access Address);

                紧接着,白色区域:为数据传送方向(M表示集中器,S表示节点设备)(Direction);

                紧接着,白色区域:数据接收状态(ACK Status);

                紧接着,黄色区域:1字节长度的数据类型(Data Type);

                紧接着,黄色区域:数据的头部(Data Header);

                紧接着,两个深黄色区域:表示配对请求相关的数据;

                紧接着,蓝色区域:3字节长度的CRC校验(CRC);

                紧接着,蓝色区域:1字节长度的接收的信号强度指示(RSSI);

                紧接着,蓝色区域:0-2字节的帧校验序列(FCS);


        这里是一包节电设备回配对请求的数据:

                首先,红色区域:4字节长度的访问地址(Access Address);

                紧接着,白色区域:为数据传送方向(M表示集中器Master,S表示节点设备Slave)(Direction);

                紧接着,白色区域:数据接收状态(ACK Status);

                紧接着,黄色区域:1字节长度的数据类型(Data Type);

                紧接着,黄色区域:数据的头部(Data Header);

                紧接着,两个深黄色区域:表示配对失败相关的数据;

                紧接着,蓝色区域:3字节长度的CRC校验(CRC);

                紧接着,蓝色区域:1字节长度的接收的信号强度指示(RSSI);

                紧接着,蓝色区域:0-2字节的帧校验序列(FCS);

        由此可以确定是节电设备不支持标准的BLE配对的。

        2、研究BLE的白名单:

        BLE有两个白名单:DEFAULT_DISCOVERY_WHITE_LIST和DEFAULT_LINK_WHITE_LIST。

        我们研究一下DEFAULT_DISCOVERY_WHITE_LIST:TRUE的话只允许白名单里边的设备广播。

        相关函数:HCI_LE_ReadWhiteListSizeCmd()读白名单

                            HCI_LE_ClearWhiteListCmd()清掉白名单

                            HCI_LE_AddWhiteListCmd()添加白名单中一个项

                            HCI_LE_RemoveWhiteListCmd()删除白名单中一个项

        注:白名单掉电之后就消失了。所以在一直开机的情况下,还是有作用的。

        我们这里要用到SNV的函数了。

        可参照资料1、

        3、低功耗相关

        4、外部设备相关

        20141025 在串口服务使用的情况下,按键中断不能使用,只能用按键轮训,否则会导致IDATA溢出。

20141103用串口发数据的时候,一块数据要一次性发送,不要分多次。


捎带上:

        1、BLE 规定必须在从设备广播的情况下,主设备才能去连接,也就是说必须要经过一个发现设备的过程(扫描可去掉)才能进入到连接绑定阶段,如果之前绑定过,那么这次就是已经绑定,会节约时间。主设备只能同时连接3个从设备;

        2、使用TI的SmartRF Flash Programmer可通过CC Debugger将工程编译连接之后的.hex文件烧写入芯片中;

        3、使用CC Debugger,只用到电源、地、DC、DD和RST五根线。

        4、SBL参考。

        5、如果连接上之后会断,要首先考虑射频电路的问题,排除之后在考虑软件。

        6、由于CC2540的RAM有限,尽量不要定义很多变量,能用立即数的话用立即数,定义变量尽量用static,节省变量空间。

0 0
原创粉丝点击