cc2541有什么办法定位BLE不广播的原因?

2019-07-18 15:23发布

用cc2541做了个数据记录产品,APP设置了参数后2541调用GAPRole_TerminateConnection断开连接,开始将采集回来的数据保存到2541的flash(这段时间ble应在广播状态),至采集结束自动关机(2541进入低功耗状态)。但是现在刚进入采集状态时可以搜索的到ble的广播,在隔一段不确定的时间后(不一定在什么时候,似乎是随机的)就会搜索不到ble的广播,但数据采集还在继续直至正常结束。
在采集的这段时间里只有两个事件在运行:Notify发送数事件(此时有只是在轮询,并没有Notify)和数据记录的事件。用户程序并没有调用蓝牙相关的API,flash数据记录函数有用到HAL_ENTER_CRITICAL_SECTION、HAL_EXIT_CRITICAL_SECTION屏蔽中断和更改MEMCTR寄存器操作。
怀疑可能和中断(便不可屏蔽中断?)有关,不确定,也许是其他问题。ble协议栈封装起来了也不好跟踪下去,请问有什么办法定位BLE不广播的原因?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
广电总局
1楼-- · 2019-07-18 17:43
理论上,CC2541上最基本的的状态集应该是 开机->开始广播->如果被连接,则退出广播状态,进入连接状态->连接断开自动进入广播状态 这样变化的
发烧友推温针
2楼-- · 2019-07-18 23:23
你的这个问题我也怀疑程序跑到其他地方去了,建议你调试的时候还是把串口引出来。

在广播连接断开,采集开始结束,周期的中断内设置串口输出一串数据,这样比较容易定位程序跑到哪里去。

至于下面的协议栈,使用TI最新的协议栈,协议栈不会有问题。也不用在这上面纠结。

一周热门 更多>