资讯详情

I2C,SPI,UART,USART,USB 的区别及串行总线的选择

I2C,SPI,UART,USART,USB 串行总线的差异和选择

SPI(Serial Peripheral Interface:串行外设接口);

I2C(INTER IC BUS:意为IC之间总线)

UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)

USART:通用同步异步收发器

USB:Universal Serial BUS(通用串行总线)

CAN:现场总线

SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI多个总线可以实现SPI设备相互连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或设备(Slave)。全双工通信可以从设备间实现,当有多个设备时,也可以从设备选择线增加一条。

如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个端口取决于实现的设备类型。如果要实现主设备,则需要输入输出口。如果只实现主设备,则需要输出口。如果只实现设备,则只需要输入口。

I2C总线为双向、两线(SCL、SDA)、串行,多主控(multi-master)接口标准,总线仲裁机制,非常适合设备之间的近距离、非常频繁的数据通信(我的平衡车读取MPU使用6050模块的数据I2C总线)。在其协议系统中,目的设备的设备地址将被带到传输数据时,因此设备网络可以实现。

如果用通用IO口模拟I2C总线需要输入输出口才能实现双向传输(SDA),还需要一个输出口(SCL)。(注:I2C信息知之甚少,这里的描述可能不完整)

UART总线是异步串口,所以它通常比前两个同步串口的结构复杂得多(单片机书中介绍的不复杂),通常由波特率生成器(波特率等于传输波特率的16倍),UART接收器、UART硬件由两条线组成,一条用于发送,一条用于接收。

显然,如果使用通用IO口模拟UART总线需要输入口和输出口。

从第二点可以清楚地看出,SPI和UART全双工可以实现,但是I2C不行。

wudanyu:I2C线更少,我觉得比UART、SPI更强大,但技术上更麻烦,因为I2C需要有双向IO我认为抗干扰能力阻,我认为抗干扰能力较弱,一般用于同一板卡芯片之间的通信,远距离通信较少。SPI实现简单,UART需要固定波特率,即两位数据之间的间隔应相等,SPI没关系,因为是时钟协议。

quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但连接也比标准更复杂SPI要少。

4.不同的核心通信协议:

SPI 允许主设备启动与从设备同步通信的协议,以完成数据交换。也就是SPI是规定的通信方式。这种通信方式的优点是占用端口较少,一般4根就够基本通讯了。传输速度也很高。一般来说,主设备必须有SPI基于控制器(但可以模拟)SPI芯片通信。

SPI 通信原理很简单,至少需要4条线,其实3条线也可以。也是所有的基础SPI它们是设备共有的SDI(数据输入),SDO(数据输出),SCK(时 钟),CS(片选)。其中CS是否选择控制芯片,即只有当芯片选择信号为预先规定的使能信号(高电位或低电位)时,芯片的操作才能有效。这就允许 多个连接在同一总线上SPI设备成为可能。

接下来,负责通信的三条线。通信是通过数据交换完成的,这里首先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK原始时钟线存在 因,由SCK提供时钟脉冲,SDI,SDO基于此脉冲完成数据传输。通过数据输出SDO当时钟上缘或下缘发生变化时,线发生变化,在下边缘或上边缘读取。 同样的原理也用于完成数据传输。通过这种方式,8位数据的传输可以在至少8次时钟信号的变化(上下边缘为一次)中完成。

需要注意的是,SCK信号线仅由主设备控制,信号线不能由设备控制。同样,在一个基础上SPI至少有一个主控设备。

这种传输的特点:这种传输方式有一个优点。与普通串行通信不同,普通串行通信一次至少传输8位数据,SPI允许数据一个接一个地传输,甚至暂停,因为SCK时钟线由主控设备控制。当没有时钟跳变时,数据不会从设备中收集或传输。也就是说,主设备是对的SCK控制时钟线可以控制通信。

SPI还是数据交换协议:因为SPI数据输入和输出线是独立的,因此数据输入和输出可以同时完成。

不同的SPI设备的实现方式不同,主要是由于数据变更和采集时间不同,对时钟信号的上下边缘采集有不同的定义,请参考相关设备的文件。

只需要两条总线:一条串行数据线SDA 串行时钟线SCL

