[DemoCode下载] 单线UART传输模式

[复制链接]
 楼主| mickit 发表于 2025-6-23 20:25 | 显示全部楼层 |阅读模式
大家平时用的比较多的是两线全双工模式,但是针对芯片管脚不足、Bootloader升级接口受限和节省通讯线成本等因素,往往希望有芯片能够支持单线UART传输模式。本篇主要介绍单线UART传输模式,目前新唐M0/M23/M4等内核产品,比如M031/M251/M460/M480等系列产品都支持单线UART传输模式,并且最高通信速率可以达到6Mbps。

一、 双线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控制器支持流控制和位错误检测。nRTS在总线为保持TX状态时不激活 。UART默认状态为RX 模式,并且UART只会在ATOCTSEN (UART_INTEN[13])使能,nCTS 被取消激 活状态后,才转换为TX模式发送数据。在TX状态期间,UART控制器将监视总线状态。如果总线状态不等于UART控制器TX状态,则设置SWBEIF(UART_INTSTS[16])。

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

四、 程序操作
1、 M031 SampleCode可以找到3个UART单线的例程




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


3、 单线模式设置


4、 按照正常的UART收发数据的方式即可,详情客户参考官方例程操作。

五、 UART_115200bps_SingleWire_ISP升级
这个例程可以实现使用单线UART将程序从LDROM启动,并更新APROM程序。同时,官方也提供做的单线ISP升级工具。
  

这里重点提一下是官方例程做好的单线UART 只有115200bps的速率,之前提到M031是可以支持的最高6Mbps的,这里需要将修改三个地方即可。
     
1、UART_115200bps_SingleWire_ISP 例程修改
   

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


修改完成重新编译烧录,在使用修改好的ISP进行连接更新程序,这里和常规的ISP-UART升级方式是一样的。


xinxianshi 发表于 2025-6-23 20:40 | 显示全部楼层
单线也可以双向传输吗
神明祷告 发表于 2025-7-4 21:57 | 显示全部楼层
单线 UART 传输模式(如单总线 UART)
硬件极简:仅需 1 根信号线(TX/RX 复用),节省 PCB 空间与成本,适合引脚资源紧张的场景(如传感器、低功耗设备)。
布线简化:单线路径减少 EMI 干扰,尤其适用于长距离或密集布线环境,降低硬件设计复杂度。
半双工高效:通过时分复用实现双向通信,在数据吞吐量要求不高时(如低速传感器数据采集),平衡性能与成本。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

1533

帖子

1

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