用户工具

站点工具


标准:bus:uart:start

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
标准:bus:uart:start [2025/09/08 08:58] hwwiki标准:bus:uart:start [2025/09/16 18:53] (当前版本) – [协议] hwwiki
行 2: 行 2:
  
 UART是Universal Asynchronous Receiver-Transmitter通用异步收发器的缩写。 UART是Universal Asynchronous Receiver-Transmitter通用异步收发器的缩写。
 +
 +===== 信号及连接 =====
 +
 +UART设备有两种DCE(Data Communication Equipment)和 DTE(Data Terminal Equipment)。路由器、Modem或者通讯模块一般为DCE,而打印机、计算机等终端一般为DTE。DCE和DTE、DCE和DCE、DTE和DTE之间都可以连接,但需要注意其信号定义及信号流向。
 +
 +以常见的DCE和DTE连接为例,UART信号定义如下表所示[([[https://usermanual.wiki/Huawei/%E5%8D%8E%E4%B8%BA%E6%A8%A1%E5%9D%97UART%E4%B8%B2%E5%8F%A3%E8%AE%BE%E8%AE%A1%E6%8C%87%E5%AF%BCV100R00103Chinesepdf.265411997.pdf|华为:UART 串口设计指导]])]。
 +
 +8线、4线、2线(不包括GND线)的连接图如下。无需硬件流控(RTS CTS),用2线连接,需要硬件流控则用4线或8线连接。
 +
 +硬件流控的流程如下[([[https://www.microchip.com.cn/newcommunity/Uploads/202504/68119aac0100a.pdf|Microchip:AN4885 通过UART将PCI1xxx与RS-232、RS-422和RS-485接口进行连接]])]:
 +  * 发送数据:发送器首先将RTS置为有效以通知接收器它有数据要发送,然后等待接收器将CTS置为有效。一旦RTS和CTS均置为有效,发送器就开始发送数据。发送器从LSb开始每次发送一位。发送器发送完成后,会立即发送停止信号并将RTS置为无效。只要接收器将CTS置为无效,发送器就会暂停发送。
 +  * 接收数据:当接收器检测到发送器已将RTS信号置为有效时,会通过将CTS信号置为有效进行响应。当接收器检测到起始位后,会开始读取线路中传入的数据,然后将该数据存入移位寄存器中。当移位寄存器已满时,接收器会将数据推入FIFO寄存器中。接收器所连接的系统后续会负责清空FIFO寄存器。如果FIFO和移位寄存器均已满,接收器会将CTS置为无效,以便为系统留出更多的时间来读取寄存器,从而避免丢失数据。
 +
 +
 +|  DCE  |||  DTE  |||  特性  |  信号方向  |
 +|  名称  |  描述  |  输入输出  |  名称  |  描述  |  输入输出  |:::|:::|
 +|  UART_RX  |  数据接收端  |  DI  |  TXD  |  数据发送端  |  DO  |  DTE 发送串行数据,DCE接收  |  DTE→DCE  |
 +|  UART_TX  |  数据发送端  |  DO  |  RXD  |  数据接收端  |  DI  |  DCE发送,DTE 接收串行数据  |  DCE→DTE  |
 +|  UART_CTS  |  清除发送  |  DI  |  RTS  |  请求发送  |  DO  |  DTE通知 DCE 请求发送,DCE切换到接收  |  DTE→DCE  |
 +|  UART_RTS  |  请求发送  |  DO  |  CTS  |  清除发送  |  DI  |  DCE通知 DTE 请求发送,DTE切换到接收  |  DCE→DTE  |
 +|  UART_DTR  |  DTE就绪  |  DI  |  DTR  |  DTE就绪  |  DO  |  DTE准备就绪,通知DCE  |  DTE→DCE  |
 +|  UART_DSR  |  DCE就绪  |  DO  |  DSR  |  DCE就绪  |  DI  |  DCE通知DTE 准备就绪  |  DCE→DTE  |
 +|  UART_DCD  |  载波检测  |  DO  |  DCD  |  载波检测  |  DI  |  DCE通知DTE,数据链路已连接  |  DCE→DTE  |
 +|  UART_RING  |  振铃指示  |  DO  |  RING  |  振铃指示  |  DI  |  DCE通知 DTE 有远程呼叫或短信息  |  DCE→DTE  |
 +
 +{{:标准:bus:uart:8线uart.png?600|}}
 +
 +{{:标准:bus:uart:4线uart.png?600|}}
 +
 +{{:标准:bus:uart:2线uart.png?600|}}
 +
 +
 +===== 硬件设计注意事项 =====
 +
 +==== 上拉电阻 ====
 +
 +UART起始位(Start bit)为高电平拉低到低电平,即空闲时需要保持高电平。
 +
 +一般在Tx和Rx线上都加一个上拉电阻,以保证空闲状态的高电平,避免起始位识别错误[([[https://blog.mbedded.ninja/electronics/communication-protocols/uart-communication-protocol/|UART Communication Protocol:Pull-up Resistors On TX Lines]])]。
 +
 +==== 来自UART的电流倒灌 ====
 +
 +当两个通讯的UART设备,一个设备断电,另一个设备仍在工作,则工作设备Tx或Rx等线上的电流,可能倒灌进未工作设备导致异常。可以通过加二极管或电压转换芯片等来隔离[([[https://blog.mbedded.ninja/electronics/communication-protocols/uart-communication-protocol/|UART Communication Protocol:Backfeeding Through UART]])]。
 +
 +==== 电平转换 ====
 +
 +  * TTL 1.8/3.3/5V之间的电平转换:用三极管(400KHz以下)、MOS管(1MHz以下)搭建转换电路,或直接用转换芯片(参考{{ :元器件:ic:logic:translators_level-shifters:ti_voltage_translation_buying_guide.pdf | Voltage Translation Buying Guide}})
 +  * TTL和RS232之间的电平转换:MAX3221等芯片
 +  * TTL和RS485之间的电平转换:MAX485等芯片
 +
 +===== 协议 =====
 +
 +UART协议帧结构如下,详见[[https://dreamsourcelab.cn/logic-analyzer/uart/|DreamSourceLab:UART协议分析 > 2.协议规范]]。
 +
 +当两个设备需要通过UART协议进行通讯时,它们需要同时约定好以下内容:
 +
 +  * 每一位信号的时间长度T(波特率 = 1/T,最大波特率921600)
 +  * 帧结构中每一项的具体位数
 +  * 是否有校验位,以及校验位的机制(奇/偶/..)
 +
 +{{:标准:bus:uart:uart协议帧结构.png?600|}}
 +
 +==== 不同物理层的实现 ====
 +
 +常用的物理层有:TTL/CMOS电平1.8V/3.3V/5.0、RS232(单端)、RS485(差分),电平差异如下图,具体差异见[[https://dreamsourcelab.cn/logic-analyzer/uart/|DreamSourceLab:UART协议分析 > 1.2.不同的物理层实现]]。
 +
 +{{:标准:bus:uart:图_1‑2_不同的物理层电平标准.png?600|}}
 +
 +===== 测试 =====
 +
 +串口的测试有两种仪器,逻辑分析仪和示波器,软件工程师看协议推荐用逻辑分析仪,硬件工程师看信号推荐用示波器。
 +
 +具体详见[[https://dreamsourcelab.cn/logic-analyzer/uart/|DreamSourceLab:UART协议分析 > 3.1. 示波器vs逻辑分析仪]]。
 +
 +逻辑分析仪测试详见[[https://dreamsourcelab.cn/logic-analyzer/uart/|DreamSourceLab:UART协议分析 > 3.   使用逻辑分析仪分析UART通讯]]。
 +
 +UART通讯中的信号错误,详见[[https://www.ti.com/content/dam/videos/external-videos/en-us/9/3816841626001/6313217959112.mp4/subassets/uart_protocol_overview_and_error_sources_0.pdf|TI:UART Protocol Overview]]。
 +
 +
 +
 +
  
  
行 23: 行 104:
  
 Tera Term下载地址[[https://sourceforge.net/projects/tera-term/|SOURCEFORGE: Tera Term]] Tera Term下载地址[[https://sourceforge.net/projects/tera-term/|SOURCEFORGE: Tera Term]]
 +
 +脚本示例:{{ :标准:bus:uart:temperatuer_query.zip |}}
  
 ==== SSCOM ==== ==== SSCOM ====
标准/bus/uart/start.1757293132.txt.gz · 最后更改: 2025/09/08 08:58 由 hwwiki