同时为TX和RX使用UART适配器。

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
UnicycleBloke
离线
最后看到:3个月6天前
加入:2015-10-26 13:43
同时为TX和RX使用UART适配器。

我刚使用Dialog SDK,一直在阅读有关适配器的内容。我可以看到一个简单的解决方案,将挂起的写入写入队列,并使用ad_uart_write()在单个线程上下文中处理它们,这样就不会阻塞其他线程。我不太确定阅读…

是否可能调用ad_uart_read()和ad_uart_write()在同一时间(从不同的线程)互不干扰?我想到了一个UART RX线程,它简单地读取一个块或超时,将RX数据传递给应用程序,然后重复。我想这将具有强大的含义,保持RX启用,但它仅用于调试目的。

设备:
PM_Dialog
离线
最后看到:6天21小时前
工作人员
加入:2018-02-08 11:03
嗨UnicycleBloke,

嗨UnicycleBloke,

由于您正在使用适配器,您不能同时从不同的线程调用ad_uart_read()和ad_uart_write()。这是适配器的概念。请注意,适配器是lld(低级别驱动程序)之上的另一层,并不是作为单独的任务实现的。因此,您可以直接使用UART lld(在hw_uart.h文件中描述)或UART适配器(在ad_uart.h文件中描述),而不干预UART lld。我们建议使用适配器来访问硬件外设,因为这不仅提供了对外设的访问,而且还确保当前正在访问它的其他任务暂停其操作,直到外设再次被释放。因此,如果另一个任务试图在同一时间访问同一外设,您不必担心。我强烈建议您看一下第12.3.1章的UART适配器示例UM-B-044用户手册:DA1468x软件平台参考(HTML)从我们的支持门户。

谢谢,PM_Dialog

UnicycleBloke
离线
最后看到:3个月6天前
加入:2015-10-26 13:43
谢谢你的回复。来

谢谢你的回复。老实说,我更愿意写我自己的裸金属驱动程序(这是我已经做了与北欧,STM32, EFM32和其他部分),但太不熟悉的对话部分,目前做这一点,我的主要关心是正确管理电源。我觉得很奇怪,UART被适配器强迫成为半双工设备:这似乎是不需要的。

我将浏览一下这个例子。

谢谢。

PM_Dialog
离线
最后看到:6天21小时前
工作人员
加入:2018-02-08 11:03
嗨UnicycleBloke,

嗨UnicycleBloke,

正如在前一篇文章中已经提到的,我们强烈建议使用适配器来访问硬件外设。如果您不喜欢使用适配器,那么第二种选择是使用LLD。这是我们可以提供支持的两种选择。在您的情况下,如果您想实现自己的驱动程序,我们将无法提供任何支持。是的,请浏览一下如何使用UART适配器的推荐示例。

谢谢,PM_Dialog