[技术问答] Nuvoton开发应用中的单线UART技巧

[复制链接]
 楼主| mickit 发表于 2025-6-28 20:00 | 显示全部楼层 |阅读模式
一、单线UART和双线UART对比
通过这个图表我们可以清楚地了解单线UART和双线UART的区别及各自的优缺点。
单线UART和双线UART对比图
二、 单线UART硬件设计
由于在单线UART模式设定UART_RXD功能时,会被设定成输入模式,因此当两个M031用单线UART对接的时候,需要通过外部上拉电阻使总线维持高电平状态。
单线UART对单线UART的接线方式:
单线UART对双线UART的接线方式:

三、UART单线半双工模式原理
UART控制器提供单线半双工功能,可在UART功能模式下实现(通过设置UART_FUNCSEL[2:0]为'100'以启用UART单线功能)。当单线总线空闲时,保持RX状态。通过将数据写入TX缓冲区DAT(UART_DAT[7:0]),单线总线将立即将总线状态从RX转变为TX。传输结束后,单线总线状态会从TX恢复为RX。为减少总线冲突问题,UART控制器支持流控制和位错误检测。在保持TX状态时,nRTS不会激活总线。UART的默认状态为RX模式,只有在ATOCTSEN(UART_INTEN[13])使能的情况下,当nCTS取消激活状态后,才会转换为TX模式发送数据。在TX状态期间,UART控制器将监测总线状态。如果总线状态与UART控制器的TX状态不相符,则会设置SWBEIF(UART_INTSTS[16])。

注1:在写入TX缓存数据前,总线状态可以通过读RXIDLE(UART_FIFOSTS[29])来检测是否为空闲状态。总线冲突可能导致RX接收错误数据。
注2:单线UART不支持自动流控制,因为自动流控制会在TX发送时自动激活nRTS。

四、程序操作1. 单线UART例程位置
在新唐Nuvoton M031的 SampleCode可以找到3个UART单线的例程
3个UART单线的例程位置

2. 管脚设置
将I/O模式更改成准双向模式 (Quasi-bidirectional Mode),使总线维持空闲状态,并设置UART_RXD管脚复用功能。

管脚设置

3. 单线模式设置
单线模式设置

4. 按照正常的UART收发数据的方式即可,详情客户参考Nuvoton新唐官方例程操作。
五、UART_115200bps_SingleWire_ISP的升级
UART_115200bps_SingleWire_ISP这个例程可以实现使用单线UART将程序从LDROM启动,并更新APROM程序。同时,官方也提供做的单线ISP升级工具。  
单线ISP升级工具

这里温馨提示一下,官方示例中提供的单线UART仅支持115200bps的传输速率。然而,正如前文所述,M031系列实际上能够支持高达6Mbps的最高速率。实现这一点,只需对以下三个方面进行调整。
1. UART_115200bps_SingleWire_ISP 例程修改
UART_115200bps_SingleWire_ISP 例程修改

2. ISP Programming Tool修改,可以使用Microsoft Visual Studio编译
修改ISPLdCMD.cpp

完成修改后,请重新编译并烧录固件。使用已修改的ISP进行连接,更新程序的步骤与常规的ISP-UART升级方法相同。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

1533

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部