有个问题请教一下,使用CC2541的一个产品,具备OAD功能,当PTM各种频率参数之类调试OK后,工作正常,
但一旦使用OAD升级B程序后,又回到未调整的状态。看了一下,这些参数应该存储于NV_PAGES,我也定义了OAD_KEEP_NV_PAGES,
应该不会把那里刷掉,难道还有别的什么原因吗?我使用的是LARGE IMAGE OAD,设置同例程一下,无其它异常。
另外还有一个问题,我要求CC2541 1秒广播1次,中间可能也可能停止,也可能需要重新使能广播,一旦使能,则1秒1次,那么问题来了:
当使用论坛里HCI_LE_SetAdvParamCmd(advIntervalMin,
advIntervalMax,
advType,
ownAddrType,
directAddrType,
directAddr,
advChannelMap,
advFilterPolicy ); /* Now enable adv. */
HCI_LE_SetAdvEnableCmd(HCI_ENABLE_ADV);方法,一段时间后会停止广播,时间不一定,可能几个小时。
我自己的一个办法,设置GAPROLE_ADVERT_OFF_TIME,TGAP_LIM_DISC_ADV_INT_MIN,TGAP_LIM_DISC_ADV_INT_MAX和TGAP_LIM_ADV_TIMEOUT,可以达到效果,但一段时间后会死机,期间有1秒定时器一直工作,把1秒定时器取消,就不会死机了。关键是不定期,
要好几个小时可能才出现,头疼啊。帮忙出出主意,有没有朋友遇到过的?
万分感激!
CHARLIE LEI:
已经确定跟1秒定时器内的执行函数内容无关,只要不使能这个EVENT,就不会死机。
Yan:
CHARLIE,
PTM,你说的是TX ,RX 的测试参数?保存在NV 里?osal_snv_write()吗?
另外一个问题,下面的参数,你具体怎么设置的?
GAPROLE_ADVERT_OFF_TIME,TGAP_LIM_DISC_ADV_INT_MIN,TGAP_LIM_DISC_ADV_INT_MAX和TGAP_LIM_ADV_TIMEOUT,
CHARLIE LEI:
回复 Yan:
我说的PTM,指的是产品出厂前都要校正载波频率(由于晶振差异导致2.4G频偏)的,使用的是HCI_EXT_EnablePTMCmd()函数.
校正(出货前工厂完成)好之后,如果用OAD升级完程序,就又要重新校正,这么一来就失去升级的意义了,可能是由于升级后将那些校正值存放的区域刷掉了,我不确定.这个问题应该很普及,只要准备出货,都会遇到这个问题的.
另外一个问题,为什么论坛提供的1秒1次广播方案,在一段时间后会停止广播?此时按键启动广播也无效,一直不再广播,只能断电?
我用自己的方案,gapRole_AdvertOffTime=1000; GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MIN,800); GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MAX,800); GAP_SetParamValue(TGAP_LIM_ADV_TIMEOUT,1);
此方案可以持续广播,就是时间一长出现死机.
不知道我的描述能否理解,谢谢!