UART、TTL和RS232的区别

UART、TTL和RS232的区别


  学习硬件的开始接触的就是串口,但是一直没搞懂UART、TTL和RS232这些的关系,总感觉相互之间有所交叉,无法完全区分开,于是有了这篇博文。但是,这篇博文自我感觉并没有完全正确地区分这三者,但能够让自己稍微捋一捋头绪,希望接下来的学习中能够对这三者有进一步的认识和了解,如有错误还望指出!这是本文的结论:
1、UART就是一堆电路,是异步串行通信的一种电路实现;
2、TTL有两个意思,一是电路类型,二是电平标准;
3、RS232属于异步串行通信方式,跟UART相比,区别仅在于UART使用的是TTL电平,而RS232使用的是另一种电平标准。

串行通信

  串行通信(Serial Communication)是一种通信方式。两个设备之间通过一条数据线逐比特地发送数据就属于串行通信。与之相反的是并行通信(Parallel Communication),指两个设备之间通过多条数据线同时发送多个比特。
  串行通信包括异步串行通信(Asynchronous Serial Communication)1和同步串行通信(Synchronous Serial Communication)。异步串行通信方式下的两个设备之间没有同步时钟线进行同步,所以需要起始信号和终止信号。图2中指出了该通信方式下的设备在通信之前必须达成的协议,包括工作模式(全双工或者半双工)、帧长度、波特率、校验位长度和类型、停止位长度等。

UART、TTL和RS232的区别

图1 异步串行通信的*词条

UART、TTL和RS232的区别

图2 异步串行通信的操作

UART

  UART(Universal Asynchronous Receiver-transmitter),叫做通用异步收发器2。根据*的定义,它就是一堆电路,如图5所示,包含时钟发生器、输入输出移位寄存器等。我理解的,UART是异步串行通信的一种电路实现(注意这里的表述,我想过“UART属于异步串行通信方式的一种”这样的表述,但感觉不对),所以从图4中可以看出UART包含的内容跟异步串行通信是有重叠的。

UART、TTL和RS232的区别

图3 UART的*定义

UART、TTL和RS232的区别

图4 UART的发送和接收

UART、TTL和RS232的区别

图5 UART的结构

TTL

  图6为TTL的*词条3。我理解的,TTL有两个意思,一是电路类型,即由双极型晶体管构成的电路,比如TTL门电路。与之相对的有CMOS电路。二是电平标准,即2V-5V为逻辑1,0V-0.8V为逻辑0。从计算机网络的角度看,TTL属于五层中的最底层:物理层。
UART、TTL和RS232的区别

图6 TTL的*定义

RS232

  图7为RS232的*词条4。RS232是一种标准协议,它定义了电气特性(即电平标准:多少伏为0,多少伏为1)、信号时序、信号意义和连接器的引脚排布及尺寸。这是RS232的全部内容,也就是说RS232不是一种电平标准,电平标准只是它内容的一部分。仍然从计算机网络的角度来看,RS232包含了物理层和数据链路层(这么说对吗?)。RS232中定义了TXD和RXD引脚,所以RS232属于异步串行通信方式(注意这里的表述),那么跟UART相比,传输方式都是一样,都是关于起始位、比特位、停止位这一套。区别仅在于UART使用的是TTL电平,而RS232使用的是另一种电平标准。
UART、TTL和RS232的区别

图7 RS232的*词条

  1. https://en.wikipedia.org/wiki/Asynchronous_serial_communication ↩︎

  2. https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter ↩︎

  3. https://en.wikipedia.org/wiki/Transistor%E2%80%93transistor_logic ↩︎

  4. https://en.wikipedia.org/wiki/RS-232 ↩︎