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

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
13个员额/ 0个新员额
最后发表
提到
离线
最后看到:1天17小时前
加入:2017-05-12 04:18
DA14681 UART能否在扩展睡眠模式下工作

嗨,对话框
当DA14681处于扩展睡眠模式时,它能通过uart唤醒接收中断并从传输器接收数据字节吗?如何设置呢?

设备:
LC_Dialog
离线
最后看到:2个月4个星期前
工作人员
加入:2016-09-19 23:20
你好提到,

你好提到,

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

然而,有一个你必须非常小心的解决方案,它不是官方推荐的一个。

您可以在进入睡眠之前将UART引脚映射到用于外部唤醒的GPIO,并将其用作唤醒的触发器,然后在唤醒后将该引脚映射回UART,以通过UART接收数据。

然而,您必须非常小心地管理以下事情:波特率,反弹和唤醒延迟。

最好的
信用证

提到
离线
最后看到:1天17小时前
加入:2017-05-12 04:18
你好,信用证

你好,信用证
你能给我一个演示代码来学习吗?

LC_Dialog
离线
最后看到:2个月4个星期前
工作人员
加入:2016-09-19 23:20
你好提到,

你好提到,

此方法在下面引用的无代码项目中使用。以user_prepare_sleep()函数为起点。

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

最好的
信用证

提到
离线
最后看到:1天17小时前
加入:2017-05-12 04:18
你好,信用证

你好,信用证
文件显示“受限制”。能允许我下载吗?
我的电子邮件:414095539 @qq.com

LC_Dialog
离线
最后看到:2个月4个星期前
工作人员
加入:2016-09-19 23:20
你好提到,

你好提到,

这是由于在下载文件之前需要接受许可协议。请接受许可,您应该能够在这个支持门户上下载文件。

最好的
信用证

提到
离线
最后看到:1天17小时前
加入:2017-05-12 04:18
你好,信用证

你好,信用证
我已经接受了许可协议并提交了,但是它没有回复我,我仍然无法访问下载文件。

LC_Dialog
离线
最后看到:2个月4个星期前
工作人员
加入:2016-09-19 23:20
你好提到,

你好提到,

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

最好的
信用证

提到
离线
最后看到:1天17小时前
加入:2017-05-12 04:18
你好,信用证,

你好,信用证,
我更新了我的个人资料。请再检查一下。

LC_Dialog
离线
最后看到:2个月4个星期前
工作人员
加入:2016-09-19 23:20
嗨提到,

嗨提到,

你现在应该可以下载内容了。

最好的
信用证

提到
离线
最后看到:1天17小时前
加入:2017-05-12 04:18
你好,信用证,

你好,信用证,
现在它可以通过uart rx引脚从扩展睡眠模式中唤醒。但有时会在系统唤醒后进入“HW_UART_INT_BUSY_DETECTED”中断。虽然我可以使用“hw_uart_transmit_fifo_empty(uart)”来退出“HW_UART_INT_BUSY_DETECTED”中断,但我发现波特率不正确,导致错误的字符传输。如何解决这个问题?

LC_Dialog
离线
最后看到:2个月4个星期前
工作人员
加入:2016-09-19 23:20
你好提到,

你好提到,

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

在您唤醒之后,您就可以启用UART。您的实现在这样做的同时仍然看到HW_UART_INT_BUSY_DETECTED中断。请证实。

最好的
信用证

提到
离线
最后看到:1天17小时前
加入:2017-05-12 04:18
你好,信用证

你好,信用证
是的,我可以配置UART Rx引脚作为GPIO唤醒引脚,可以唤醒系统。现在它在大多数情况下都很有效。但是我并不是只发送了一个@字符。因为有时候一个@字符不足以唤醒时钟周期。但是当我发送一个长字符串(超过20字节@字符,波特率38400)来唤醒系统时,很容易发生“HW_UART_INT_BUSY_DETECTED”中断,似乎波特率是错误的。
配置代码如下:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
空白console_uart_leave_from_sleepmode(空白)

hw_wkup_set_pin_state (UART_RX_PORT UART_RX_PIN,假);
hw_gpio_set_pin_function (UART_RX_PORT UART_RX_PIN HW_GPIO_MODE_INPUT_PULLUP,
HW_GPIO_FUNC_UART_RX)
console_uart_init ();
uart_rx_int_enable (HW_UART1,真实);

空白console_uart_prepare_for_sleepmode(空白)

hw_wkup_init(空);
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假);
uart_clock_disable ();