wake on radio示例中:
RF_cmdPropRxSniff.startTime += WOR_WAKE_UP_INTERVAL_RAT_TICKS(WOR_WAKEUPS_PER_SECOND);
通过修改参数由 #define WOR_WAKE_UP_INTERVAL_RAT_TICKS(x) \((uint32_t)(4000000*(1.0f/(x) – (WOR_WAKE_UP_MARGIN_S))))更改为
#define WOR_WAKE_UP_INTERVAL_RAT_TICKS(x) \((uint32_t)(4000000*(10.0f/(x) – (WOR_WAKE_UP_MARGIN_S))))
是不是由原来没1s唤醒几次,更改为10S。唤醒几次。
但是测试发现会出现无法通信上。
还有个问题,在个唤醒参数调用RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxSniff, RF_PriorityNormal, &callback, RF_EventRxEntryDone);后是再程序是阻塞再这里吗?
Viki Shi:
原来的wake up interval是preamble length (500 ms) – WOR_WAKE_UP_MARGIN_S (5 ms) = 495 ms
#define WOR_PREAMBLE_TIME_RAT_TICKS(x) \((uint32_t)(4000000*(1.0f/(x))))/* Wake-on-Radio mode. Can be:* - RSSI only* - PQT, preamble detection* - Both, first RSSI and then PQT if RSSI*/ #define WOR_MODE CarrierSenseMode_RSSIandPQT/* Threshold for RSSI based Carrier Sense in dBm */ #define WOR_RSSI_THRESHOLD((int8_t)(-111))/* Macro used to set actual wakeup interval */ #define WOR_WAKE_UP_MARGIN_S 0.005f #define WOR_WAKE_UP_INTERVAL_RAT_TICKS(x) \((uint32_t)(4000000*(1.0f/(x) - (WOR_WAKE_UP_MARGIN_S))))
user6056718:
回复 Viki Shi:
那我想怎么拉长休眠的周期,通过修改那个参数
Viki Shi:
回复 user6056718:
The wake-up interval is set using the WOR_WAKEUPS_PER_SECOND define at the top of the rfWakeOnRadioRx.c file. Make sure that this is set to the same in both the RX and TX part of the Wake-on-Radio example.【值为1或者2,对应1s和500ms】
user6056718:
回复 Viki Shi:
这个我修改过,是可以。但是我想超过1s可以吗
Viki Shi:
回复 user6056718:
还是修改WOR_WAKEUPS_PER_SECOND的值,比如说10s就改为0.1,具体请看: blog.csdn.net/…/83616512
user6056718:
回复 Viki Shi:
设置完后,调用RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropRxSniff, RF_PriorityNormal, &callback, RF_EventRxEntryDone); 在这10s内程序是不是阻塞在这里
user6056718:
回复 Viki Shi:
是否可以设置为非阻塞的wor
Viki Shi:
回复 user6056718:
可以,改用RF_postCmd,RF_runCmd()其实就是 post + pend
user6056718:
回复 Viki Shi:
直接修改RF_postCmd 后WOR运行不起啦,是不是去需要加入定时功能
user6056718:
回复 Viki Shi:
是否需要在一定间隔调用RF_postCmd,或者是要等回调函数返回结果后再调用RF_postCmd