DA14681 UART能否在延长睡眠模式下工作

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
13个职位/0个新职位
最后一篇文章
古香
离线
最后一次见到:4天18小时前
已加入:2017-05-12 04:18
DA14681 UART能否在延长睡眠模式下工作

嗨,dialog
当DA14681处于延长睡眠模式时,它能否通过uart接收中断唤醒并从收发器接收数据字节?如何设置?

设备:
LC\U对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2016-09-19 23:20
你好,古翔,

你好,古翔,

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

然而,有一个解决办法,你必须非常小心,这不是一个正式推荐的。

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

但是,您必须非常小心地管理以下内容:波特率、去抖动和唤醒延迟。

最好的,
信用证

古香
离线
最后一次见到:4天18小时前
已加入:2017-05-12 04:18
嗨,LC

嗨,LC
你能给我一个演示代码来学习吗?

LC\U对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2016-09-19 23:20
你好,古翔,

你好,古翔,

此方法用于下面提到的无代码项目。以user\u prepare\u sleep()函数为起点。

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

最好的,
信用证

古香
离线
最后一次见到:4天18小时前
已加入:2017-05-12 04:18
嗨,LC

嗨,LC
档案显示对我来说是“受限的”。你能允许我下载吗?
我的电子邮件:414095539@qq.com

LC\U对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2016-09-19 23:20
你好,古翔,

你好,古翔,

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

最好的,
信用证

古香
离线
最后一次见到:4天18小时前
已加入:2017-05-12 04:18
嗨,LC

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

LC\U对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2016-09-19 23:20
你好,古翔,

你好,古翔,

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

最好的,
信用证

古香
离线
最后一次见到:4天18小时前
已加入:2017-05-12 04:18
嗨,LC,

嗨,LC,
我更新了我的个人资料。请再检查一遍。

LC\U对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2016-09-19 23:20
古翔你好,

古翔你好,

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

最好的,
信用证

古香
离线
最后一次见到:4天18小时前
已加入:2017-05-12 04:18
嗨,LC,

嗨,LC,
现在它可以通过uart rx引脚从延长睡眠模式中唤醒。但有时在系统唤醒后,它会进入“HW\ U UART\ U INT\ U BUSY\ U DETECTED”中断。虽然我可以使用“hw\u uart\u transmit\u fifo\u empty(uart)”退出“hw\u uart\u INT\u BUSY\u DETECTED”中断,但我发现波特率不正确,导致错误的字符传输。如何解决这个问题?

LC\U对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2016-09-19 23:20
你好,古翔,

你好,古翔,

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

在你醒来之后,你就可以启动UART了。如果您的实现正在执行此操作,您仍然可以看到HW\u UART\u INT\u BUSY\u DETECTED中断。请确认。

最好的,
信用证

古香
离线
最后一次见到:4天18小时前
已加入:2017-05-12 04:18
嗨,LC

嗨,LC
是的,我可以将UART Rx引脚配置为GPIO唤醒引脚,并可以唤醒系统。现在它在大多数情况下运行良好。但我没有只发送一个@字符。因为有时只有一个@字符是不够的时钟周期醒来。但当我发送一个长字符串(超过20字节@字符,波特率38400)唤醒系统时,更容易发生“HW\u UART\u INT\u BUSY\u DETECTED”中断,似乎波特率是错误的。
配置代码如下:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void console\u uart\u leave\u from\u sleepmode(void)
{
hw\u wkup\u set\u pin\u state(UART\u RX\u PORT,UART\u RX\u pin,false);
hw\u gpio\u set\u pin\u功能(UART\u RX\u端口、UART\u RX\u pin、hw\u gpio\u MODE\u INPUT\u PULLUP,
HW_GPIO_FUNC_UART_RX);// RX引脚enable
控制台\u uart \u init();
uart\u rx\u int\u enable(硬件UART1,真);
}
void console\u uart\u prepare\u for\u sleepmode(void)
{

hw_wkup_init(空);
hw_wkup_reset_counter();
hw\u wkup\u set\u debounce\u time(0);
hw_wkup_set_counter_threshold (1);

硬件gpio\设置\引脚\功能(硬件gpio\端口\ 4、硬件gpio\引脚\ 7、硬件gpio\模式\输入\上拉、硬件gpio\功能\ gpio);
hw\u wkup\u set\u pin\u state(hw\u GPIO\u PORT\u 4,hw\u GPIO\u pin\u 7,true)//将rx引脚配置为唤醒引脚
hw\ U wkup\ U set\ U pin\ U触发器(hw\ U GPIO\ U PORT\ U 4、hw\ U GPIO\ U pin\ U 7、hw\ U wkup\ U pin\ U STATE\ U LOW);
hw_wkup_register_interrupt (wkup_handler configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);

硬件\ gpio \设置\引脚\功能(UART \ U RX \ U端口、UART \ U RX \ U引脚、硬件\ gpio \ U模式\ U输入,
HW_GPIO_FUNC_GPIO);//RX引脚禁用
uart\ U rx\ U int\ U enable(HW\ U UART1,false);
uart_clock_disable();
}