当前位置:文档之家› SPI、I2C、UART三种串行总线协议及其区别

SPI、I2C、UART三种串行总线协议及其区别

第一个区别当然是名字:

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

I2C(INTEL IC BUS:英特尔IC总线)

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

第二,区别在电气信号线上:

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

假如用通用IO口模仿SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,假如要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非常常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。

如果用通用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要少。

区别:SPI:高速同步串行口。3~4线接口,收发独立、可同步进行

UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢

SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的

3根线实现数据双向传输

串行外围接口Serial peripheral interface

UART:通用异步收发器

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

将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。

I2C:能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。

SPI、I2C、UART三种串行总线协议的区别

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

I2C(INTER IC BUS)

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

SPI

The SPI includes these distinctive features:

? Master mode and slave mode

? Bi-directional mode

? Slave select output

? Mode fault error flag with CPU interrupt capability

? Double-buffered data register

? Serial clock with programmable polarity and phase

? Control of SPI operation during wait mode

SPI 有两种模式,Normal Mode and Bidirectional Mode,包括以下几根线:

SS Slave Select

SCK Serial Clock

MOSI Master Output, Slave Input

MISO Master Input, Slave Output

MOMI Master Output, Master Input

SISO Slave Input, Slave Output

其中前四根线用于Normal Mode ,常用的也是4根线的Normal Mode 。

MOSI

This pin is used to transmit data out of the SPI module when it is configured as a Master and receive data

when it is configured as Slave.

MISO

This pin is used to transmit data out of the SPI module when it is configured as a Slave and receive data

when it is configured as Master.

SS

This pin is used to output the select signal from the SPI module to another peripheral with which a data

transfer is to take place when its configured as a Masterand its used as an input to receive the slave select

signal when the SPI is configured as Slave.

SCK

This pin is used to output the clock with respect to which the SPI transfers data or receive clock in case of

Slave.

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

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

接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。

要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。

这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK 时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备

通过对SCK时钟线的控制可以完成对通讯的控制。

SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。

不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

I2C

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

? 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器

? 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏

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

? 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整

? 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制

UART

UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。

显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。

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

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

串口通信

定义

串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS 232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。

原理

串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(b yte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:

a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据

传输率同时也越慢。

d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

作用

RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。

SPIICUARTUSB串行总线协议的区别

S P I、I2C、U A R T、U S B串行总线协议的区别 SPI、I2C、UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用 异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出( SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互 相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Mast er),其他设备为SPI从机或从设备(Slave)。主从设备间可以 实现全双工通信,当有多个从设备时,还可以增加一条从设备 选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),

一 个输入口(SDI),另一个口则视实现的设备类型而定,如果 要 实现主从设备,则需输入输出口,若只实现主设备,则需输出 口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-mas ter)接口标准,具有总线仲裁机制,非常适合在器件之间 进 行近距离、非经常性的数据通信。在它的协议体系中,传输数 据时都会带上目的设备的设备地址,因此可以实现设备组网。如果用通用IO口模拟I2C总线,并实现双向传输,则需一 个输 入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复 杂很多,一般由波特率产生器(产生的波特率等于传输波特 率 的16倍)、UART接收器、UART发送器组成,硬件上由两根线,

几大通信协议区别

I2C和SPI,UART的区别 2009-12-07 21:55 SPI--Serial Peripheral Interface,(Serial Peripheral Interface:串行外设接口)串行外围设备接口,是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。 I2C--INTER-IC(INTER IC BUS:意为IC之间总线)串行总线的缩写,是PHILIPS 公司推出的芯片间串行传输总线。它以1根串行数据线(SDA)和1根串行时钟线(SCL)实现了双工的同步数据传输。具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。 能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。 最主要的优点是其简单性和有效性。它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。 UART(Universal Asynchronous Receiver Transmitter:通用异步收发器):单端,远距离传输。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。----------------------------------------------------------------------------------------------------------------------------------- 区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。