连接到总线的每个设备都可以通过唯一的地址和简单的主机从关系软件设置地址。主机可以用作主机发送器或主机接收器

如果两个或两个以上的主机同时初始化数据传输,可以通过冲突检测和仲裁来防止数据损坏

串行的8 标准模式下,双向数据传输位率可达100kbit/s 快速模式下可达4000kbit/s 高速模式可达3.4Mbit/s

滤波器可以过滤总线数据线上的毛刺波,确保数据完整

连接到相同的总线IC 总线最大电容量仅为400pF 限制

UART总线是异步串口,所以它通常比前两个同步串口的结构复杂得多,通常由波特率生成器(波特率等于传输波特率的16倍),UART接收器、UART硬件由两条线组成,一条用于发送,一条用于接收。

显然,如果使用通用IO口模拟UART总线需要输入口和输出口。

UART常用于控计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。

UART是通用异步收发器(异步串行通信口)的英文缩写,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的数据链路层(上一层)的概念。 COM口是PC(个人计算机)上,异步串行通信口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM口均为RS232。若配有多个异步串行通信口,则分别称为COM1、COM2...

 

明显可以看出,SPI和UART可以实现全双工,但I2C不行

 

USART:通用同步异步收发器。(与UART的区别很明显)

UART:universal asynchronous receiver and transmitter通用异步收发器;

USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器。一般而言,单片机中,名称为UART的接口一般只能用于异步串行通讯,而名称为USART的接口既可以用于同步串行通讯,也能用于异步串行通讯。

