芯片是CC2640R2FRGZ
SDK版本是simplelink_cc2640r2_sdk_4_30_00_08
CCS版本是10.1.0.00010
使用 C:\ti\simplelink_cc2640r2_sdk_4_30_00_08\examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral 这个例程
设置 FlashROM_StackLibrary_RCOSC 为active
将周期事件的开启Util_startClock(&periodicClock)
放在SimplePeripheral_init()后,并调整周期为1000ms
并在
if (events)
{}
中括号内作如下修改
if (events & SBP_PERIODIC_EVT)
{
Util_startClock(&periodicClock);
Display_print0(dispHandle, 0, 0, "BLE 111");
// Perform periodic application task
//SimplePeripheral_performPeriodicTask();
}
Display_print0(dispHandle, 0, 0, "BLE 222");
增加添加了uart的输出
然后编译成功
然后分别烧录进几个个板子中,出现2种情况
第一种正常运行,在串口输出advertising后该simpleperipheral可被scan到且uart数据有持续输出,重新上电或者复位都可正常
uart打印数据如下
Initialized
Advertising
BLE 222
BLE 222
BLE 111
BLE 222
BLE 111
BLE 222
BLE 111
BLE 222
…..持续下去
第二种情况是,烧录完成后的第一次上电可正常,
但是在重新上电或者复位后串口输出advertising后卡死,同时只能在板子上电瞬间scan到该simpleperipheral一下,后续再也无法scan到,同时uart在输出一定数据后也再无输出,应该是无法进入周期事件,奇葩的是连看门狗也不能复位这种情况(加入看门狗后,还是烧录进这几个板子,之前出于第一种情况的板子在看门狗超时后会自行复位,但是出于第二种情况的板子还是处于一直卡死的情况)
uart打印数据如下
Initialized
Advertising
BLE 222
BLE 222
然后就是什么没有了,复位还是一样的情况
请问有哪些可能会造成这中情况?
YiKai Chen:
是你自己的板子還是TI LaunchPad? 用沒有修改的原始例程會卡住嗎?
Viki Shi:
如果我理解正确,同样的软件,有的板子上可以运行,有的板子上出现异常,是这样吗? 是否排查过板子硬件的区别?
lily:
回复 YiKai Chen:
用的是自己画的板子,没有外接32.768Khz晶振,所以要修改一下工程的configuration,然后就做了上述的修改,其他的没有改动
lily:
回复 Viki Shi:
是的,是同样的软件,在不同的板子上有的异常有的正常,板子是有差异的,是2个版本
排查硬件没有思路,是全部比较么还是有哪些元件可能行比较大?
YiKai Chen:
回复 lily:
建議先排查2个版本硬件有差异的部分
Viki Shi:
回复 lily:
建议按照下面的文档进行硬件排查:
www.ti.com/…/swra640e.pdf
lily:
回复 YiKai Chen:
硬件差异可以排查,只是当我烧录central的例程就又可以正常运行,可以扫描连接从机了,请问这又是什么情况呢
lily:
回复 Viki Shi:
硬件差异可以排查,只是当我烧录central的例程就又可以正常运行,可以扫描连接从机了,请问这又是什么情况呢
Viki Shi:
回复 lily:
因为simple central例程不能省略32k晶振,怀疑你的问题跟晶振相关,建议重点排查
The 32 kHz crystal-less feature is supported on CC13x2/CC26xx wireless MCUs implementing the Bluetooth Low Energy peripheral, observer and broadcast (beacon) roles only. Thus, all central role or master devices must use the 32 kHz crystal oscillator.