SPI、I2C、UART三种串行总线协议的区别

第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输 入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以 实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO 口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现 的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输 出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。 在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现 设备组网。如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入 输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这 里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般 由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、 UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。显然, 如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行; 第四,看看牛人们的意见吧! 1、I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单 一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无 所谓,因为它是有时钟的协议。 2、I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

IIC总线协议最佳理解

IIC总线协议 1)IIC总线的概念 IIC总线是一种串行总线,用于连接微控制器及其外围设备,具有以下特点: ①两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL) ②每个连接到总线的器件都可以使用软件更具它的唯一的地址来识别 ③传输数据的设备间是简单的主从关系 ④主机可以用作主机发送器或主机接收器 ⑤它是一个多主机总线,两个或多个主机同时发起数据传输时,可以通过冲突检测和仲裁来方式数据被破坏 ⑥串行的8位双向数据传输,位速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s ⑦片上的滤波器可以增加干扰功能,保证数据的完整 ⑧连接到同一总线上的IC数量受到总线最大电容的限制 发送器:发送数据到总线的器件 接收器:从总线接收数据的器件 主机:发起/停止数据传输、提供时钟信号的器件 从机:被主机寻址的器件 多主机:可以有多个主机试图去控制总线,但是不会破坏数据 仲裁:当多个主机试图去控制总线时,通过仲裁可以使得只有一个主机获得总线控制权,并且它传输的信息不会被破坏 同步:多个器件同步时钟信号的过程

I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL 都是线“与”关系。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱, I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。 在80C51单片机应用系统的串行总线扩展中,我们经常遇到的是以80C51单片机为主机,其它接口器件为从机的单主机情况。 数据位的有效性规定: I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态

汽车总线系统通信协议分析与比较

河南机电高等专科学校 《汽车单片机与局域网技术》 大作业 专业班级:汽电112 姓名:史帅峰 学号:111606240 成绩: 指导老师:袁霞 2013年4月16日 汽车总线系统通信协议分析与比较 摘要:本文主要针对汽车总线系统通讯协议,探讨汽车总线通讯协议的种类、发展趋势以及技术特点。在对诸多组织和汽车制造商研发的各类汽车总线进行比较和探讨的基础上,对其现状进行了分析;并综合汽车工业的特点对这两大类汽车总线协议的发展前景作了分析。关键词:汽车总线技术通讯协议车载网络 引言:汽车电子技术是汽车技术和电子技术结合发展的产物。从20世纪60年代开始,随着电子技术的飞速发展,汽车的电子化已经成为公认的汽车技术发展方向。在汽车的发展过程中,为了提高汽车的性能而增加汽车电器,电器的增加导致线缆的增加,而线束的增加又使整车质量增加、布线更加复杂、可维护性变差,从而又影响了汽车经济性能的提高。因此,一种新的技术就被研发出来,那就是汽车总线技术。总线技术在汽车中的成功应用,标志着汽车电子逐步迈向网络化。 一、车载网络的发展历程 20世纪80年代初,各大汽车公司开始研制使用汽车内部信息交互的通信方式。博世公司与英特尔公司推出的CAN总线具有突出的可靠性、实时性和灵活性,因而得到了业界的广泛认同,并在1993年正式成为国际标准和行业标准。TTCAN对CAN协议进行了扩展,提供时间触发机制以提高通讯实时性。TTCAN的研究始于2000年,现已成为CAN标准的第4部分ISO11898-4,该标准目前处于CD(委员会草案)阶段。 1994年美国汽车工业协会提出了1850通信协议规范。从1998年开始,由宝马、奥迪等七家公司和IC公司共同开发能满足车身电子要求的低成本串行总线技术,该技术在2000年2月2日完成开发,它就是LIN。 FlexRay联盟推进了FlexRay的标准化,使之成为新一代汽车内部网络通信协议。FlexRay车载网络标准已经成为同类产品的基准,将在未来很多年内,引导整个汽车电子产品控制结构的发展方向。FlexRay是继CAN和LIN之后的最新研发成果。 车载网络的分类及其网络协议 从20世纪80年代以来不断有新的网络产生,为了方便研究和应用,美国汽车工业协会(SAE)的车辆委员会将汽车数据传输网络划分为A、B、C三类。 A类网络 A类网络是面向传感器/执行器控制的低速网络,数据传输速度通常小于10kb/s,主要用于后视镜调整、电动车窗、灯光照明等控制。 A类网络大都采用通用异步收发器(UART,Universal Asynchronous Receiver/Trsmitter)标准,使用起来既简单又经济。但随着技术水平的发展,将会逐步被其他标准所代替。 A类网络目前首选的标准是LIN总线,是一种基于UART数据格式、主从结构的单线12V总线通信系统,主要用于智能传感器和执行器的串行通信。

