串行通信/并行通信和UART口/USB口以及TTL、CMOS、RS-232、RS-485这些和通信相关的名词我们做电子的每天都在接触,但是如果不认真整理,我想很多人都不知道这些名词的具体含义和区别,因为我项目中刚好需要用到UART传输数据,所以就打算用这篇文章好好的归纳一下这些磨人的“通信名词”
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。
串口:可以算是一个泛称,一般指代的是串口时序标准。UART、RS232、RS485、TTL都遵循着类似的通信时序协议,因此都被通称为串口。
串行通信(serial communication)是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。
串行通信按照发送时钟源和接收时钟源是否需要保持一致,又可分为同步通信和异步通信两种。
具体可参考链接:https://blog.csdn.net/yangtalent1206/article/details/5822509
(补充串口的定义:串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。)
并行通信(Parallel communication)就是指数据的每一位同时在多根数据线上发送或者接收。可以字或字节为单位并行进行。并行通信速度快,但用的通信线多、成本高,故不宜进行远距离通信。计算机或PLC各种内部总线就是以并行方式传送数据的。
总结:串行通信是一种概念,是指一比特一比特的收发数据,相对于并行通信可一次性收发N比特而言。包括普通的串口通信,包括I2C,包括SPI等等。
串口通信是一种通信手段/方式,是相对于以太网方式、红外方式、蓝牙方式、usb方式(usb广义也算串行通信)等而言,是一种比较低级的通信手段。
再强调一遍,二者一个是一种概念,一个是一种实际的通信手段/方式,对咱们而言,几乎一样。
参考链接:https://www.jianshu.com/p/df2ed057b4a0(非常详细)
UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。
可以说UART不是接口,而是实现串口收发的逻辑电路,这部分可以独立成芯片,也可以作为模块嵌入到其他芯片里,单片机、SOC、PC里都会有UART模块。
接口
在单片机中UART可以说是一种最基本的配置,很多与电脑进行通信的设备都采用到它,按计算机最常规的说法就是串行通信。
1.、TX - 数据发送接口
2、RX - 数据接受接口
两个设备间将TX与RX相连,RX与TX相连即可正常工作。最常用到的就是我们电脑上的USB那就是个最典型的UART接口。
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。
接口
1、SCL - 串行时钟线
2、SDA - 串行数据线接口
SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容.而线路中电容会影响总线传输速度.当电容过大时,有可能造成传输错误.所以,其负载能力为400pF,因此可以估算出总线允许长度和所接器件数量。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。
SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
接口
1、MOSI – 主器件数据输出,从器件数据输入
2、MISO – 主器件数据输入,从器件数据输出
3、SCLK –时钟信号,由主器件产生,最大为fPCLK/2,从模式频率最大为fCPU/2
4、NSS – 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)
在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。
一条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系统中要求使用屏蔽双绞线。
USB是普遍使用的一种接口,和串口完全是两个概念。虽然也是串行方式通信,但由于USB的通信时序和逻辑电平标准都和串口完全不同,因此和串口没有任何关系。USB是高速的通信接口,用于PC连接各种外设,U盘、键鼠、移动硬盘、当然也包括“USB转串口”的模块。
USB总线包括:
USB1.1:
——-低速模式(low speed):1.5Mbps
——-全速模式(full speed): 12Mbps
USB2.0:向下兼容。增加了高速模式,最大速率480Mbps。
——-高速模式(high speed): 25~480Mbps
USB3.0:向下兼容。
——-super speed :理论上最高达4.8Gbps,实际中,也就是high speed 的10倍左右。
参考链接:https://blog.csdn.net/u010142953/article/details/82627591
通常我们采用二进制来表示数据,为了表示二进制,需要用高低电平表示这些二进制数。而且规定,+5V等价于逻辑“1”,0V等价于逻辑“0”。这样的数据通信及电平规定方式,被称做TTL(晶体管-晶体管逻辑电平)信号系统。这是计算机处理器控制的设备内部各部分之间通信的标准技术。
UART特指单片机的UART端口,使用TTL电平:
标准TTL输入高电平最小2V,输出高电平最小2.4V,典型值3.4V,输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V。
TTL 电平是 TTL 电路输出的电平,其中"TTL"是英文 “Transistor-Transistor Logic” 的缩写,中文翻译为“晶体管-晶体管逻辑”,因此 TTL 电路就是“晶体管-晶体管逻辑电路”。
由于电平是一个连续变化的电压范围,为了用这种模拟量的电压来表示数字量的逻辑1和逻辑0,TTL电平规定:
–输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;
–输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;
RS232 是美国电子工业协会于 1962 年发布的串行通信接口标准,其中 RS 为英文 “Recomend Standard” 的缩写,中文翻译为“推荐标准”,232为标识号。该标准对串行通信的物理接口及逻辑电平都做了规定。其输出的电平称为 RS232 电平。
RS485采用差分方式传输,最简单的RS232通信由三条数据线组成,即 TxD、RxD 和GND。RS232采用负逻辑电平,即-15V ~ -3V代表逻辑"1",+3V ~ +15V代表逻辑"0"。这里的电平,是TxD线(或者RxD线)相对于 GND 的电压。
RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS-485使得廉价本地网络以及多支路通信链路的配置成为可能,而且增加了联网功能。
逻辑"1”以两线间的电压差为+(2 ~ 6)V表示;逻辑"0"以两线间的电压差为-(2 ~ 6)V表示,使能端起作用和其他状态时为高阻态。
使用MAX232能实现在TTL和RS232之间的相互转化,参考电路图如上。
串口通信不包括并行通信,并行通信曾经有一个通用接口叫并口,被后来的一系列串行协议打趴下了。TTL现在是是一种数字电路的电平标准, 另一个相似的概念是CMOS电平。UART是串行通信的一种,重点是异步,和同步相对应,意思是不需要同步的时钟,通信两端预先约定bit的传输速率(每秒传多少bit),而不是由时钟触发的。USB是一个完整的通过串行方式传输数据的协议。初学嵌入式可以把RS232,串口,UART当作一种东西的。
补充1:
usb与串口的关系,刚开始确实比较容易搞混。一般电脑是没有uart接口的(ttl电平),那么拥有uart接口的单片机如何和电脑通信呢?我们可以通过电脑的usb接口和单片机通信,只需一个usb转串口模块插到usb接口上,装上驱动,另一边接单片机即可。有很多可以usb协议转为串口协议的芯片,如ch340,cp2102,pl2303等。
补充2:
TTL、RS232、RS485应用点:
TTL电平一般用于芯片与芯片之间的通信;RS232采用了正负逻辑电平,提高线路的抗干扰性最远可以达到15米左右;如果更远的距离会采样RS485,它使用两线制的差分信号传输,最远可至1200米;RS232全双工只支持点对点通讯(1:1),RS485半双工或单双工支持总线形式通讯(1:N)。
补充3:
摘自:https://www.zhihu.com/question/271616218/answer/365203637
USB是一种高速通信接口,和串口无关。串口是泛指,指代所有采用串口通信时序的接口。
TTL不是正规名称,只不过在某些情况下约定俗成的一种串口标准(电平标准,通信时序都是串口)
RS232、RS485都是串口标准。不同的串口标准虽然电平标准不一定相同,但通信时序协议都是大致相同的。
UART指的是实现UART通信的数字逻辑电路。
补充4:
UART是计算机中串行通信端口的关键部分。在计算机中,UART相连于产生兼容RS232规范信号的电路。RS232标准定义逻辑“1”信号相对于地为-3到-15伏,而逻辑“0”相对于地为+3到+15伏。所以,当一个微控制器中的UART相连于PC时,它需要一个RS232驱动器来转换电平。
Uart这里指的是TTL电平的串口;RS232指的是RS232电平的串口。
TTL电平是5V的,而RS232是负逻辑电平,它定义+5 ~ +12V为低电平,而-12 ~ -5V为高电平。
Uart串口的RXD、TXD等一般直接与处理器芯片的引脚相连,而RS232串口的RXD、TXD等一般需要经过电平转换(通常由Max232等芯片进行电平转换)才能接到处理器芯片的引脚上,否则这么高的电压很可能会把芯片烧坏。
我们平时所用的电脑的串口就是RS232的,当我们在做电路工作时,应该注意下外设的串口是Uart类型的还是RS232类型的,如果不匹配,应当找个转换线(通常这根转换线内有块类似于Max232的芯片做电平转换工作的),可不能盲目地将两串口相连。