cc2541蓝牙设备不广播
情况是这样的,用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不广播的原因?
没头绪啊、、、
代码是基于什么例程修改的?
理论上,CC2541上最基本的的状态集应该是 开机->开始广播->如果被连接,则退出广播状态,进入连接状态->连接断开自动进入广播状态 这样变化的
不好意思,前段时间忙别的去了
用SimpleBLEPeripheral工程改的
flash操作和关中断是否会影响协议栈广播?
程序是在flash上跑还是在sram上?
广播状态下debug暂停再运行广播也会没掉
@xin luo1 我也遇到类似问题,请问您的问题是否已解决?可否共享一些经验?电话 13811183761
程序是在flash中运行的。
数据采集放在和主机连接后执行如何?
你好,
你的这个问题我也怀疑程序跑到其他地方去了,建议你调试的时候还是把串口引出来。
在广播连接断开,采集开始结束,周期的中断内设置串口输出一串数据,这样比较容易定位程序跑到哪里去。
至于下面的协议栈,使用TI最新的协议栈,协议栈不会有问题。也不用在这上面纠结。
希望我的回答可以帮到你。