SPI、I2C、UART三种串行总线协议的区别

SPI、I2C、UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART 发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;

485与can协议的区别

485与can协议的区别 1.引言 1986年2月,Robert Bosch公司在SAE 汽车工程协会大会上介绍了一种新型的串行总线CAN控制器局域网,那是CAN 诞生的时刻。今天在欧洲几乎每一辆新客车均装配有CAN 局域网,同样CAN也用于其他类型的交通工具从火车到轮船或者用于工业控制。CAN 已经成为全球范围内最重要的总线之一,甚至领导着串行总线,在1999年接近6 千万个CAN 控制器投入应用,2000年市场销售超过1 亿个CAN 器件。但在国内,基于历史或者其他的原因,大多数的厂商工程师在设计产品工程立项时,第一想到的是应用RS-485总线系统。但是,随着社会的发展,对计算机控制要求越来越高,现场应用的条件越来越复杂,所以,CAN网络总线替代RS-485网络总线将成为历史的必然趋势。 2.RS-485和CAN网络总线性能比较 RS-485是一种半双工、全双工异步通信总线,是为弥补RS-232 通信距离短、速率低等缺点而产生的。RS-485只规定了平衡驱动器和接收器的电气特性,而没有规定接插件、传输电缆和应用层通信协议,因而在当时看来是一种相对经济、具有相当高噪声抑制、相对高的传输速率、传输距离远和宽共模范围的平台。RS-485总线上只能有一个主机,往往应用在集中控制枢纽与分散控制单元之间。但是,CAN-bus 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性而且能够检测出产生的任何错误。CAN- bus总线在通信能力可靠性、实时性、灵活性、易用性、传输距离远、成本低等方面有着明显的优势,成为业界最有前途的现场总线之一。RS-485与CAN总线性能比较见表1: 通过表1比较可知:RS-485 网络除了硬件成本开发难度比CAN-bus 网络稍具优势外,其他性能方面都没有可比性。在产品更新速度特别快的今天,如果将产品的上市时间产品的后期维护、软件开发难度等计算在一起,RS-485 的硬件成本优势也变得不十分明显,因而用CAN 总线取代R S-485 总线是一种比较彻底的方案。 特性RS-485 CAN-bus 成本低廉稍高,多20-30元/节点 总线利用率低高 网络特性单主节点多主节点 数据传输率低高

UART以及其他接口协议

