一个做嵌入式的工程师,无论是做硬件还是软件,每天都在接触一些通信相关的名词,若不认真整理这些概念,就很可能会混淆或忘记具体的含义与区别,接下来整理了一下各种通信协议的区别。
PART.01 串行通信与并行通信的概念
1、串行通信
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。串口可以算是一个泛称,一般指代的是串口时序标准。UART、RS232、RS485、TTL都遵循着类似的通信时序协议,因此都被通称为串口。 串行通信(serial communication)是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。串行通信按照发送时钟源和接收时钟源是否需要保持一致,又可分为同步通信和异步通信两种。
2、并行通信
并行通信(Parallel communication)就是指数据的每一位同时在多根数据线上发送或者接收。可以以字或字节为单位并行进行。并行通信速度快,但用的通信线多、成本高,故不宜进行远距离通信。计算机或PLC各种内部总线就是以并行方式传送数据的。
总结:串行通信是一种概念,是指一个bit一个bit的收发数据,相对于并行通信可一次性可以同时收发n个bit而言。包括普通的串口通信,包括IIC,包括SPI等等。串口通信是一种通信手段/方式,是相对于以太网方式、红外方式、蓝牙方式、usb方式(usb广义也算串行通信)等而言,是一种比较低级的通信手段。
PART.02 UART
UART(Universal Asynchronous Receiver/Transmitter),意为通用异步收发传输器,该总线双向通信,可以实现全双工传输和接收。UART包含TTL电平的串口和RS-232电平的串口,使用UART通信的双方设备都需要遵从UART协议。 UART是串行通信的一种,重点是异步,和同步相对应,意思是不需要同步的时钟,通信两端预先约定bit的传输速率(每秒传多少bit),而不是由时钟触发的。 在嵌入式设计中,UART用于主机与辅助设备通信。UART是实现串口收发的逻辑电路(硬件形式),这部分可以独立成芯片,也可以作为模块嵌入到其他芯片里,单片机、SOC、PC里都会有UART模块,例如STM32单片机里有两种UART模块,USART和UART,前者可以同步通信,而后者只能异步通信。一般电脑是没有uart接口的(ttl电平),我们可以通过电脑的usb接口和单片机通信,只需一个usb转串口模块插到usb接口上,装上驱动,另一边接单片机即可。有很多可以usb协议转为串口协议的芯片,如ch340,cp2102,pl2303等。 1、TX -- 数据发送接口 2、RX -- 数据接受接口 两个设备间将TX与RX相连,RX与TX相连即可正常工作。
PART.03 TTL电平
TTL是Transistor-Transistor Logic的简写,是一种电平逻辑,晶体管-晶体管逻辑。通常我们采用二进制来表示数据,为了表示二进制,需要用高低电平表示这些二进制数,3.3V/5V等价于逻辑“1”,0V等价于逻辑“0”。UART特指单片机的UART端口,使用的就是TTL电平。嵌入式里面说的串口,一般是指UART口,而TTL、RS-232、RS-485是指的电平标准(电信号)。
1、标准TTL电平逻辑
输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.8V为逻辑0;
输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)1.2V为逻辑0;
2、CMOS电平
输出电路:电压大于等于(≥)0.9×Vcc为逻辑1;电压小于等于(≤)0.1×Vcc为逻辑0;
输入电路:电压大于等于(≥)0.7×Vcc为逻辑1;电压小于等于(≤)0.3×Vcc为逻辑0;
PART.04 RS-232
RS-232接口符合美国电子工业联盟(EIA)制定的串行数据通信的接口标准,全双工,其中 RS 为英文 “Recomend Standard” 的缩写,中文翻译为“推荐标准”,232为标识号。原始编号全称是EIA-RS-232(简称232,RS232)。它被广泛用于计算机串行接口外设连接,连接电缆和机械、电气特性、信号功能及传送过程,其输出的电平称为 RS232 电平。
1、RS-232电平逻辑
RS-232不同于TTL的电平逻辑,为负逻辑,最简单的RS232通信由三条数据线组成,即 TxD、RxD 和GND。负12V代表高电平,即-15V ~ -3V为逻辑1,正12V代表低电平,即+3V ~ +15V为逻辑0,电压也有标准范围。这里的电平,是TXD线(或者RXD线)相对于 GND 的电压。
2、D型9针接口定义
记住一点,这种接口的协议只有两种:RS-232和RS-485。不会是TTL电平的(除非特殊应用)。 一般用的最多的是RXD、TXD、GND,三个信号。
3、USB转RS-232
USB转232,可以先将USB转换为TTL,再将TTL转换为RS232,市面上也有很多USB直接转RS232的线材,线材内部集成转换电路。
4、TTL和RS-232互转
在实际中由于需要,有时候会要将TTL电平转化为RS232电平,有时候也会要将RS232电平转化为TTL电平,因为单片机接口一般是TTL电平,如果需要接232电平的外设,就需要加TTL转RS232的模块,转换方向是双向的。能实现TTL和RS232电平互相转换最常用的芯片是MX232。 PART.05 RS-485 RS-485和RS-232一样,都是串行通信标准,现在的标准名称是TIA/EIA-485-A,习惯称为RS-485标准,半双工,使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS-485使得廉价本地网络以及多支路通信链路的配置成为可能,而且增加了联网功能。
1、RS-485电平逻辑
RS-485和RS-232单端传输不一样,是差分传输,使用一对双绞线,其中一根线定义为A,另一个定义为B,一般收发器内部是一个发送器加一个收发器组成。对于使能信号,字母上面加一横的为低电平有效,不加的为高电平有效。逻辑“1”以两线间的电压差为+(2 ~ 6)V表示;逻辑“0”以两线间的电压差为-(2 ~ 6)V表示,使能端起作用和其他状态时为高阻态。
2、TTL和RS-485转换
TTL转成RS-485很常见,收发器芯片市面上很多,比如MAX485,用起来也很简单,一般左边接MCU的GPIO,用来控制。
3、RS-232和RS-485转换
RS-232和RS-485之间可以转换,一个方法是RS-232转换成TTL,再由TTL转换为RS-485,当然也有芯片支持将RS-232支持转换成RS-485,双向转换。 PART.06 USB USB是Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术,USB接口的特点是传输速度快,支持热插拔,可连接多个设备。 一条USB传输线分别由地线、电源线、D+和D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以在编程中设置)。USB设备可以直接和HOST通信,或者通过Hub和Host通信。一个USB系统中仅有一个USB 主机,设备包括USB功能设备和USB HUB,最多支持127个设备。物理连接指的是USB传输线。在USB 2.0系统中要求使用屏蔽双绞线。
1、USB速率
USB1.0:低速模式(low speed):传输速率为1.5Mbps; USB1.1:全速模式(full speed):传输速率为12Mbps; USB2.0:向下兼容,高速模式(high speed):25~480Mbps; USB3.0:向下兼容,(super speed):理论上最高达5Gbps,实际中,也就是high speed 的10倍左右; USB3.1:Gen2 超高速(SuperSpeed +)传输速率为 10Gbps。
2、USB接口定义
常见的Type-A型USB接口定义如下。
pin# | Name | 颜色 |
1 | VBUS/+5V | 红色 |
2 | D-/DM | 白色 |
3 | D+/DP | 绿色 |
4 | GND | 黑色 |
PART.07 CAN总线 CAN是Controller Area Network的简称,是一种有效支持分布式控制或实时控制的串行通信网络,现在是汽车网络的标准协议。
1、CAN电平逻辑
显性电平:逻辑0 典型值 CAN_H = 3.5V,CAN_L = 1.5V; 隐性电平:逻辑1 典型值 CAN_H = 2.5V,CAN_L = 2.5V; 总结:TTL电平一般用于芯片与芯片之间的通信;RS232采用了正负逻辑电平,提高线路的抗干扰性最远可以达到15米左右;如果更远的距离会采样RS485,它使用两线制的差分信号传输,最远可至1200米;RS232全双工只支持点对点通讯(1:1),RS485半双工或单双工支持总线形式通讯(1:N)。当我们在做电路工作时,应该注意下外设的串口是Uart类型的还是RS232类型的,如果不匹配,应当找个转换线(通常这根转换线内有块类似于Max232的芯片做电平转换工作的),不能盲目地将两串口相连。 1、RS232、RS-485最终结果都是转换为TTL电平方式与单片机通信(CAN收发器把差分信号转化为TTL-->CAN控制器(MCU))。其目的都是提高通信质量,提高抗干扰能力。 2、TTL、RS232是逻辑电平信号。RS-485、CAN为差分信号。 PART.08 I2C I2C总线是由Philips公司开发的一种简单、半双工、双向二线制同步串行总线。它只需要两根线(SDA、SCL)即可在连接于总线上的器件之间传送信息。同一时刻可以单主机多从机或单主机单从机,I2C总线上的任意设备都可以当主机,一般主机是MCU,当有多个主机时,会通过总线仲裁的方式选出一个主机,其他退出作从机。
Mode | 标准模式 | 快速模式 | 高速模式 |
Rate | 100Kbit/s | 400Kbit/s | 3.4Mbit/s |
SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平。 主机用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从机,在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从机,则主机首先寻址从机,然后主动发送数据至从机,最后由主机终止数据传送;如果主机要接收从机的数据,首先由主机寻址从机。然后主机接收从机发送的数据,最后由主机终止接收过程。在这种情况下,主机负责产生定时时钟和终止数据传送。 PART.09 SPI SPI是串行外设接口(Serial Peripheral Interface)的缩写,意为串行外围接口,是摩托罗拉首先在其MC68HCXX系列处理器上定义的,SPI是一种高速的,全双工,同步的通信总线,SPI的速率比I2C高,一般可以到几十Mbps,不同的器件当主机和当作从机的速率一般不同。SPI最典型的应用是单主机单从机,下图是接线方式,当然也可以多从机。
审核编辑:黄飞
评论
查看更多