⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4帖/ 0新
最后一篇
马里奥
离线
最后一次露面:3年10个月前
加入:2017年3月30日13:56
UART.

嗨对话框,
我试图建立一个periphal设备的UART通信。后来,我想通过BLE发送接收数据到另一个设备 - 我选择了ble_multi_link演示的基础上。
这怎么可以读出从UART数据不止一次?是否有可能接收时出现中断在RX输入数据?

我试着下面的代码,但它会导致重复复位。

ble_multi_link_task(无效* PARAMS){


为了(;;) {
uart_device开发;
INT RX_DATA;
dev的= ad_uart_open(SERIAL2);
ad_uart_bus_acquire(DEV);
RX_DATA = ad_uart_read(DEV,BUF,4,OS_EVENT_FOREVER);
ad_uart_bus_release(DEV);
}

}

谢谢!

设备:
mt_dialog.
离线
最后一次露面:1个月2周前
职员
加入:2015-06-08 11:34
你好马里奥,

你好马里奥,

关于代码,您已经粘贴的几点意见,多链路是媒体链接,以重新定位中的printf()functionallity使用UART2模块(该CONFIG_RETARGET是定义用于配置和printf()的functionallity重定向到UART2),也是本重新定位,以便据我所知,您是由底层驱动程序,并通过适配器访问相同periheral不使用的适配器,但LLD驱动程序,这不会在目前反对的问题,但如果设备得到用数据强调,这可能会造成问题。

您也可以放置初始化代码在任务为(;;)循环开始UART接口,这意味着,每一次本作(;;)执行后执行同样的功能(这不是正在发生,虽然因为你是堵与UART超时任务的执行)。此外,我想你已经放置在片断已附着看门狗功能执行之前(sys_watchdog_notify()和sys_watchdog_suspend())。这意味着,看门狗运行时,你永远等待,直到4个字节的数据来你的UART,代码将做任何事情的机会之前,在watchdog_Handler()结束。

我不明白究竟你的意思是“从UART不止一次读取数据”时,ad_uart_read()将阻塞任务,直到时间的流逝(在你的情况与
OS_EVENT_FOREVER这不会发生)或者收到4个字节,此功能还不使用任何回调以通知您,因为该功能已阻止以来数据已到达。您还可以检查AD_UART_READ_ASYNC()函数不会阻止任务,并将等待要接收的指定数量的字节(请注意,在先前的事务完成之前无法连续调用此函数),此函数正在执行当预定义数量的数据到达时,回调。由于SDK使用适配器而不是LLD,适配器使用中断,因此需要一些努力,以便不使用适配器并使用低级驱动程序实现代码,因此使用中断。

这将触发UART互动的任务可能是因为存在一个媒体链接实现的任务或新任务,将处理您的UART,这取决于具体的实现。你还必须知道,当设备处于休眠模式下,所有外设,包括UART断电,所以在睡眠模式下,您将无法有UART交互,除非唤醒设备。所以,你可以拥有百达唤醒设备或实施了以下方案:外部设备发送数据之前,它首先会唤醒68X,这意味着你将不得不使用硬件流控制,以使外部设备唤醒68X通过RTS引脚。

让我们假设你想在同一时间从UART一个字节读取数据并打印回终端,一个简单的实现使用上的多重UART的可能是以下的原因。

  • 为了防止设备,而CTS通过外部设备断言临睡前设置额外引脚为RTS和CTS。
  • 在进入前为(;;)任务的循环启动UART交易开发= ad_uart_open(SERIAL2);ad_uart_read_async(DEV,&BUF,1,(无效*)uart_async_read_cb,NULL);.
  • 回调将通知发送给主要任务,以打印接​​收数据,并通过调用ad_uart_read_async()函数读取复位。

谢谢mt_dialog.

马里奥
离线
最后一次露面:3年10个月前
加入:2017年3月30日13:56
谢谢!

谢谢!

mahmed106
离线
最后一次露面:1个月1天前
加入:2019年5月3日17:28
非常感谢您详细

非常感谢您详细的答复。重用ad_uart_read_async()之后,我能够从UART就像中断读取数据。感谢您的,,详细回答真的帮了我。:)