亲爱的对话支持团队,
我已经成功地整合了uartSDK的示例ble_app_peripheral。我有能力在具有BLE功能时发送和接收数据。
然而,我试图在UART不繁忙时将我的板放入扩展睡眠模式以节省电力。换句话说,在延长睡眠模式时,有两件事应该能够唤醒董事会:
1-BLE计时器发送广告数据包。
2-UART Rx销。
我明白为此目的应采取以下步骤:
1-在睡觉之前,我必须禁用uart,并设置Rx引脚用于唤醒板。
2-从此引脚唤醒时,我应该激活UART并开始收听消息。(我明白我可能会失去一些数据!)
我对如何正确配置扩展睡眠模式和设置回调有点困惑。您能在这方面给我一些指导吗?(由于硬件限制,我不能在4线模式下使用UART,因此;我正在尝试使用山姆Rx引脚的两个目的。)
问候,
哈米德
设备:
嗨哈米德,
谢谢你的问题。我建议首先检查我们的睡眠模式从DA14531产品页面 - 对于您的方便链接提供如下:
http://lpccs-docs.dialog-semondile.com/da14531_sleep_mode+/index.html.
此外,SDK的ble_app_sleepmode示例将DA14531配置为永久休眠模式。为了唤醒它,您应该使用WAKEUP控制器。请检查app_button_enable()函数。
谢谢,PM_DIALOG.
你好,
谢谢你的回复。
我已经通读了教程,但是我找不到答案。
是否可以使用app_easy_timer.在长时间睡眠模式下?换句话说,这个计时器能唤醒长时间的睡眠吗?也就是说,董事会将处于睡眠状态,除非它需要为发送一个广告包或当uart忙时醒来。
问候,
哈米德
嗨哈米德,
对不起,我可能误解你的问题了。是的,你可以使用app_easy_timer(0来周期性地唤醒,因为这个API使用的是BLE定时器,所以它可以在睡眠模式下使用。
让我们假设你想要醒来并开始做广告。这可以通过设置计时器来实现,如下所示:
app_easy_timer(100,cb_my_timeout);
第一个参数指定在100 * 10 ms = 100ms = 1s后的超时计时器。此时回调CB_MY_Timerout()调用。
谢谢,PM_DIALOG.
你好,
非常感谢。这使我明白了这个问题的一部分。我还有一个问题,我对此表示怀疑:
我想用UART_RX_PIN.醒来以及计时器。更清晰,我想必须唤醒方式(定时器和提到的PIN)。
据我所知,在醒来的回调中我需要
然后我就可以开始了接收数据。之后我必须
返回正常运行。
我正确吗?在这样的操作过程中,有可能改变针的使用吗?
问候,
哈米德
嗨哈米德,
如果您想通过GPIO触发(UART RX)唤醒(UART RX),则应配置唤醒控制器并寄存该引脚。在SDK的BLE_APP_SLEEPMODE示例中,可以通过GPIO_BUTTON_PORT / _PIN唤醒设备。请检查wkupct_enable_irq()。在您的情况下,您应该使用UART RX引脚配置它。
请记住,当系统是睡眠模式时,所有包括UART的外围域都会关闭,因此当芯片睡眠时,它不可能具有UART活动。这意味着您将错过将第一个字符捕获到UART RX PIN才能唤醒它。
谢谢,PM_DIALOG.
到目前为止我已经完成了以下事情:
但是,当我在调试模式下运行代码时,在接收到唤醒引脚上的新字节时没有更改,并且设备保持广告。你能给我一些关于这个问题可能原因的建议吗?
问候,
哈米德
你好,
我想表明我已经成功实现了我所需的架构。谢谢你的时间。
问候,
哈米德
嗨哈米德,
很高兴你解决了你的问题,谢谢让我们知道。根据app_wkup_pin_enable(),低脉冲信号应该触发唤醒控制器。
如果您有任何其他问题,请提出一个新的论坛线程。
谢谢,PM_DIALOG.