USART,UART,RS232,USB,SPI,I2C,TTL等。所有这些都是什么,它们之间有何关系?


165

作为电子新手,我听说过这些术语,并且到处都有。从根本上讲,我了解它们全部基于设备,计算机,外围设备等之间的通信。

我对它们全部如何工作有基本的了解,但是当我看到它们太多时却感到困惑,并且很难理解它们之间的关系。例如,UART是USART的子集吗?RS232和串口有什么区别?所有这些通信方法之间的核心区别是什么:可靠性,成本,应用程序,速度,硬件要求?

如果可以想象,我把所有这些术语写在卡片上,分散在咖啡桌上,我需要有人来帮助我组织我的理解。如果这个问题有点模糊,请原谅我,但我真的觉得这是所有问题的本质。


Answers:


253

串行是所有“时分复用”的总称,使用昂贵的术语。这意味着数据会随着时间散布,通常是一个接一个地发送。您命名的所有协议都是串行协议。

串口对于通用异步接收器发送器,是最常用的串行协议之一。它几乎和我一样大,非常简单。大多数控制器在板上都有一个硬件UART。它使用一条数据线进行传输,并使用一条数据线接收数据。最常见的是传输8位数据,如下所示:1个起始位(低电平),8个数据位和1个停止位(高电平)。低电平起始位和高电平停止位意味着始终存在从高到低的转换来启动通信。那就是描述UART的原因。无电压电平,因此您可以使用3.3 V或5 V(无论您的微控制器使用哪种)。请注意,要通过UART进行通信的微控制器必须在传输速度,比特率方面达成一致,因为它们只有开始位的下降沿才能进行同步。这就是所谓的异步通信。

对于长距离通信(不一定是几百米),5 V UART并不是很可靠,这就是为什么它被转换为更高的电压的原因,“ 0”通常为+12 V,“ 0”通常为-12V。 1“。数据格式保持不变。然后便有了RS-232(实际上应该将其称为EIA-232,但没有人这样做。)

时序依赖性是UART的一大弊端,解决方案是USART,用于通用同步/异步接收器发送器。这样既可以做UART,又可以做同步协议。在同步中,不仅有数据,而且还有时钟传输。每一位都有一个时钟脉冲告诉接收器它应该锁存该位。同步协议或者需要更高的带宽(例如在曼彻斯特编码的情况下),或者需要额外的时钟线(例如SPI和I2C)。

SPI(串行外围接口)是另一个非常简单的串行协议。主机发送一个时钟信号,并在每个时钟脉冲上将一位移出到从机,另一位移入从机。因此,信号名称为时钟的SCK,对于主机输出从机输入为MOSI,对于主机输入从机输出为MISO。通过使用SS(从选择)信号,主机可以控制总线上的多个从机。有两种方法可以将多个从设备连接到一个主机,一种在上面提到,即使用从设备选择,另一种是菊花链连接,它使用较少的硬件引脚(选择线),但是软件变得复杂。

I2C(集成电路间,发音为“ I squared C”)也是一种同步协议,这是我们所看到的第一个带有“智能”的协议。其他的则愚蠢地将位移入和移出,就是这样。I2C仅使用2条线,一条用于时钟(SCL),另一条用于数据(SDA)。这意味着主机和从机通过同一根导线发送数据,并再次由创建时钟信号的主机控制。I2C不会使用单独的从选择来选择特定的设备,但是具有寻址功能。主机发送的第一个字节包含一个7位地址(以便您可以在总线上使用127个设备)和一个读/写位,指示下一个字节还是来自主机还是应该来自主机。奴隶。在每个字节之后,接收器必须发送“ 0”以确认接收到该字节,主机用第9个时钟脉冲锁存。如果主机要写入一个字节,则重复相同的过程:主机将一位接一位地放在总线上,每次给出一个时钟脉冲以表示已准备好读取数据。如果主机要接收数据,则仅产生时钟脉冲。给定时钟脉冲时,从机必须注意下一个位已准备就绪。该协议已获得NXP(以前为Phillips)的专利,以节省许可成本,Atmel使用TWI(2线接口)一词,该词与I2C完全相同,因此任何AVR设备都不会具有I2C,但会具有TWI。如果主机要接收数据,则仅产生时钟脉冲。给定时钟脉冲时,从机必须注意下一个位已准备就绪。该协议已获得NXP(以前为Phillips)的专利,以节省许可成本,Atmel使用TWI(2线接口)一词,该词与I2C完全相同,因此任何AVR设备都不会具有I2C,但会具有TWI。如果主机要接收数据,则仅产生时钟脉冲。给定时钟脉冲时,从机必须注意下一个位已准备就绪。该协议已获得NXP(以前为Phillips)的专利,以节省许可成本,Atmel使用TWI(2线接口)一词,该词与I2C完全相同,因此任何AVR设备都不会具有I2C,但会具有TWI。