UART以及其他接口协议 2007-06-26 16:42 由于在消费类电子产品、计算机 外设、汽车和工业应用中增加了 嵌入式功能,对低成本、高速和 高可靠通信介质的要求也不断增 长以满足这些应用,其结果是越 来越多的处理器和控制器用不同 类型的总线集成在一起,实现与 PC软件、开发系统(如仿真器)或网 络中的其它设备进行通信。目前 流行的通信一般采用串行或并行 模式,而串行模式应用更广泛。 微处理器中常用的集成串行总线 是通用异步接收器传输总线、串 行通信接口、同步外设接口(SPI)、 内部集成电路(I2C)和通用串行总 线,以及车用串行总线,包括控制器区域网(CAN)和本地互连网(LIN)。这些总线在速度、物理接口要求和通信方法学上都有所不同。本文将对嵌入式系统设计的串行总线、驱动器和物理接口这些要求提供一个总体介绍,为选择最优总线提供指导并给出一个比较图表(表1)。为了说明方便起见,本文的阐述是基于微处理器的设计。 串行与并行相比 串行相比于并行的主要优点是要求的线数较少。例如,用在汽车工业中的LIN串行总线只需要一根线来与从属器件进行通信,Dallas公司的1-Wire总线只使用一根线来输送信号和电源。较少的线意味着所需要的控制器引脚较少。集成在一个微控制器中的并行总线一般需要8条或更多的线,线数的多少取决于设计中地址和数据的宽度,所以集成一个并行总线的芯片至少需要8个引脚来与外部器件接口,这增加了芯片的总体尺寸。相反地,使用串行总线可以将同样的芯片集成在一个较小的封装中。 另外,在PCB板设计中并行总线需要更多的线来与其它外设接口,使PCB板面积更大、更复杂,从而增加了硬件成本。此外,工程师还可以很容易地将一个新器件加到一个串行网络中去,而且不会影响网络中的其它器件。例如,可以很容易地去掉总线上旧器件并用新的来替代。 。 串行总线的故障自诊断和调试也非常简单,可以很容易地跟踪网络中一个有故障的器件并用新器件替换而不会干扰网络。但另一方面,并行总线比串行速度快。例如,Rambus公司的“Redwood”总线速度可高达,而最高的串行速度不会超过几个兆赫。 在工业和汽车应用中常用的串行协议

SPI、I2C、UART、USB串行总线协议的区别

SPI、I2C、UART、USB串行总线协议的区别 SPI、I2C、UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出( SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI 设备互 相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Mast er),其他设备为SPI从机或从设备(Slave)。主从设备间可 以 实现全双工通信,当有多个从设备时,还可以增加一条从设备 选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一

个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出 口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-mas ter)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数 据时都会带上目的设备的设备地址,因此可以实现设备组网。如果用通用IO口模拟I2C总线,并实现双向传输,则需一 个输 入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资 料 了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复 杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线, 一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个

串行通行协议汇总

串行通信协议汇总 以下内容涉及到I2C、SPI、UART等串行通信协议 一、I2C 1、I2C总线定义 I2C是一种串行总线,只用时钟、数据线实现半双工串行通信,可实现多主机外挂多从机,具有总线总裁和高低速器件同步功能。一般速度在100K-400Kbps,最高为3.5M。 I2C总线通过上拉电阻接正电源,当总线空闲时,总线均为高,因此从器件释放总线即把输出拉为高阻态,总线才能被其他器件使用。当总线任意器件为输出为低,总线即为低,各器件SDA SCL为线与关系。 I2C总线上所有器件都有唯一地址,地址为7bit数据,即可外挂128个从器件。主机即可作为发送器,发送数据给从器件,也可从从器件接收数据。 2、I2C总线协议 起止信号:由主机产生,SCL=1 && SDA_ neg =1表示起始信号,总线处于被占用状态;SCL=1 && SDA_pos=1表示终止信号,总线处于被空闲状态。 等待状态:从机接收完一字节数据后,如果从机要完成其他功能才能接收下一个完整数据,可以将SCL拉低保持低电平,使主机挂起进入等待状态,等释放SCL后数据方可继续传送。 有效数据:只在SCL为低时数据可发生变化;SCL为高时数据必须保持稳定。否则将会使从机器认为是起止信号。 3、数据传送格式

