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

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芯(母)信号功能解释
TXD2332发送数据 Transmit Data
RXD3223接收数据 Receive Data
GND7755信号地 Ground
RTS4578请求发送 Require to Send
CTS5487清除请求 Clear to Send
DSR62064数据装置就绪 Data Set Ready
DCD8811接收线信号检测 Data Carry Detected
DTR20646数据终端准备好 Data Terminal Ready
RI222299振铃指示

其中,前面三根线为必须的线,后面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进行通信。
  由于MAX232使用方式用途比较单一,且使用较为简单,这里简单记录一下MAX232的相关内容,避免以后再查。

  • 首先是使用方面,MAX232的基本使用如下图所示。
    在这里插入图片描述
    先看外围器件,可以发现只有四个电容,其中C1+、C1-之间一个;C2+、C2-之间一个,然后V+与电源电容隔离;V-与地之间也是电容隔离。另外电源和地之间的电容算是可选项。
    再来看信号流向。需要注意,这里的IN和OUT是基于芯片说的,1和2代表两组转换端口,T和R分别接对应的TX和RX端口,至于哪个是IN哪个是OUT就需要分析一下信号流向了。

  • 另外,我好奇的一个点是,MAX232是怎么实现电平转换的。根据上面的内容,RS-232协议是负逻辑,即-3~-15是1;3~15是0,升压好说,但是这个负压是怎么产生的。通过查找资料发现它内部是通过电荷泵来实现升压,而外围的电容就充当了能量存储的容器。而负压的实现其实也简单,因为只需要改变参考电压即可,那么自然就会有负压了。

  • 一般来说,电脑上的RS-232串口电压是12V,而MAX232在使用时,V+会产生+10V的电压,V-会产生-10V的电压(如果功耗不是很大的话,这个芯片一定程度上可以当作稳压芯片来使),足够满足电脑的电平需求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记录无知岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值