尊敬的Dialog支持团队:
我已经成功地集成了uart使用SDK的示例ble_app_peripheral.我有能力发送和接收数据,同时拥有BLE功能。
然而,我试图把我的板进入延长睡眠模式时,UART不忙,以节省电力。换句话说,两个东西应该能够唤醒板在延长睡眠模式:
1-BLE计时器发送广告包。
2-UART Rx销.
我理解为此目的应采取以下步骤:
1-在睡觉之前,我必须禁用uart,并设置Rx引脚用于唤醒板子。
2-当有从这个引脚唤醒,我应该激活uart并开始监听消息。(我知道我可能会丢失一些数据!)
我有点不知道如何正确配置扩展睡眠模式和设置回调。你能给我一些指导吗?(由于硬件的限制,我不能在4线模式下使用UART,因此;我试图使用山姆Rx针为两种目的。)
问候,
哈米德
设备:
嗨哈米德,
谢谢你的问题。我建议首先查看DA14531产品页面上的睡眠模式教程——为了方便你,下面提供了链接:
http://lpccs-docs.dialog-semiconductor.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计时器,所以它可以在睡眠模式下使用。
假设你想一觉醒来就开始做广告。这可以通过如下所示设置计时器来实现:
cb_my_timeout app_easy_timer (100);
第一个参数指定计时器在100 * 10 ms = 1000ms = 1s之后超时。此时会调用回调cb_my_timerout()。
谢谢,PM_Dialog
你好,
非常感谢。这让我明白了这个问题的某些部分。我还有一个问题我不太确定
我想用UART_Rx_PIN为了唤醒和定时器。更明确地说,我想要有唤醒的方式(计时器和提到的引脚)。
据我所知,在唤醒回调中我需要
然后就可以开始了接收数据.之后我必须
恢复正常的操作。
我正确吗?在这样的操作中,有可能改变pin的使用吗?
问候,
哈米德
嗨哈米德,
如果你想通过GPIO触发器(UART Rx)唤醒,你应该配置WAKEUP控制器并注册该引脚。在SDK的ble_app_sleepmode示例中,设备可以通过GPIO_BUTTON_PORT /_PIN唤醒。请检查wkupct_enable_irq()。在您的情况下,您应该使用UART Rx引脚配置它。
请记住,当系统处于睡眠模式时,包括UART在内的所有外围域都将关闭,因此在芯片休眠时不可能有UART活动。这意味着您将错过为唤醒UART Rx引脚而固定的第一个字符。
谢谢,PM_Dialog
到目前为止,我已经做了以下工作:
然而,当我在调试模式下运行代码时,在唤醒引脚上接收到一个新字节时没有任何变化,设备继续发布广告。关于这个问题的可能原因,你能给我一些建议吗?
问候,
哈米德
你好,
我想指出的是,我已经成功地实现了我想要的架构。谢谢你抽出时间。
问候,
哈米德
嗨哈米德,
很高兴你解决了你的问题,谢谢让我们知道。根据app_wkup_pin_enable(),一个低脉冲信号应该触发唤醒控制器。
如果你有任何其他问题,请在论坛上提出来。
谢谢,PM_Dialog