CC2640 GATT_WriteCharValue的调用问题
在ble_sdk_2_02_01_18的central工程中,主设备从断电状态上电以后,连接peripheral,然后调用GATT_WriteCharValue往peripheral写数据,根据gatt.h里的函数描述,任务将会接收到GATT_MSG_EVENT事件。
在前两次调用GATT_WriteCharValue的时候,任务可以马上接收到GATT_MSG_EVENT事件,但是从第3次调用起,任务每次都会延迟1600ms(几乎都是这个值)才会接收到GATT_MSG_EVENT事件。
排除问题进行的分析和步骤:
1、把任务的堆栈加得足够大,问题仍然如此。
2、用比较原始的版本去操作,问题同样存在。
3、为了排查是否peripheral端的问题,我用light blue去连接peripheral,然后往里面写数据,light blue是可以马上收到回复的。
个人认为,是否SDK底层有什么bug,否则不会每次调用,都会精确到1600ms才能收到GATT_MSG_EVENT事件的。
目前手上这个项目已经完成了大部分工作了,但是遇到这个问题无法解决,请TI工程师帮帮忙找一下问题,不胜感激!
你如果用SDK的central image也会有这个问题吗?
C:\ti\simplelink\ble_sdk_2_02_01_18\examples\hex\cc2650em_simple_central_rel.hex
谢谢回复!
已经找到原因了,问题还是出现在peripheral中,这是最大连接间隔的问题,peripheral中设置了是800ms,把这个参数改小就行了。
但是为什么每次都是1600ms,或者用lightblue就不会有这样的问题,暂时没时间去研究。