SDK版本: 2.20.00.49
硬件: CC2640R2F LaunchPad
我的project是在SDK Example: simple_peripheral_oad_offchip 的基础上来添加自己的应用.
异常现象:连接后有时会无法收发数据(目前我测试的project会有一半以上的的概率会出现这种现象)
我有用sniffer看了一下出现异常时的通信情况:连接之后, 在更新连接参数或LL_Channel_Map_Req时会开始出现异常, CC2640返回的空包中序列号一直是错的, 造成APP会不断重发. 出现这种现象之后,连接是一直保持着的, 连接不会断开, 但是一直在重发, 造成无法读写特征.
下面的5张图片,分别是Connection_Param_Update_Req出现异常(2张),
Channel_Map_Req出现异常(2张),
Connection_Param_Update_Req正常(1张)
project, 是在simple_peripheral_oad_offchip的基础上进行修改了以下几个部分:
①. 修改service(改为service下只有3个Characteristic);
②. 加了一些自己的BLE数据收发的代码.
③. 初始化部分增加了对几个外设的初始化: SPI, I2C, PWM, ADC(只是初始化而已, 程序中并没有使用这些外设)
在project中如果只做上面①和②这两处改动, 测试一直没有出现过上述问题. 当再加上③这处改动(增加对几个外设的初始化), 就会出现上述连接后无法读写特征的问题.
在附件的project中, 只需设置simple_peripheral_oad_offchip.c中下面4处条件编译即可开启/关闭 ③的改动. 目前这这边测试的现象是, 只要将这4处条件编译开启, 就会出现上述问题. 只要将这4处条件编译关闭, 就一切正常.
另外要说明一点, 我前几天曾经做过一些测试, 在project中只做上述①和③的改动, 不改②, 一切正常; 当加上②之后, 就开始出现问题. 所以感觉也不像是③中的几个外设造成的.
添加任务的方法都是用如下几处条件语句:
Yonghua Pan:
Hi, Tan,
初始化外设是另外的task还是在蓝牙的task里面? 如果是在蓝牙的task里面的话是不是用的默认1000,把栈的大小改大试一下看看。