我试图配置DA14531使用扩展的睡眠模式,但我遇到一个问题,唤醒后,如果数据接收/ UART,卡住的代码在一个循环中等待uart_is_busy_getf()返回false UART重新初始化时,看门狗定时器超时。我试图让它醒来时,CTS线路启用,以防止这一点。目前我做了以下工作:
在da1458x_config_advanced.h中定义了CFG_EXTERNAL_WAKEUP,因此EXT_WAKEUP被定义为1
在user_outer_setup .h中定义EXTERNAL_WAKEUP_GPIO_PORT为UART1 CTS端口,EXTERNAL_WAKEUP_GPIO_PIN为UART1 CTS引脚,external_wakeup_gpio_极性为0
GPIO_ConfigurePin(EXTERNAL_WAKEUP_GPIO_PORT, EXTERNAL_WAKEUP_GPIO_PIN, INPUT_PULLUP, PID_GPIO, false);
我是否遗漏了什么?有不同的方法来解决这个问题吗?
关键词:
设备:
嗨mark.palomer,
感谢您的在线问题和您对DA14531解决方案的兴趣。你能分享更多关于这方面的意见吗?你想从CTS中醒来还是从Rx中醒来?您是否在唤醒后和调用外围init()之前立即配置UART ?uart_is_busy_getf()只在uart_baudrate_setf()函数中调用。另外,你能检查一下Tx长时间在0吗?是否有可能探测UART信号并共享UART跟踪?你在用哪个项目?任何其他输入将帮助我们复制问题和找到路径原因将是非常有帮助的。
谢谢,PM_Dialog
我只需要它在收到数据时被唤醒。UART在app_on_ble_powered回调函数中配置,该回调函数在外围_init()之后调用。
我正在进行的项目是基于ble_app_profile项目从SDK,然而,我试图从DSPS项目添加更改到它。据我所知,UART需要RTS/CTS才能在睡眠模式下正常工作。然而,启用RTS/CTS似乎不起作用。您是否能够描述DSPS项目如何处理通过UART接收数据的情况,而它是休眠的?
嗨,马克,
DSPS的DA14531现在可用!您可以使用它,而不是在SDK的ble_app_profile中实现此功能。如果您需要通过CTS唤醒设备,您应该为此范围配置唤醒控制器。请查看ble_app_sleepmode示例,了解如何配置唤醒控制器。
然而,我的建议是使用DSPS。请查看产品页面的源代码:
//www.xmece.com/亚博电竞菠菜products/dialog-serial-port-service-dsps
在用户手册中,您将了解DSPS如何工作以及它如何处理传入数据。
谢谢,PM_Dialog