是英文Universal Serial BUS(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC 领域的接口技术。USB 接口支持设备的即 即用和热插拔功能。USB 是在1994 年底由尔、康柏.IBM、Microsoft 等多家公司联合提出的.

USB的电气特性还有传输特性

 

当总线空闲时,任何CAN节点都可以开始数据发送。如果两个或更多的节点同时开始发送,就使用标识符来进行按位仲裁以解决访问冲突。CAN是一个广播类型的总线,所有节点都接收总线上的数据,硬件上的过滤机制决定消息是否提供给该接点用。

该帧从一个发送器承载数据到一个接收器。根据CAN规范有两种数据帧格式,它们的唯一本质区别在于标识符的长度:CAN标准帧,也称为CAN2.0A,支持11位长度的标识符;另一个是CAN扩展帧,也称为CAN2.0B,支持29位长度的标识符。图2显示了两种规范的CAN数据帧。

此帧由一个接收CAN节点发送,用来请求带有远程帧中规定的标识符的数据帧。

此帧将任何总线错误通知其它单元,在接收到这个帧时发送器会自动进行消息重发。

超载帧由一个忙的CAN节点送出,以请求在前后数据帧之间增加一个额外的延迟。

 

基本CAN(Basic CAN)控制器:这是一种廉价的CAN控制器,具有有限的发送/接收消息缓冲器,以及有限的CAN消息过滤机制。

完全CAN(Full CAN)控制器:完全CAN是一个高成本、高性能的CAN控制器,具有能缓冲8个或更多消息的缓冲器用于接收和发送。例如,富士通的集成CAN微控制器能提供16个消息缓冲器用于接收和发送。此外,富士通的MB90443微控制器能灵活地将两个CAN控制器的消息缓冲器组合在一个中,以形成能缓冲32个消息的缓冲器。

标准CAN控制器:该CAN控制器能够处理仅有11位标识符的消息。

扩展CAN控制器:该控制器能够处理含有11位和29位标识符的消息。

时间触发CAN(TTCAN)控制器:该CAN控制器根据时间和事件的触发来安排CAN消息,增强了CAN网络的总体性能和行为的确定性。

 

       数据字节的传输首先从最高位开始。一个8位的数据字节能在一次发送中进行传输,最大的CAN总线速度是1Mbps。

 

       大多数CAN微控制器需要一个外部收发器来连接物理总线。目前市场上提供以下一些收发器:

       高速CAN收发器有飞利浦的82C251,TI的SN65/75LBC031,Bosch的CF150,C250,Unitrode的UC5350;

       低速CAN收发器有飞利浦82C252、TJA1053,西门子TLE 6252G;

       单线CAN收发器有飞利浦AU5790,英飞凌TLE 6255,Delphi DK166153。

 

微控制器是当今各种先进电子产品的核心,它需要与一个或多个外设器件通信。以前,µC的外设是以存储器映射方式与数据和地址总线连接的。对地址线译码以获得片选信号,从而在有限的地址范围内为每个外设分配唯一的地址。这种接口类型所需的最少引脚数(除电源和地之外)为:8 (数据) + 1 (R//W) + 1 (/CS) + n条地址线[n = log2(内部寄存器或存储器字节的数目)]。例如,与一个16字节外设通信时,需要的引脚数为:8 +1 + 1 + 4 = 14。这种接口的访问速度快,但较多的引脚数也同时带来了封装尺寸增大和总成本提高的问题。要降低成本和缩小封装尺寸,串行接口显然是理想的替代方案。

 

选择串行总线并非易事。除需要考虑数据速率、数据位传输顺序(先传最高位或最低位)和电压外,设计者还应该

通过何种方式选择某个外设(通过硬件片选输入或软件协议)。

外设如何与µC保持同步(借助一条硬件时钟线,或借助内嵌于数据流中的时钟信息)。

数据是在单根线上传输(在“高”和“低”之间转换),还是在一对差分线上传输(两根线按相反的方向同时转换其电压)。

通信线路的两端均使用匹配电阻实现阻抗匹配(通常用于差分信号传输),还是不匹配或仅在一端匹配(通常用于单端总线)。

表1以矩阵的形式展示了各种通用总线系统之间的差异。16种可能组合中只有4种通用类型为大家所熟知。

 

除这些特性外,具体应用还会提出更多要求,如供电方式、隔离、噪声抑制、µC (主机)与外设(从机)间的最大传输距离、以及电缆连接方式(总线型、星型、可承受线路反接等)。提出类似要求的应用包括楼宇自动化、工业控制和抄表等,并且都已制定了相应的标准。

 

下面的一段话看看就好了解一下:

如果实际应用可以提供时钟线,则总线选择范围可扩展到I²C12和SMBus13器件。根据SMBus的规范,它可以看作是100kbps I²C总线规范增加了超时特性后的派生总线类型。在某个节点与总线主机失去同步的情况下,超时特性可避免总线发生闭,而I²C系统则需要经过一次上电复位过程,才能从这种故障状态恢复至正常工作状态。在1-Wire系统中,复位/在线检测周期可将通信接口复位至确定的启动条件下。

 

除了时钟线外,I²C/SMBus还为总线上传输的每个字节提供一个应答位。这使得有效数据速率降低了12%。通信过程开始于一个启动条件,并跟随从器件地址和一个数据方向位(读/写),最后结束于一个停止条件。对于1-Wire系统,首先需要满足网络层的要求(即选择某个特定器件,执行search ROM命令或者广播);接下来发送与特定器件相关的命令代码,该代码同时会影响数据的传输方向(读/写)。

 

原有I²C和SMBus总线系统的一个突出问题是其有限的7位地址空间。由于可提供超过127种不同器件类型,我们无法根据从器件地址推断器件功能。此外,许多I²C器件还允许用户随意设置1个或多个地址位,以在总线上挂接多个相同器件。这种特性进一步减少了可用的地址空间。解决地址冲突问题的标准做法是将总线系统划分成若干段,某一时刻可在软件控制下激活某个网络段。该网络段需要增加更多硬件,也使应用固件更为复杂。I²C系统不具备网络节点查找或枚举功能,因此很难处理节点数动态变化的系统。这一问题可借助SMBus Specification Version 2.013中的地址分辨率协议得以解决。但是,支持该特性的SMBus器件极为稀少。

 

SPI14和MICROWIRE15 (SPI的子集)均需要为每个从器件提供一条额外的片选线。由于具有片选信号,SPI协议只定义了针对存储器地址和状态寄存器的读/写命令。它不提供应答功能。通常,SPI器件的数据输入和数据输出采用不同的引脚。鉴于数据输出在除了读操作外的任何情况下均为三态(禁止),因此可将两个数据引脚接到一起以构成单根双向数据线。当其它总线系统无法提供所需的功能或需要较高的数据传输速率时,可选用SPI总线,它可以支持2Mbps或更高的速率。SPI和MICROWIRE的不利因素在于产生CS信号的译码逻辑,以寻址某个特定器件。但是不会产生地址冲突问题。和I²C总线一样,不提供节点查找功能。主机无法根据从器件的逻辑地址来推断器件功能,因此很难管理节点动态变化的网络。

 

我们对这些标准进行讨论,以举例说明差分传输的特点。这类总线系统中传输速率最快的两种是FireWire16和USB 2.017,它们采用点对点电气连接。使用先进的节点或集线器,可以构成树状拓扑的虚拟总线,数据包从源发送至端点(USB),或采用对等传输(FireWire),突发数据速率高达480Mbps (USB 2.0)或1600Mbps (FireWire)。尺寸有限的数据包以及接收/缓冲/重发通信机制增加了传输时间,反过来降低了有效的数据吞吐能力。USB的拓扑和协议允许最多连接126个节点,FireWire允许最多63个节点,使用无源电缆时节点间的最大传输距离为4.5m。专为包括PC外设、多媒体、工业控制和航空(仅FireWire)应用而设计,USB和FireWire器件可以带电插入系统(热插拔)。该特性允许网络节点数动态变化。

 

LVDS18、RS-48519和CAN20可实现挂接主机和从机的总线型结构,甚至可以连接多个主机。这些标准中低压差分信号(LVDS)是速率最快的,如果总线长度不超过10m,可工作在100Mbps速率下。可用的数据速率及吞吐可以更快或更慢,具体取决于网络尺寸。LVDS电气标准专为背板应用而设计,支持热插拔功能,但不包含任何协议。

 

RS-485也仅定义了电气参数。RS-485定义了负载和每条总线的最大负载数目(32),而不是以节点的形式给出。一个电气节点的负载可以小于1。12m网络距离下的典型数据速率可高达35Mbps,1200m距离下数据速率可达100kbps,这些特性足以满足数据采集和控制应用。RS-485设备的协议通常基于原来设计用于RS-232的部分协议。

 

与此不同,控制器局域网(CAN)为分布式实时控制定义了通信协议,安全性非常高,专门面向汽车应用和工业自动化领域。数据速率从40m距离下的1Mbps到1000m距离下的50kbps。寻址方式是基于消息的,协议本身对节点数没有任何限制。CAN节点支持热插拔,网络节点数可以动态变化。

 

在简单、低成本总线系统中,与LIN总线和SensorPath相比,1-Wire系统的从器件可提供最广泛的功能和网络驱动器。I²C和SMBus除了需要数据线和参考地之外,还需要时钟线和VCC电源,当然可供选择的器件功能也非常多。SPI和MICROWIRE需要额外的片选线,但可以提供更高的数据速率。除支持寄生供电和网络节点查找功能外,1-Wire接口和协议还支持热插拔,这一特性通常仅在使用差分信号的高速系统以及SMBus 2.0兼容产品中才提供。iButton®产品是使用极为广泛的热插拔1-Wire器件,热插拔是这类器件的正常工作方式。事实已经证明,1-Wire器件在下列应用中极为有效:全球识别号21、电路板/配件标识与认证10、温度检测和执行装置等。另外一种非常成功的1-Wire产品是具有安全存储器和质询-响应机制的器件,它能以最低的成本实现双向认证和软件代码保护22, 23。

       不同的应用在选择总线的标准方面并不同,下面是一些进行总线选择的通用参考准则:

       1.评估使用不同串行总线在网络上连接各种器件的系统成本。例如,在汽车应用中,一个只需要控制功能的系统可以用像LIN这类低成本的串行总线来管理。

       2.如果用在汽车中,CAN或LIN是较好的选择。由于它们具有很强的鲁棒性,因此具有较强的容故障能力和传输可靠性。

       3.注意器件间的距离,有些串行总线只支持短距离通信。

       4.确定在网络上将连接多少器件,以及总线将可能具有的电容量。有些串行总线对连在网络上的器件数目有限制。

       5.在效率、速度和可靠性方面确定对你最重要的性能。例如,对于一个安全关键系统来讲,可靠性是极为重要的,故而CAN是较好的选择(比如汽车)。

标签: dk1203电源ic集成电路

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台