微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2541蓝牙设备不广播

cc2541蓝牙设备不广播

时间:10-02 整理:3721RD 点击:

情况是这样的,用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最新的协议栈,协议栈不会有问题。也不用在这上面纠结。

希望我的回答可以帮到你。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top