FAQ_如何在BlueNRG-12的2.4G私有协议Remote Control 应用场景中添加低功耗模式
[复制链接]
本文作者:ST工程师Weisheng CHEN
点击下载pdf文档查看:
FQA-如何在BlueNRG-12的2.4G私有协议Remote Control 应用场景中添加低功耗模式及按键.pdf
(460.5 KB, 下载次数: 9)
关键词: BlueNRG-1/2, 2.4G私有协议, 低功耗
问题 :如何使用BlueNRG-1/2的2.4G私有协议技术,在Remote Control应用中实现低功耗模式和本机按键唤醒并发送数据包。
背景:客户使用BlueNRG-1/2芯片设计其2.4G私有协议产品,应用场景参照ST提供SDK中的Remote Control演示代码。TX端电池供电,需要实现低功耗模式,在按键按下的情况下及时发出命令包, 同时在规定时间间隔内(如2秒)TX/RX部分需要交换数据。RX端长供电,不要求低功耗模式。
ST工程师解答:客户的要求集中在TX端,客户可以参考ST提供的SDK中SLEEP_TX/RX演示代码,该演示代码本身已经实现了低功耗模式,并且在主环中调用函数HAL_RADIO_SendPacketWithAck时给出了下次唤醒的定时信息。所以只需要添加本机按键唤醒系统并发数据包的功能。根据ST 008V2评估板硬件资源,我们可以选用按键PUSH1(GPIO13)作为唤醒源,在按下PUSH1时唤醒系统并发送数据包。 软件部分可以在主环中做如下更改:
#if 1
BlueNRG_Sleep(SLEEPMODE_WAKETIMER, WAKEUP_IO13, WAKEUP_IOx_LOW << WAKEUP_IO13_SHIFT_MASK);
if ((GPIO_GetITPendingBit(GPIO_Pin_13) == SET) || ((wakeupFromSleepFlag) && (BlueNRG_WakeupSource() == WAKEUP_IO13)))
{
GPIO_ClearITPendingBit(GPIO_Pin_13);
ret = HAL_RADIO_SendPacketWithAck(FREQUENCY_CHANNEL,TX_WAKEUP_TIME1, sendData, receivedData, RX_TIMEOUT_ACK, TxCallback);
if(ret != SUCCESS_0) {
printf("WAKEUP ERROR %d (%d)\r\n",ret, packet_counter);
}
sleep_timer();
}
#else
BlueNRG_Sleep(SLEEPMODE_WAKETIMER, 0, 0);
#endif
|