【嵌入式】常用串口协议与转换芯片详解

0 前言

  最近有点想研究USB协议,正好也看到有评论说对如何选择USB转串口模块有些疑惑,其实我也一直很想写一篇关于串口的总结式的文章,借此契机来完善一下。

1 一个通信的协议的组成

  所谓通信协议,顾名思义,其本质就是一个协议,即一个约定,大家约定好通信的一些标准,这样大家就能根据这个标准来设计并生产产品,而避免了A产品不兼容B这样的情况发生。
  那不妨先想一下,一个通信协议需要规定哪些内容呢?
  一般来说,主要包括三个方面:

  • 物理属性  主要是约定插头或接口的外在特性。包括这个插头长啥样(物理形状),有几个引脚(引脚定义)等等。
  • 逻辑属性  逻辑属性主要是约定这个协议传输数据时的时序。因为在实际传输数据过程中,并不是直接把需要传输的数据依次传输的,这样接收端就不知道从哪里开始接收,数据传输就会错乱,因此往往是把数据切分为小块然后加上一些固定的字符,组成“一帧”,再传输,同样接收端也按照约定好的帧格式来进行解析。这样数据传输才能有序进行。
  • 电气属性  在常见的串行数据传输协议中,都是传输数字信号,即用0 和 1来表示需要传输的数据,因此就需要明确多少电压代表0,多少电压代表1。

以下的内容也将按照上述思路来进行展开。

最后,再简单解释一些基本名词的概念:

  • 单工:指信息传输是单向的,只能由A到B,不能B到A
  • 双工:信息传输是双向的,A B之间可以交互信息
  • 半双工:首先信息传输是双向的,但不能同时进行,即要么A给B传,要么B给A传,二者不能同时进行。
  • 全双工:不仅信息传输是双向的,还可以同时进行。

2 常用协议名词解释

2.1 UART

  对于玩单片机的同学来说,UART可能是接触的最早的串行通信协议了,基本每个单片机都有TXD,RXD两个引脚,此即所谓的Universal Asynchronous Receiver/Transmitter,异步串行通信。

  • 物理属性:接口方面一般没什么要求,可以根据自己的需求自定义,但一般来说是三根线:RXD,TXD,GND,有时会加上电源信号VCC。
  • 逻辑属性:即数据传输时的时序,这个可能是我们最关注的信息了。也是代码编写的主要内容体现:设置波特率、设置几位数据位,是否有奇偶校验等,即所谓的配置串口。
  • 电气属性:采用正逻辑电平,即5V/3.3V为1;0V为0。这即是所谓的TTL电平,所以一般来说,单片机串口也叫TTL

    实际上现在大多数单片机使用的都是CMOS电路,电平容限比TTL要大一些,但由于TTL出现较早,目前仍然把这种电平称为TTL电平。

总结
  UART没有规定接口的具体样式,只是规定了引脚,所以在实际使用中比较灵活。但是引脚的电平要注意和单片机的电源保持一致,要注意区分3.3V和5V。UART是单片机中的基础外设,一般称之为串口,通过USB转TTL模块可以实现单片机与上位机之间的通讯。

2.2 RS-232

  RS-232其实是出现比较早且应用较为广泛的标准。由美国电子工业协会(Electronic Industries Association,EIA)联合多家公司于1970年制定,目前最新的标准是RS232C(前面是A和B)。所谓RS,即Recommended Standard,推荐标准,232为标识号。

  • 物理属性:RS232规定了25根线,但其实常用的只有9根线(另外16根线包括:①9根线电流环信号,目前很少设备使用这些引脚;②6个空引脚;③一个保护地信号),这也是为什么目前很多RS232的接口都是DB9,而很少见到DB25的插头。DB9插头如下图所示。
    在这里插入图片描述
    形状和VGA接口很像,但只有9个针脚。这9个针脚定义如下所示
简写符 DTE25芯(公) DCE25芯(母) DTE9芯(公) DCE9芯(母) 信号功能解释
TXD 2 3 3 2 发送数据 Transmit Data
RXD 3 2 2 3 接收数据 Receive Data
GND 7 7 5 5 信号地 Ground
RTS 4 5 7 8 请求发送 Require to Send
CTS 5 4 8 7 清除请求 Clear to Send
DSR 6 20 6 4 数据装置就绪 Data Set Ready
DCD 8 8 1 1 接收线信号检测 Data Carry Detected
DTR 20 6 4 6 数据终端准备好 Data Terminal Ready
RI 22 22 9 9 振铃指示

其中,前面三根线为必须的线,后面6根线其实都是流控信号,在实际使用时其实不一定会使用。

  • 逻辑属性:值得一提的是,RS232的时序其实和上面提到的UART是一样的,也需要设置波特率、数据位、校验位、停止位等。但是需要注意的是,RS232波特率设置一般不超过19200,因为RS232传输的上限为20kbps。
  • 电气属性:RS-232采用负逻辑电平,逻辑1:-15V ~ -3V 逻辑0:+3V ~ +15V

总结
  RS-232是一种全双工通信方式,时序和UART相同,只是电气属性存在差异。此外,它只能实现单点通信,且最大通信速率为20kbps,最大通信距离为15m。

2.3 RS-485

  • 物理属性:RS-485是通过差分线路传输,所以一般是需要两根线(最多加上一个参考地线),一般是使用双绞线,这样可以尽可能减少干扰。也因此其传输距离要更远,可以达到4000英尺(约1219米),最高传输速率可以达到10Mbps(40英寸内,约12.2米)
  • 逻辑属性:由于是差分信号线,所以要看两个引脚之间的电压之差,从而来判断是逻辑0还是逻辑1。
  • 电气属性:这两根线一根是A,一根是B,要求这两根线上的电压为-7 ~ +12V,发送端要求至少提供1.5V的差分电压,而接收端要求两根线上的压差至少为200mV,当AB线压差≥200mV时,识别为逻辑1;当AB线压差<200mV时,识别为逻辑0.

总结
  相比于RS-232的单点通信,RS-485支持总线通信,总线上最大可以挂载32个设备(这个数字好像和总线阻抗大小有关)。RS-485属于半双工通信协议。

2.4 RS-422

  RS-422其实就是两组485,一对发一对收,因此需要4根线,实现了全双工通信。但是其实RS-422是基于RS-232提出的,比RS-485要早一些。虽然422和485都是差分信号传输,但它的电气特性和485有所差别。
  RS-422也支持总线挂载多个设备,但没有485那么多,只支持10个设备,最大传输距离与最大传输速率和RS485一样。

2.5 比较

在这里插入图片描述

图片来源链接

3 常用的芯片

  USB转串口常用的芯片有CH340CP2102FT232PL2303,这些都是可以直接使用的,具体用法建议参考官方的手册,主要是看其中的示例电路用法。

  而MAX232需要注意的是,它的作用是电平转换,即把TTL电平和RS-232电平进行互转,因此一般还需要再接一个USB转串口的协议才能和电脑USB进行通信。

猜你喜欢

转载自blog.csdn.net/ZHOU_YONG915/article/details/133618065