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,节省变量空间。
- CC2540 BLE开发笔记
- BLE:CC2540学习笔记
- android ble 蓝牙4.0 cc2540 开发(一)
- iOS蓝牙4.0(BLE)-LightBlue与cc2540开发板通信
- iOS蓝牙4.0(BLE)-LightBlue与cc2540开发板通信
- TI CC2540 BLE
- BLE CC2540之ADC
- Android BLE开发笔记
- android ble 开发笔记
- iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
- CC2540 CC2541 蓝牙4.0BLE开发板实现 空中飞鼠、体感游戏手柄【多图】
- iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
- [置顶] iOs LightBlue与cc2540 BLE开发板之间的通信实验 [原创, 多图]
- 【笔记】蓝牙BLE开发记录
- 【BLE】CC2541与CC2540的区别
- <蓝牙BLE>cc2540主机获取数据包
- <蓝牙BLE>cc2540如何添加特征值
- <蓝牙BLE>cc2540主机读RSSI值
- Android TabHost 选项卡 滑动activity进行切换选项卡
- 如何安装和设置Cocos Code IDE
- pywind安裝出錯
- .NET 客户端连接Redis 介绍
- Oracle ORA-12154: TNS:could not resolve the connect identifier specified(不积跬步,无以至千里)
- CC2540 BLE开发笔记
- oracle存储过程20140910
- JS 实现字符替换
- reentrant(可重入)函数与thread safe(线程安全)函数的区别
- 命名空间
- 浏览器缓存相关的Http头介绍:Expires,Cache-Control,Last-Modified,ETag
- OpenCV实现图像物体轮廓,前景背景,标记,并保存。
- Linux中的Printk与dmesg功能(模块编译,printk无法打印信息)
- C++常用关键字(C++11更新)