同一条线上的两个或多个信号可能会导致冲突,如果一个设备发送“ 1”而另一设备发送“ 0”,则可能会出现问题。因此,总线采用线或运算:两个电阻将总线拉至高电平,而设备仅发送低电平。如果他们想发送高电平,他们只需释放总线。

TTL(晶体管晶体管逻辑)不是协议。这是一种较旧的数字逻辑技术,但该名称通常用于指代5 V电源电压,通常不正确地指代应称为UART的东西。


关于这些,您可以写一本书,看来我很顺利。这只是一个非常简短的概述,让我们知道是否需要澄清一些事情。


仅在TTL上为+1,我猜测OP表示串行TTL,以我的经验,它描述了RS232收发器/总线驱动器之前的UART信号。
肯尼,2012年

4
@Kenny-但是没有“串行TTL”之类的东西。那是UART。如果电压为3.3 V怎么办?该TTL仅指5 V.
stevenvh

这就是我在说的,在我的TTL串行体验中,通常将UART的I / O称为。
肯尼

惊人的回应!我会再读几遍,如果我有任何疑问,请告诉您。谢谢,史蒂文。
capcom'8

8
更好的选择是在Uart年龄捕鱼,然后:-)
Vaibhav Garg 2012年

11

这非常接近某些领域,在该领域中,阅读文章要比提出自定义响应问题更好,但要解决制造商有时会模糊的一个主要问题:

串行接口有两种基本类型:同步和异步。

同步接口以相对于显式时钟的时序发送数据,该时钟也已提供。典型的例子是SPI,但也有特殊的形式,例如用于音频转换器的I2S,JTAG,FPGA配置接口等。许多并行通信通道只是将这种思想扩展为一次移动更多位。通常,但并非总是如此,它们首先发送最高有效位。

异步接口将时序编码在数据流本身中。对于“串行端口”和相关标准(例如RS232),字的时序是相对于起始位的,接收器此后仅以正确的间隔对线路进行采样。其他接口可能会更复杂,并且需要使用锁相环和算法来实现更高的时钟恢复。UART是一种“通用异步接收器发送器”,实际上是一个功能块的名称,通常用于实现“串行端口”,并且对字长,速率和起始/结束条件具有一定的灵活性。诸如RS232,RS422之类的东西是从这些数据中获得数据的板外电子信号传输的标准-电压,单端或差分,如果1为高或低等。

“ USART”可能是合法混淆的源头,因为它是一种混合设备,“通用同步/异步接收器发送器”从本质上讲,这是并且最常用作UART,但也可以配置为生成(或考虑)与数据同步的单独时钟,并且可能能够反转位顺序。它通常可配置为与SPI互操作,但是它可能无法消除专用于开始/停止位的时间,因此可能无法与I2S之类的东西一起使用,因为I2S可以期望数据连续流动而字之间没有间隙。


很好的解释(Y)很简洁。Thankyou @chris
Avi Mehenwal

8

RS-232是一种非常简单的串行协议,最初用于调制解调器和电传打字机。它通常被称为串行端口(或MS-Windows中的COM端口)。在线路上,它名义上使用±12V电平,但是由于检测指定为±3V,因此它们可能相差很大。总有一个线路驱动器(如今通常来自MAX232系列),可以将这些电平与计算机或微控制器的内部数字信号电平进行相互转换。

TTL表示晶体管-晶体管逻辑,其电平为0V附近的逻辑零和5V附近的逻辑1的电平。通常,任何5V逻辑都称为TTL,尽管当今大多数电路都以CMOS形式构建。如今,还有许多工作于3.3V的电路,而该电压已不再是TTL。

关于内部电平,RS-232线上的电平反转,+ 12V对应于逻辑低电平,而-12V对应于逻辑高电平,这可能会造成混淆。

为了描述数据格式,通常显示一个逻辑信号。当线路空闲时,它为高。传输从低位开始位开始,数据位先从最低有效位开始,然后是可选的奇偶校验位和一到两个停止位(逻辑1)。这称为异步传输,因为起始位和停止位分别同步每个字节的数据。

UART(通用异步接收器发送器)是计算机或微控制器中执行此类异步通信的设备。

USART(通用异步同步接收器发送器)是一种可以另外执行某种类型的同步发送的设备,因此可以执行附加的S。哪种类型有所不同,您需要在数据手册中进行查找。

SPI,I²C和USB的故事是不同的(对于USB来说很长)。


1

我同意有关SPI和CAN协议的内容。为了提高性能,已设计了CAN协议。在该仲裁概念中,两个设备准备通信,然后根据它们的优先级进行发送或接收。CAN已在许多行业中广泛使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.