2年前
同时为TX和RX使用UART适配器。
发布的UnicycleBloke230点 3回复我是使用Dialog SDK的新手,一直在阅读有关适配器的文章。我可以看到一个简单的解决方案,在单个线程上下文中对挂起的写进行排队并使用ad_uart_write()处理它们,这样就不会阻塞其他线程。我不太确定阅读……
是否可以同时调用ad_uart_read()和ad_uart_write()(从不同的线程)而不相互干扰?我想到了一个UART RX线程,它简单地读取一个块或超时,将RX数据传递给应用程序,并重复。我想这可能会对保持RX启用有强大的影响,但它仅用于调试目的。
2年前
谢谢你的回复。老实说,我更喜欢自己编写裸机驱动(这是我对北欧,STM32, EFM32和其他部分所做的),但我对对话部分太不熟悉了,目前不能这样做,我主要关心的是正确管理电源。在我看来,非常奇怪的是,UART被适配器强制成为半双工设备:这似乎是不可取的。
我将浏览一下这个例子。
谢谢。
2年前
嗨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