UART接收问题

了解更多常见问题教程

4个帖子/ 0个新帖子
最后发表
Subramanyan
离线
最后看到:5天前3小时前
加入:2020-07-15 43分
UART接收问题

你好,

我在对话框14695上使用WiRa 10.440.8.6 SDK。我正在用FreeRTOS实现一个UART解决方案。我试图找到一个好方法来接收UART消息从另一个设备。

我在一个主任务中使用hw_uart_receive(HW_UART3, &var, 1, uart_data_cb, &var)。一旦我在回调uart_data_cb中收到1个字节,我就通知主任务,然后主任务发出另一个hw_uart_receive(HW_UART3, &var, 1, uart_data_cb, &var)。我试图得到1字节一次,因为我不知道字节的数量,我可以接收。

我使用回调,以便中断处理程序可以被使用。否则,hw_uart_receive只会阻塞和旋转。

有没有一种好的方法来实现使用Dialog UART api的UART接收处理程序,它将帮助可靠地获得UART数据。我不知道我将收到多少字节,所以我认为它需要基于中断。

任何帮助都将不胜感激。

感谢和问候,

Subramanyan

关键词:
设备:
Subramanyan
离线
最后看到:5天前3小时前
加入:2020-07-15 43分
你好,

你好,

换句话说,同样的问题,是否有任何方法来做基于中断的UART接收多个字节。惟一的要求是我不知道我将收到的字节数。所以,当UART接收到数据时,我需要接收数据。

PM_Dialog
离线
最后看到:1小时25分钟前
工作人员
加入:2018-02-08 11:03
嗨Subramanyan,

嗨Subramanyan,

谢谢你的在线提问。一般来说,我们强烈建议使用适配器而不是低级驱动程序(LLD)来访问硬件外设,因为这不仅提供了对外设的访问,而且还确保当前正在访问它的其他任务挂起它们的操作,直到外设再次释放为止。因此,如果另一个任务同时尝试访问同一外围设备,您不必担心。此外,在睡眠模式下,所有外围设备块都被关闭。

适配器以“ad_”开头,LLD以“hw_”开头。

为此,为了访问UART外围设备块,我建议使用UART适配器。请看一下DA1469x UART适配器示例从我们的支持页面。

ad_uart_read()调用hw_uart_receive()。如果仔细查看建议的示例代码,您将看到应用程序同步地等待一个字符,如果成功读取,则它将该字符写回给UART (echo)。

还请检查ad_uart_read()函数在ad_uart.h中的注释——rlen参数设置要读取的字节数。

谢谢,PM_Dialog

Subramanyan
离线
最后看到:5天前3小时前
加入:2020-07-15 43分
谢谢,PM_Dialog。我看到了

谢谢,PM_Dialog。我看到了适配器实现,并看到它也只调用LLD。所以,我没有想过用它。

我来检查一下。