标准:bus:uart:start
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
标准:bus:uart:start [2025/09/10 18:54] – [串口-UART] hwwiki | 标准:bus:uart:start [2025/09/16 18:53] (当前版本) – [协议] hwwiki | ||
---|---|---|---|
行 5: | 行 5: | ||
===== 信号及连接 ===== | ===== 信号及连接 ===== | ||
- | UART设备有两种DCE(Data Communication Equipment)和 DTE(Data Terminal Equipment)。路由器、Modem或者通讯模块一般为DCE,而打印机、计算机一般为DTE。DCE和DTE、DCE和DCE、DTE和DTE之间都可以连接,但需要注意其信号定义及信号流向。 | + | UART设备有两种DCE(Data Communication Equipment)和 DTE(Data Terminal Equipment)。路由器、Modem或者通讯模块一般为DCE,而打印机、计算机等终端一般为DTE。DCE和DTE、DCE和DCE、DTE和DTE之间都可以连接,但需要注意其信号定义及信号流向。 |
+ | |||
+ | 以常见的DCE和DTE连接为例,UART信号定义如下表所示[([[https:// | ||
+ | |||
+ | 8线、4线、2线(不包括GND线)的连接图如下。无需硬件流控(RTS CTS),用2线连接,需要硬件流控则用4线或8线连接。 | ||
+ | |||
+ | 硬件流控的流程如下[([[https:// | ||
+ | * 发送数据:发送器首先将RTS置为有效以通知接收器它有数据要发送,然后等待接收器将CTS置为有效。一旦RTS和CTS均置为有效,发送器就开始发送数据。发送器从LSb开始每次发送一位。发送器发送完成后,会立即发送停止信号并将RTS置为无效。只要接收器将CTS置为无效,发送器就会暂停发送。 | ||
+ | * 接收数据:当接收器检测到发送器已将RTS信号置为有效时,会通过将CTS信号置为有效进行响应。当接收器检测到起始位后,会开始读取线路中传入的数据,然后将该数据存入移位寄存器中。当移位寄存器已满时,接收器会将数据推入FIFO寄存器中。接收器所连接的系统后续会负责清空FIFO寄存器。如果FIFO和移位寄存器均已满,接收器会将CTS置为无效,以便为系统留出更多的时间来读取寄存器,从而避免丢失数据。 | ||
- | 以常见的DCE和DTE连接为例,UART信号定义如下表所示,8线、4线、2线(不包括GND线)的连接图如下[([[https:// | ||
| DCE ||| DTE ||| 特性 | | DCE ||| DTE ||| 特性 | ||
行 25: | 行 32: | ||
{{: | {{: | ||
+ | |||
+ | |||
+ | ===== 硬件设计注意事项 ===== | ||
+ | |||
+ | ==== 上拉电阻 ==== | ||
+ | |||
+ | UART起始位(Start bit)为高电平拉低到低电平,即空闲时需要保持高电平。 | ||
+ | |||
+ | 一般在Tx和Rx线上都加一个上拉电阻,以保证空闲状态的高电平,避免起始位识别错误[([[https:// | ||
+ | |||
+ | ==== 来自UART的电流倒灌 ==== | ||
+ | |||
+ | 当两个通讯的UART设备,一个设备断电,另一个设备仍在工作,则工作设备Tx或Rx等线上的电流,可能倒灌进未工作设备导致异常。可以通过加二极管或电压转换芯片等来隔离[([[https:// | ||
+ | |||
+ | ==== 电平转换 ==== | ||
+ | |||
+ | * TTL 1.8/ | ||
+ | * TTL和RS232之间的电平转换:MAX3221等芯片 | ||
+ | * TTL和RS485之间的电平转换:MAX485等芯片 | ||
+ | |||
+ | ===== 协议 ===== | ||
+ | |||
+ | UART协议帧结构如下,详见[[https:// | ||
+ | |||
+ | 当两个设备需要通过UART协议进行通讯时,它们需要同时约定好以下内容: | ||
+ | |||
+ | * 每一位信号的时间长度T(波特率 = 1/ | ||
+ | * 帧结构中每一项的具体位数 | ||
+ | * 是否有校验位,以及校验位的机制(奇/ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== 不同物理层的实现 ==== | ||
+ | |||
+ | 常用的物理层有:TTL/ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== 测试 ===== | ||
+ | |||
+ | 串口的测试有两种仪器,逻辑分析仪和示波器,软件工程师看协议推荐用逻辑分析仪,硬件工程师看信号推荐用示波器。 | ||
+ | |||
+ | 具体详见[[https:// | ||
+ | |||
+ | 逻辑分析仪测试详见[[https:// | ||
+ | |||
+ | UART通讯中的信号错误,详见[[https:// | ||
+ | |||
+ | |||
+ | |||
标准/bus/uart/start.1757501665.txt.gz · 最后更改: 2025/09/10 18:54 由 hwwiki