字节传送+应答:每个字节必须8位,从MSB先传送,每传送一个字节后必须跟一位应答,即一帧共9位。若从机无法应答,则需将SDA拉高,而由主机产生终止信号结束总线数据传送。 数据帧格式:(起始)+(地址+传送方向+应答)+(数据+应答)+…..+(结束) 三种形式 a、主机向从机发送数据 从机根据地址判断是否为自己的接收数据,应答都是从机产生。 b、从机向主机发送数据 阴影为主机应答,白色为从机应答,最后的主机非应答表示已接收完数据,等待从机释放总线,并产生结束信号。 c、主向从—>从向主 传送过程需要改变方向,不需要结束信号,直接再产生起始信号即可。 4、时钟同步 所有主机在SCL线上产生自己的时钟来传输I2C总线报文,时钟同步通过线与连接到SCL 线来执行,SCL线总是被有最长低电平周期的器件保持低电平,而低电平周期短的器件会进入高电平等待状态。 5、仲裁 主机只能在总线空闲时启动传输,多主机可能同时产生起始条件。 仲裁在SDA线上发生,由于SDA也是线与逻辑,在其他主机发送低电平时,发送高电平的主机将会断开它的数据输出级,因为总线上点平与它自己的点平不同。 丢失仲裁的主机可以产生时钟脉冲直到丢失仲裁的该字节末尾。

串行总线解码及协议分析概述

串行总线解码及协议分析概述 简介 串行通信总线在现代电子设计中被广泛应用。相比并行总线通信,串行总线具备显着的成本优势,并在一些性能上有所改进。首先,在电路板上有较少的信号传输,所以PCB的成本较低。其次,较少的I/O引脚在每个设备上都是必要的,进而简化组件封装,从而降低器件成本。最后,一些串行总线使用差分信号,提高抗噪声能力。 串行通信标准很多,每种标准具有不同的特点,包括具体操作条件、设计复杂度、传输速率、功耗、容错,当然,还有成本的不同。虽然串行总线有很多优点,但是当排除故障和调试系统时,它们也存在缺点,因为数据传输的数据包或帧需要根据使用的编码标准进行译码。手动译码(或“位计数”)的二进制数据流是错误,并且很耗时。 PicoScope包含流行的标准串行编码的译码和分析,帮助工程师发现他们设计中的问题。比如,确定程序设计和时序误差、检查信号完整

性等其他问题。时序分析工具有助于显示每个设计元素的性能,使工程师能够确定这些需要改进的设计,以优化整个系统性能。 译码 PicoScope具有串行译码功能。译码后的数据可以以您选择的格式显示:在图中、在表中、或两种显示格式一起。 在图中 在表中 在图形格式中以总线形式显示译码数据,在一个共同的时序轴中与模拟波形对齐,错误帧用红色标记。图形可以放大,以便找到与以捕获的模拟通道相对应的时序误差或其他信号完整性问题。 在表格格式中以列表形式显示译码数据,包括所有标志和标识符。您可以通过设置筛选条件来只显示您感兴趣的帧,搜索具有特定属性的帧,或当程序应该列出数据时定义一个开始模式。

PicoScope可以对1-Wire、ARINC 429、CAN、DCC、DMX512、 Ethernet 10Base-T 和100Base-TX、FlexRay、I2C、I2S、LIN、 PS/2、SENT、SPI、UART(RS-232/RS-422/RS-485)和USB协议数据进行译码,更多协议译码支持正在开发中,在未来可以通过免费更新软件使用。 数据可以以十六进制、二进制、ASCII或十进制格式显示。为了使译码数据读取方便简单,PicoScope支持使用链接文件。比如,十六进制地址03DF可以显示为“油温"或可读形式的任何参数。 分析 PicoScope深度缓存示波器可以捕捉成百上千的串行数据帧,因此搜索和分析所捕获的的数据帧是很重要的,这里有很多种方法实现这种功能。 搜索功能是用来突出特定的数据帧,满足用户定义的搜索标准。

相关主题
文本预览
相关文档 最新文档