你好,
我在对话框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
关键词:
设备:
你好,
换句话说,同样的问题,是否有任何方法来做基于中断的UART接收多个字节。惟一的要求是我不知道我将收到的字节数。所以,当UART接收到数据时,我需要接收数据。
嗨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
谢谢,PM_Dialog。我看到了适配器实现,并看到它也只调用LLD。所以,我没有想过用它。
我来检查一下。