DA14681 UART在扩展睡眠模式下工作

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
13个帖子/ 0新
最后一篇
古祥
离线
最后一次露面:6天前1周
加入:2017-05-12 04:18
DA14681 UART在扩展睡眠模式下工作

嗨,对话
当DA14681在扩展睡眠模式下,可以通过UART唤醒,接收中断并从转发器接收数据字节?以及如何设置它?

设备:
lc_dialog
离线
最后一次露面:2 weeks 1 day ago
职员
加入:2016-09-19 23:20
你好古乡,

你好古乡,

UART硬件在扩展睡眠模式下关闭,因此您无法使用它来唤醒系统。

但是,有一个解决方法,您必须非常谨慎,并且不是正式推荐的解决方法。

您可以在睡眠前将UART PIN映射到外部唤醒的GPIO,并将其用作唤醒触发器,然后将PIN映射回UART以接收UART的数据。

但是,您必须非常谨慎地管理以下事项:波特拉特,去抖和唤醒延迟。

最好的,
LC.

古祥
离线
最后一次露面:6天前1周
加入:2017-05-12 04:18
嗨,LC.

嗨,LC.
can you give me a demo code to learn it?

lc_dialog
离线
最后一次露面:2 weeks 1 day ago
职员
加入:2016-09-19 23:20
你好古乡,

你好古乡,

此方法用于下面参考的无附属项目。看看user_prepare_sleep()函数作为起点。

https://support.dialog-seminiondionder.com/connectivity/reference-design/smartbond-codeless-serial-link.

最好的,
LC.

古祥
离线
最后一次露面:6天前1周
加入:2017-05-12 04:18
嗨,LC.

嗨,LC.
该文件对我显示了“限制”。可以给我下载它的许可吗?
my email:414095539@qq.com.

lc_dialog
离线
最后一次露面:2 weeks 1 day ago
职员
加入:2016-09-19 23:20
你好古乡,

你好古乡,

It is due to the license agreement needs to be accepted before downloading file. Please accept the license and you should be able to download the files on this support portal.

最好的,
LC.

古祥
离线
最后一次露面:6天前1周
加入:2017-05-12 04:18
嗨,LC.

嗨,LC.
I have accepted the license agreement and submited it , but it didn't reply me and still I can't get access to download the file.

lc_dialog
离线
最后一次露面:2 weeks 1 day ago
职员
加入:2016-09-19 23:20
你好古乡,

你好古乡,

您是否可以在您的个人资料中提供有效的地址和其他详细信息。我们需要一些有效的信息来提供对门户上的内容的访问。

最好的,
LC.

古祥
离线
最后一次露面:6天前1周
加入:2017-05-12 04:18
嗨LC,

嗨LC,
I have updated my profile . Please check it again.

lc_dialog
离线
最后一次露面:2 weeks 1 day ago
职员
加入:2016-09-19 23:20
古兴,

古兴,

您应该能够立即下载内容。

最好的,
LC.

古祥
离线
最后一次露面:6天前1周
加入:2017-05-12 04:18
嗨LC,

嗨LC,
现在它可以通过UART RX引脚从扩展睡眠模式唤醒。但有时它将在系统唤醒后输入“HW_UART_INT_BUSY_DETECTICT”中断。虽然我可以使用“hw_uart_transmit_fifo_empty(uart)”退出“hw_uart_int_busy_detected”中断,但我发现波兰特是不正确的,导致了错误的字符传输。如何解决这个问题呢?

lc_dialog
离线
最后一次露面:2 weeks 1 day ago
职员
加入:2016-09-19 23:20
你好古乡,

你好古乡,

所以首先,您将在进入睡眠模式之前将UART RX引脚配置为GPIO,并且您将在此引脚上启用唤醒中断,其中1个事件计数。为了唤醒您发送@字符的系统,可以将引脚拉低,以获得足够的时钟周期。

唤醒后,您可以启用UART。您的实现是否执行此操作,仍然是您看到HW_UART_INT_BUSY_DETCETCTION中断。请确认。

最好的,
LC.

古祥
离线
最后一次露面:6天前1周
加入:2017-05-12 04:18
嗨,LC.

嗨,LC.
是的,我可以将UART RX引脚配置为GPIO唤醒引脚,可以唤醒系统。现在它在大多数情况下工作得很好。但我没有只发送@字符。因为有时只有一个@字符是不够的时钟周期才能唤醒。但是当我发送一个长字符串(超过20个字节@字符,Baudrate 38400)唤醒系统时,它更容易发生“HW_UART_INT_BUSY_DETECTICT”中断,似乎波特丽是错误的。
配置的代码如下所示:
//////// //////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////
void console_uart_leave_from_sleepmode(void)
{
hw_wkup_set_pin_state(uart_rx_port,uart_rx_pin,false);
hw_gpio_set_pin_function(uart_rx_port,uart_rx_pin,hw_gpio_mode_input_pullup,
HW_GPIO_FUNC_UART_RX);// RX pin enable
console_uart_init();
UART_RX_INT_ENABLE(HW_UART1,TRUE);
}
void console_uart_prepare_for_sleepmode(void)
{

hw_wkup_init(NULL);
hw_wkup_reset_counter();
hw_wkup_set_debounce_time(0);
hw_wkup_set_counter_threshold(1);

hw_gpio_set_pin_function(hw_gpio_port_4,hw_gpio_pin_7,hw_gpio_mode_input_pullup,hw_gpio_func_gpio);
hw_wkup_set_pin_state(hw_gpio_port_4,hw_gpio_pin_7,true); //配置Rx引脚作为唤醒引脚
hw_wkup_set_pin_trigger(hw_gpio_port_4,hw_gpio_pin_7,hw_wkup_pin_state_low);
hw_wkup_register_interrupt (wkup_handler configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);

hw_gpio_set_pin_function(uart_rx_port,uart_rx_pin,hw_gpio_mode_input,
hw_gpio_func_gpio); // rx引脚禁用
UART_RX_INT_ENABLE(HW_UART1,FALSE);
uart_clock_disable();
}