用户工具

站点工具


标准:bus:uart:start

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
标准:bus:uart:start [2025/09/10 19:06] hwwiki标准:bus:uart:start [2025/09/16 18:53] (当前版本) – [协议] hwwiki
行 9: 行 9:
 以常见的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 串口设计指导]])]。 以常见的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线)的连接图如下。无需硬件流控,用2线连接,需要硬件流控则用4线或8线连接。+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  |||  特性  |  信号方向  | |  DCE  |||  DTE  |||  特性  |  信号方向  |
行 27: 行 32:
  
 {{:标准:bus:uart:2线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]]。
 +
 +
 +
  
  
标准/bus/uart/start.1757502405.txt.gz · 最后更改: 2025/09/10 19:06 由 hwwiki