在当今的电子设计领域,双线全双工通信模式因其稳定性和高效性而被广泛应用。然而,在面对诸如芯片管脚数量有限、Bootloader升级接口限制以及通信线路成本考量等实际问题时,往往需要更加灵活和经济的解决方案。为此,单线UART(通用异步收发传输器)传输模式应运而生,它以单一信号线实现数据的发送和接收,大大简化了硬件设计,降低了系统成本。 本文将重点探讨单线UART传输模式的原理与应用。新唐科技(Nuvoton)作为业界知名的微控制器制造商,其M0、M23和M4系列内核产品如M031、M251、M460和M480等,均已支持单线UART模式。这些产品不仅能够在单线模式下稳定工作,还能实现高达6Mbps的传输速率,满足了高速数据传输的需求。
一、单线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升级方法相同。这里可以参考我之前的博文:Nuvoton开发流程 初级篇 2 -- Bootloader
综上所述,Nuvoton开发流程应用篇为您介绍了单线UART的优缺点、硬件设计、工作原理和开发流程。如果您对Nuvoton新唐开发流程应用有独特的见解或者想要分享一些开发经验,欢迎在评论区留言,期待与您的交流和学习!欢迎收藏我们的网站:www.wpgdadatong.com.cn
登录大大通,查看原文,了解更多详情!