This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2640R2F 添加任务后BLE会出现无法读写数据的情况

Other Parts Discussed in Thread: CC2640R2F, CC2640

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中只做上述①和③的改动, 不改②, 一切正常;  当加上②之后, 就开始出现问题.  所以感觉也不像是③中的几个外设造成的.

添加任务的方法都是用如下几处条件语句: