串口通信
UART(通用异步收发传输器)是一种异步串行通讯协议,它不需要共享时钟信号,仅通过两根数据线(TX\RX)即可实现全双工通信。理解UART的核心,在于理解它如何通过”数据帧“的格式来在无时钟的情况下保持收发双方的同步。
核心原理:无时钟如何同步?
UART是异步通信,意味着发送方和接收方没有共享的时钟线。为了让接收方能正确解读数据,UART通过特定的数据帧格式来实现同步:
- 起始位:数据在空闲时保持高水平。当发送方拉低电平一个波特率周期时,接收方检测到这个下降沿,就知道一阵数据开始了,并以此校准自己的采样时钟。
- 数据位:紧接着起始位之后发送,通常是5-8位。UART协议约定最低有效位先发送。
- 校验位(可选):用于简单的错误检测。可以是偶校验(使数据位中的“1”的总数为偶数)或奇校验。
- 停止位:发送方将数据线拉高1或2个周期,标志一帧数据结束。高电平的停止位也为接收方提供了必要的缓冲时间,以处理时钟可能存在的微小误差。
关键参数
要成功通信,双方必须事先约定好以下参数,否则会乱码:
- 波特率:衡量传输速率的指标,表示每秒传输的符号数。常见的波特率有9600、115200等。收发双方波特率必须一致。
- 数据位长度:一帧中实际数据位的数量,通常为8位。
- 停止位长度:可以是1、1.5、或2位。停止位越多,同步容忍度越高,单传输速率越低。
- 奇偶校验:用于检测但比特错误,可设置为奇校验、偶校验或无校验。
常见误区:UART vs. USART
UART仅支持异步模式,而UART(通用同步/异步收发传输器)是UART的增强版,它同时支持异步和同步模式。在同步模式下,UART会额外传输一根时钟线,从而实现更高的传输速率(可达4Mbps以上),并且可以支持IrDA\LIN等多种协议。
硬件连接与电平
- 基本连线:最简单的UART连接只需要交叉连接TX和RX,并共地。
- 逻辑电平:在芯片之间(如两块单片机),通常直接用TTL电平(0V为逻辑0,3.3V或5V为逻辑1)。但如果要与老式PC的串口通信,则需要通过MAX232等芯片转换为RS-232标准的双极性电平(正负电压表示0和1)。
适用场景
UART因其简单、成本低、所需引脚少,非常适合低速、点对点的通信场景,例如:
- 调试嵌入式系统,输出日志信息。
- 连接GPS、蓝牙模块等外设。
- 工业控制设备之间的短距离数据交换。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 CCの日记!
评论