关于CC1310模块始用Radio不能睡眠的问题
我调用 extern RF_EventMask RF_runCmd(RF_Handle h, RF_Op* pOp, RF_Priority ePri, RF_Callback pCb, RF_EventMask bmEvent);这个接口,如果把 RF_Op* pOp这个参数设为小于余或等于416M的时候CC1310就能睡眠下去,设为大于416M的时候CC1310就不睡眠了,我们要用的通讯频率为433M。请求各位大神指教该如何解决!代码如下:
void vSetRadioFreq(rfc_CMD_FS_t *ptFs, float fWorkFreq)
{
uint16_t usInteger;
float fFract;
usInteger = (uint16_t)fWorkFreq;
fFract = (float)(fWorkFreq - (float)usInteger);
ptFs->frequency = usInteger;//整数部分=整数.
ptFs->fractFreq = (uint16_t)(fFract*65535.0);//小数部分=小数部分*65535;
// ptFs->frequency = 416;//整数部分=整数.
// ptFs->fractFreq = 0.920013;//小数部分=小数部分*65535;
/* Set frequency */
RF_runCmd(rfHandle, (RF_Op*)ptFs, RF_PriorityNormal, &callback, 0);
}
麻烦各位大前辈帮忙看看,谢谢!
用Radio不能睡眠?没太理解您的意思
我用CC1310做一个需要有低功耗的产品,需要用到Radio功能,当我初始化Radio任务后CC1310就不睡眠了,经我层层查找原因,最终发现是调用extern RF_EventMask RF_runCmd(RF_Handle h, RF_Op* pOp, RF_Priority ePri, RF_Callback pCb, RF_EventMask bmEvent);这个接口设备通讯频率造成的,把这个接口屏蔽后CC1310就能睡眠了!
您可以用SmartRF 导入一个433Mhz的试一下WOR的demo。
// Frequency Synthesizer Programming Command rfc_CMD_FS_t RF_cmdFs = { .commandNo = 0x0803, .status = 0x0000, .pNextOp = 0, // INSERT APPLICABLE POINTER: (uint8_t*)&xxx .startTime = 0x00000000, .startTrigger.triggerType = 0x0, .startTrigger.bEnaCmd = 0x0, .startTrigger.triggerNo = 0x0, .startTrigger.pastTrig = 0x0, .condition.rule = 0x1, .condition.nSkip = 0x0, .frequency = 0x01B1, .fractFreq = 0xEB85, .synthConf.bTxMode = 0x0, .synthConf.refFreq = 0x0, .__dummy0 = 0x00, .__dummy1 = 0x00, .__dummy2 = 0x00, .__dummy3 = 0x0000, };
WOR路径为:C:\ti\simplelink_cc13x0_sdk_1_00_00_13\examples\rtos\CC1350_LAUNCHXL\drivers
这个Demo也睡不下去
参考一下这个:https://e2e.ti.com/support/wireless_connectivity/proprietary_sub_1_ghz_simpliciti/f/156/t/613823
你可以在线跟一下
看看这条命令能执行成功吗?
也就是说,程序能跑到rf_runcmd的下一条语句吗?
这条指令应该是能执行的吧,我设置频率后设备间都能正常通讯了,只是模块不睡眠而已,如果没执行这条命令的话设备之间应该是不能正常通讯的呀
你是通过什么手段来判断是否进入休眠的呢?
测模块的工作电流,模块睡眠后电流在10uA以内,几乎没有电流,没睡眠的时候模块工作电流有4~5mA左右
您好,请问一下,你是怎么让cc1310进入睡眠状态的,是Task_sleep()吗?这个应该不是睡眠吧?