I2C总线和SPI总线总结

合集下载

SPI、I2C、UART三种串行总线的原理、区别及应用

SPI、I2C、UART三种串行总线的原理、区别及应用

SPI、I2C、UART三种串行总线的原理、区别及应用SPI、I2C、串口、我相信如果你是从事的是嵌入式开发,一定会用到这三种通信协议,串口的话因为和波特率有关,所以一般的CPU或者MCU只会配有两个或者三个串口,而数据的传输,的话SPI和I2C用得会比较多,下面找到了一篇博客。

转过来、1、UART就是两线,一根发送一根接收,可以全双工通信,线数也比较少。

数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。

在多机通信上面用的最多。

2、SPI接口和上面UART相比,多了一条同步时钟线,上面UART的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。

一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。

3、I2C接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。

一般单片机系统里主要用来和24C02等小容易存储器连接。

SPI:高速同步串行口。

3~4线接口,收发独立、可同步进行UART:通用异步串行口。

按照标准波特率完成双向通讯,速度慢SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的3根线实现数据双向传输串行外围接口Serial peripheral interfaceUART:通用异步收发器UART是用于控制计算机与串行设备的芯片。

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

作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。

将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。

在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。

在输出数据流中加入启停标记,并从接收数据流中删除启停标记。

处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。

总线I2C和SPI详解

总线I2C和SPI详解

IIC vs SPI现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。

原因是这两种通信协议非常适合近距离低速芯片间通信。

Philips(for IIC)和Motorola(for SPI)出于不同背景和市场需求制定了这两种标准通信协议。

IIC 开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互联方式。

电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互联微控制器和外围设备的。

要实现内存映射,设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。

为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了‘Inter-Integrated Circuit’,IIC 或 IIC ,一种只使用二根线接连所有外围芯片的总线协议。

最初的标准定义总线速度为100kbps。

经历几次修订,主要是1995年的400kbps,1998的3.4Mbps。

有迹象表明,SPI总线首次推出是在1979年,Motorola公司将SPI总线集成在他们第一支改自68000微处理器的微控制器芯片上。

SPI总线是微控制器四线的外部总线(相对于内部总线)。

与IIC不同,SPI没有明文标准,只是一种事实标准,对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过data sheets和application notes沟通实现上的细节。

SPI对于有经验的数字电子工程师来说,用SPI互联两支数字设备是相当直观的。

SPI是种四根信号线协议(如图):•SCLK: Serial Clock (output from master);•MOSI; SIMO: Master Output, Slave Input(output from master); •MISO; SOMI: Master Input, Slave Output(output from slave); •SS: Slave Select (active low, outputfrom master).SPI是[单主设备( single-master )]通信协议,这意味着总线中的只有一支中心设备能发起通信。

串行总线总结

串行总线总结

SPI、CAN、I2C总线总结一、SPI总线(serial peripheral interface)二、CAN总线(Controller area network)CAN是ISO认证的国际标准化串行通信协议。

CAN协议中,所有的消息都以固定的格式发送。

和总线连接的单元没有I2C类似的“地址”信息,但是每个单元都要有相同的通信速率。

CAN总线是可同时连接多个单元总线,可以连接的单元总数理论上是没有限制的,理论上,CAN总线上的节点数几乎不受限制,可达到2000个,实际上受电气特性的限制,最多只能接100多个节点。

三是实际上可连接的单元数受总线上的时间延迟及电器负载的限制。

降低通信速率,可连接的单元数增加;提高通信速率,则可连接的单元数减少。

CAN协议覆盖了ISO规定的OSI基本参照模型中传输层、数据链路层和物理层。

数据链路层分为MAC层和LLC子层。

MAC子层是CAN协议中核心部分。

数据链路层的功能是将物理层收到的信号组织成有意义的消息,并提供传输错误控制等传输控制的流程。

具体就是消息的帧化、仲裁、应答、错误的检测和报告。

数据链路层的功能通常在CAN控制器的硬件中执行。

物理层定义了信息实际的发送方式,位时序、位的编码方式及同步的步骤,具体信号的电平、通信速度、驱动器和总线电器特性由用户根据需求自行确定。

但是ISO 定义了两种不同物理层,一种是通信速度是最高1Mbps,总线最大长度是40m,最大连接数为30;另一种是通信速度最高是125kbps,但是总线长度可达1000m,最大连接数为20。

当两个以上的单元同时发送消息时,根据标识符(ID)来决定优先级,ID并不是表示发送的目的地址,而是表示访问总线的消息的优先级。

两个以上单元同时发送消息时,对各个消息的ID每位进行逐个仲裁比较,仲裁获胜的单元可以继续发送消息。

ID给出的不是目标节点地址,而是这个报文本身的特征。

信息以广播方式在网络上发送,所有节点都可以接收到。

SPII2CUART三种串行总线的原理区别及应用

SPII2CUART三种串行总线的原理区别及应用

SPII2CUART三种串行总线的原理区别及应用SPI(Serial Peripheral Interface),I2C(Inter-Integrated Circuit)和UART(Universal Asynchronous Receiver/Transmitter)是常见的串行总线通信协议,它们在嵌入式系统中被广泛使用。

以下是对这三种串行总线的原理、区别及应用的详细介绍。

1. SPI(Serial Peripheral Interface)SPI是一种同步的、全双工的串行总线协议,通常由一个主设备和一个或多个从设备组成。

SPI总线上通信是基于时钟信号进行同步的,主设备产生时钟信号,从设备在时钟的边沿上发送和接收数据。

在SPI总线上,主设备控制通信的起始和结束,并通过片选信号选择与之通信的从设备。

SPI总线上的数据传输是基于多线制的,其中包括主设备的时钟线(SCLK)、数据输出线(MOSI)、数据输入线(MISO)和片选线(SS)。

SPI总线具有以下特点:-速度较快,可以达到十几MHz甚至上百MHz的传输速率。

-支持多主设备,但每个时刻只能有一个主设备处于活动状态。

-适用于短距离通信,通常在PCB上的芯片之间进行通信。

-数据传输可靠性较高。

SPI总线广泛应用于各种设备之间的数据传输,例如存储器、传感器、显示模块等。

2. I2C(Inter-Integrated Circuit)I2C也是一种同步的、双向的串行总线协议,由一个主设备和一个或多个从设备组成。

I2C总线上的通信也是基于时钟信号进行同步的,主设备产生时钟信号和开始/停止条件,从设备在时钟边沿上发送和接收数据。

I2C总线上的数据传输是基于两根线—串行数据线(SDA)和串行时钟线(SCL)。

I2C总线具有以下特点:- 通信速度较慢,大多数设备的传输速率为100kbps,但也支持高达3.4Mbps的快速模式。

-支持多主设备,可以同时连接多个主设备。

I2CSPI总线原理总结

I2CSPI总线原理总结

IIC总线原理1 起始和终止都按时序图写他们的程序。

开始电平(建立>4.7us) 下降沿或上升沿(保持>4us) 之后电平(scl=0:为接受下一个数据做准备)2对于不带回值得函数,应当定义为void类型,在此函数体中不得出现Return语句。

void I2cStart() 起始信号的模拟{SDA=1; 初始条件,强制Delay10us(); >4.7usSCL=1; 初始条件,建立时间使SDA保持时间>4.7usDelay10us();//建立时间是SDA保持时间>4.7usSDA=0;Delay10us();//保持时间是>4usSCL=0;Delay10us();起始信号:在SCL时钟信号在高电平期间SDA信号产生一个下降沿起始之后SDA和SCL都为02 void I2cStop() 由主控制器(有CPU的:单片机)主动建立的{SDA=0;Delay10us();SCL=1;Delay10us();//建立时间大于4.7usSDA=1;Delay10us();}终止信号:在SCL时钟信号高电平期间SDA信号产生一个上升沿结束之后保持SDA和SCL都为1;表示总线空闲void Pcf8591SendByte(unsigned char channel){I2cStart();I2cSendByte(WRITEADDR);//发送写器件地址I2cSendByte(0x40|channel);//发送控制寄存器I2cStop();}在开始和停止条件之间从发送机传输到接收机的数据字节数是没有限制的一个主控能控制信号的传输和时钟频率。

如单片机置位和复位SDA和SCL来产生发送或接收数据的脉冲。

单片机令SDA=1时,释放数据SDA,让别的器件来控制SDA启动与停止数据传输时:单片机令SCL=0,是为下一个数据的传送做准备。

SCL=1时,SDA要保持1或0不变,因为此时接收器正在读取数据SCL=0时,允许SDA的电平发送改变,此时接收器不读取SDA上的数据总线上每传送一位数据都有一个时钟脉冲与之对应(同步控制)主控器给被控器发送应答信号子函数中:哪里有Return语句,哪里就是此函数的结束。

SPII2CUART三种串行总线协议及其区别

SPII2CUART三种串行总线协议及其区别

SPII2CUART三种串行总线协议及其区别SPI(Serial Peripheral Interface)是一种常见的串行总线协议,主要用于单片机和外部设备之间的通信。

SPI协议需要同时使用多个信号线,包括时钟信号、主从选择信号、数据输入信号和数据输出信号。

SPI协议是一种全双工的通信方式,数据可以双向传输。

SPI通信协议的特点包括以下几点:1.时钟信号:SPI协议中的设备之间使用了共享的时钟信号,时钟信号用于同步数据传输。

时钟信号由主设备控制,并且时钟频率可以根据需要调整。

SPI协议没有固定的时钟频率限制,可以根据实际需求进行调整。

2.主从选择信号:SPI协议中的从设备需要通过主从选择信号进行选择。

主设备通过拉低从设备的主从选择信号来选择与之通信的从设备。

可同时与多个从设备通信。

3.数据传输:SPI协议是一种由主设备控制的同步通信协议,数据在时钟的边沿上升移位。

主设备在时钟的上升沿将数据发送给从设备,从设备在时钟的下降沿将数据发送给主设备。

SPI协议的优势在于速度快、可靠性高,适合于需要高速传输的应用,如存储器、显示器驱动等。

I2C(Inter-Integrated Circuit)是一种常见的串行总线协议,主要用于集成电路之间的通信。

I2C协议仅需要两根信号线:序列时钟线(SCL)和串行数据线(SDA)。

I2C协议是一种半双工通信方式,数据只能单向传输。

I2C通信协议的特点包括以下几点:1.序列时钟线(SCL):SCL是在主设备和从设备之间共享的信号线,用于同步数据传输。

主设备通过拉高和拉低SCL来控制数据传输的时钟频率。

2.串行数据线(SDA):SDA负责数据的传输。

数据在SCL的上升沿或下降沿变化时,主设备或从设备将数据写入或读取出来。

3.地址寻址:I2C协议使用7位或10位的地址寻址,从设备可以根据地址进行选择。

I2C协议的优势在于可以连接多个设备,节省了引脚,适用于多设备之间的通信,如传感器、温度传感器、压力传感器等。

I2C总线和SPI总线总结

I2C总线和SPI总线总结

I2C总线和SPI总线总结I2C(Inter-Integrated Circuit)总线是一种由Philips公司于1982年推出的串行通信协议。

它是一种双线制协议,使用两根线(一根为时钟线SCL,另一根为数据线SDA)进行通信。

其中SCL由主设备控制,用于发送时钟信号,而SDA用于双向数据传输。

其中,每个设备都有唯一的地址,可以由主设备选择通信。

I2C总线支持多主设备操作,即多个主设备可以对同一总线上的多个从设备进行通信。

1.速度较低:I2C总线的速度通常在100kHz、400kHz、1MHz等级,相对于其他总线来说较低。

这使得I2C总线适合用于较短距离的通信和低速设备。

2.优秀的设备兼容性:I2C总线的主设备可以与各种不同的从设备进行通信,如温度传感器、光照传感器、EEPROM存储器等。

这使得I2C总线在很多应用中被广泛使用。

3.线路简单:由于只需要两根线,所以I2C总线的线路相对简单,成本较低。

同时,可以通过电平转换器将3.3V和5V之间的设备连接到同一总线上。

4.支持多主结构:I2C总线可以连接多个主设备和多个从设备,实现多设备之间的通信。

这使得I2C总线非常适合在多个设备之间进行通信和控制。

SPI(Serial Peripheral Interface)总线是一种由Motorola公司于1980年代推出的串行通信协议。

与I2C总线不同,SPI总线是一种四线制协议,包括一个时钟线(SCLK)、一个主设备输出线(MOSI)、一个主设备输入线(MISO)和一个片选线(SS)。

SPI总线的主要特点是:1.高速传输:SPI总线通常支持较高的速度,可达到几百kHz甚至几十MHz的级别。

这使得SPI总线非常适合在高速设备之间进行快速数据传输,如存储器、传感器和带宽要求较高的外设。

2.数据传输双向:SPI总线支持双向数据传输,主设备可以向从设备发送数据,同时也可以接收从设备的数据。

这使得SPI总线适用于需要双向数据传输的应用,如存储器芯片的读写操作。

【转载】SPI总线和I2C总线的异同点

【转载】SPI总线和I2C总线的异同点

【转载】SPI总线和I2C总线的异同点总结的简单、明了、适⽤!⼀:SPI接⼝的全称是"Serial Peripheral Interface",意为串⾏外围接⼝,是Motorola⾸先在其MC68HCXX系列处理器上定义的。

SPI接⼝主要应⽤在EEPROM、FLASH、、AD,还有和数字信号解码器之间。

(1)MOSI – 主器件,从器件数据输⼊(2)MISO – 主器件数据输⼊,从器件数据输出(3)SCLK –,由主器件产⽣,最⼤为fPCLK/2,从模式频率最⼤为fCPU/2(4)NSS – 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)⼆:I2C总线是由Philips公司开发的⼀种简单、双向⼆线制同步串⾏总线。

它只需要两根线即可在连接于总线上的器件之间传送信息。

SDA(串⾏数据线)和SCL(串⾏时钟线)都是双向I/O线。

三:2种总线的异同点1:I2C总线是半双⼯,2根线SCL SDA;SPI总线实现全双⼯,4根线SCK CS MOSI MISO。

2:I2C是多主机总线,通过SDA上的地址信息来锁定从设备;SPI只有⼀个主设备,主设备通过CS⽚选来确定从设备。

3:I2C总线传输速度100Kbps----4Mbps;SPI可达30Mbps以上。

4:I2C总线空闲时SDA SCL都是⾼电平,SPI总线空闲状态由CPOL(时钟极性)决定。

5:I2C⾼电平时SDA下降沿标志传输开始,上升沿标志传输结束;SPI总线CS拉低标志传输开始,CS拉⾼标志传输结束。

6:I2C总线SCL⾼电平采样;SPI具体根据CPHA(时钟相位)决定,⼀般情况下,master device是SCK的上升沿发送,下降沿采集。

7:I2C和SPI总线数据传输都是MSB(最⾼有效位)在前,LSB在后(串⼝是LSB在前)。

8:I2C总线和SPI总线时钟都是由主设备产⽣,并且只在数据传输时发出时钟。

SPI和IIC详解

SPI和IIC详解
与标准的USART串行接口不同,SPI 是一个同步协议接口,具有全双
工通信的特性。SPI总线上所有的传输都参照一个共同的时钟,这个同 步时钟信号由主设备产生。接收数据的从设备使用时钟对串行比特流 的接收进行同步化。
2
SPI总线协议
四条信号线: MISO(主机输入/从机输出) MOSI(主机输出/从机输入) SCLK(串行时钟) CS或SS (外设片选或从机选择) 特点: 全双工(输入/输出独立) 同步(带有时钟线) 物理结构简单 灵活性强

SCL; 2、每个连接到总线的器件都可以通过唯一的地址和一直存在的简 单的主机/从机关系软件设定地址,主机可以作为主机发送器或主 机接收器; 3、它是一个真正的多主机总线,如果两个或更多主机同时初始化 ,数据传输可以通过冲突检测和仲裁防止数据被破坏; 4、串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快 速模式下可达400kbit/s,高速模式下可达3.4Mbit/s; 5、连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。
LSBFIRST:
发送帧格式 SPE: SPI使能 BR[2:0]: 波特率控制 MSTR: 主/从设置 CPOL/CPHA: 时钟极性/相位
13
控制寄存器SPI_CR2
中断使能设置: TXEIE: 发送缓冲区空中断使能 RXNEIE: 接收缓冲区非空中断使能 ERRIE: 错误中断使能
I2C通过串行数据(SDA)线和串行时钟 (SCL)线在连接到总线的器
件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器 ——MCU、LCD 驱动器、存储器或键盘接口),而且都可以作为一个 发送器或接收器(由器件的功能决定)。

CANI2SI2CSPI总线接口总结

CANI2SI2CSPI总线接口总结

CANI2SI2CSPI总线接口总结CAN(Controller Area Network)是一种面向实时通信的串行总线标准。

它最初是由Bosch公司开发,主要用于汽车电子系统中的控制和通信。

CAN总线采用差分信号传输,拥有较高的抗干扰能力和可靠性,可实现在复杂电气环境下的快速数据传输。

CAN总线可以支持多个设备的分布式通信,通过先进的协议机制实现高效的数据传输和数据帧的优先级设置。

CAN总线的通信速率通常为1 Mbps,可以满足实时性要求较高的应用场景,如汽车电子、工业控制和航空航天等。

I2S(Inter-IC Sound)是一种串行音频接口标准。

它由飞利浦(Philips)公司提出,用于在音频设备之间传输音频数据。

I2S接口采用三线制的同步通信方式,包括一个时钟线、一个数据线和一个帧同步线。

I2S接口支持双向通信,可以同时传输音频数据和控制信号。

I2S接口的主要特点是高保真音频传输和灵活的系统集成能力。

它广泛应用于消费电子产品,如音频解码器、音频处理器、音频放大器等。

I2C(Inter-Integrated Circuit)是一种串行通信总线标准。

它由Philips公司开发,用于连接集成电路之间的通信。

I2C总线采用双线制的同步通信方式,包括一个时钟线和一个数据线。

I2C总线可以支持多个设备的串行连接,每个设备都有一个唯一的地址,可以通过该地址进行单独访问。

I2C总线具有简单、低功耗和可靠的特点,适用于连接存储器、传感器、显示器和其他外设等。

它的通信速率通常在100 kbps到3.4 Mbps之间,适用于中等速度的数据传输。

SPI(Serial Peripheral Interface)是一种串行外设接口标准。

它最早由Motorola公司提出,用于连接微控制器和外设之间的通信。

SPI总线采用四线制的同步通信方式,包括一个时钟线、一个主从选择线、一个主机输出从机输入线和一个主机输入从机输出线。

SPI总线,IIC总线

SPI总线,IIC总线

2
I2C总线 总线
I2C总线始终和先进技术保持同步,并保持其向 总线始终和先进技术保持同步, 总线始终和先进技术保持同步 下兼容性。 下兼容性。 I2C总线采用二线制传输,一根是数据线SDA 总线采用二线制传输,一根是数据线 总线采用二线制传输 ),另一根是时钟线 (Serial Data Line),另一根是时钟线 ),另一根是时钟线SCL ),所有 (serial clock line),所有 2C器件都连接在 ),所有I 器件都连接在 SDA和SCL上,每一个器件具有一个唯一的地 和 上 址。 I2C总线是一个多主机总线,总线上可以有一 总线是一个多主机总线, 总线是一个多主机总线 个或多个主机(或称主控制器件), ),总线运行 个或多个主机(或称主控制器件),总线运行 由主机控制。 由主机控制。 I2C总线支持多主(multi-mastering)和主从 总线支持多主( 总线支持多主 ) (master-slave)两种工作方式。 )两种工作方式。 3
4
I2C总线 总线
多主方式下, 总线上可以有多个主机 总线上可以有多个主机。 总线 多主方式下,I2C总线上可以有多个主机。I2C总线 需通过硬件和软件仲裁来确定主机对总线的控制权。 需通过硬件和软件仲裁来确定主机对总线的控制权。 主从工作方式时,系统中只有一个主机, 主从工作方式时,系统中只有一个主机,总线上的 其它器件均为从机(具有I 总线接口),只有主 总线接口), 其它器件均为从机(具有 2C总线接口),只有主 机能对从机进行读写访问,因此, 机能对从机进行读写访问,因此,不存在总线的竞 争等问题。在主从方式下, 总线的时序可以模 争等问题。在主从方式下,I2C总线的时序可以模 总线的使用不受主机是否具有I 拟 ,I2C总线的使用不受主机是否具有 2C总线接口 总线的使用不受主机是否具有 总线接口 的制约。 的制约。 ——MCS-51系列单片机本身不具有 2C总线接口, 系列单片机本身不具有I 总线接口, 系列单片机本身不具有 总线接口 可以用其I/O口线模拟 总线 口线模拟I 可以用其 口线模拟 2C总线

IIC和SPI总线原理对比及应用

IIC和SPI总线原理对比及应用

单击添加副标题
1.由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的 处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由 主机产生一个终止信号以结束总线的数据传送。 2.如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更 单击添加副标题 多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通 知主机,主机则应发出终止信号以结束数据的继续传送。 单加副标题 3.当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个 结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从 单击添加副标题 机释放SDA线,以允许主机产生终止信号。
单击添加副标题
单加副标题
单击添加副标题
SPI传输时序
单击添加副标题
单加副标题 在时钟的前沿采样数据(上升沿,第一个时钟沿),在时钟的后沿输出数据 (下降沿,第二个时钟沿)
在SCLK的下降沿上数据改变,上升沿一位数据被存入移位寄存 单击添加副标题 器。 SPI接口没有指定的流控制,没有应答机制确认是否接收到数据。
wudanyu:IIC线更少,我觉得比UART、SPI更为强大,但 是技术上也更加麻烦些,因为IIC需要有双向IO的支持,而且 IIC使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板 卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单 一些,UART需要固定的波特率,就是说两位数据的间隔要相 等,而SPI则无所谓,因为它是有时钟的协议。 quickmouse:IIC的速度比SPI慢一点,协议比SPI复杂一点, 但是连线也比标准的SPI要少。
I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线 上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是 线“与”关系。

I2C和SPI总线

I2C和SPI总线
举例说明:利用MCU程序控制传送数据23,二进制表示为00010111。Modelsim的仿真结果如图所示,SCK即P1[1]上产生的是串行时钟信号,SS即P1[2]上产生片选信号。此时情况为发送信号,而MCU为主机,因此MISI即P1[0]上的信号是主机输出即MCU发送的数据,而MISO即P1[3]上没有信号的变化。
接受函数:从I2C总线读数据,每次读8位。首先拉高SCL,然后接受值左移一位把低位和SDA相或得到SDA的状态值,再拉低SCL以给出下降沿。
举例说明:利用MCU程序控制传送数据12,二进制表示为00001100。Modelsim的仿真结果如图所示,可见sda即P1[7]上传输数据,scl即P1[6]上的状态改变控制了时钟,时序与协议要求完全符合。
在开始条件后,SCL低电平期间,SDA允许变化,每位数据需一个时钟脉冲,当SCL为高时,SDA必须稳定,主控器在应答时钟脉冲高电平期间释放SDA线,转由接收器控制。相同总线上的设备在收到数据后,以置SDA为低电平的方式对其确认。总线不忙时,数据线和时钟线保持为高电平。
仿真:
用keil C语言写出I2C总线传输的代码,编译通过后写入MCU的程序ROM中,测试是否能按照总线的协议正常工作。
SPI的工作模式有两种:主模式和从模式,无论那种模式,都支持3Mbit/s的速率,并且还具有传输完成标志和写冲突保护标志。
仿真:
对于不带SPI串行总线接口的MC8051来说,可以使用软件来模拟SPI的操作,包括串行时钟、数据输入和数据输出。对于不同的串行接口外围芯片,它们的时钟时序是不同的。
用keil C语言写出I2C总线传输的代码,编译通过后写入MCU的程序ROM中,测试是否能按照总线的协议正常工作。
首先,对MC8051的端口加以命名:

IIC与SPI的区别

IIC与SPI的区别

IIC与SPI的区别uart,spi,i2c总线的区别I2C的数据输入输出用的是一根线,SPI则分为dataIN和dataOUT。

由于这个原因,采用I2C时CPU的端口占用少,SPI多一根。

但是由于I2C的数据线是双向的,所以隔离比较复杂,SPI则比较容易。

所以系统内部通信可用I2C,若要与外部通信则最好用SPI带隔离(可以提高抗干扰能力)。

但是I2C和SPI都不适合长距离传输。

长距离时就要用485 了。

第一: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发送器组成,硬件上由两根线,一根用于发送,一根用于接收。

IIC和SPI总线技术及应用liudy

IIC和SPI总线技术及应用liudy

3. IIC总线工作原理 3.1 IIC总线的构成
I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送 和接收数据。 在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率 100kbps。 各种被控制电路均并联在这条总线上,但就像电话机一样只有拨 通各自的号码才能工作,所以每个电路和模块都有唯一的地址, CPU发出的控制信号分为地址码和控制量两部分,地址码用来选 址,即接通需要控制的电路,确定控制的种类;控制量决定该调整 的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路 虽然挂在同一条总线上,却彼此独立,互不相关。 在信息的传输过程中,I2C总线上并接的每一模块电路既是主控 器(或被控器),又是发送器(或接收器),这取决于它所要完成 的功能。
2. 93C46器件介绍 93C46器件介绍
1) 器件概述: • CSI93C46/56/57/66/86 是一种存储器可以定义 为16 位(ORG 引脚接Vcc 或者定义为8 位ORG 引 脚接GND) 的1K/2K/2K/4K/16K 位的串行E2PROM. 每一个的存储器都可以通过DI 引脚或DO 引脚进 行写入或读出. • 每一片CSI93C46/56/57/66/86 都是采用CSIalyst 公司先进的CMOS E2PROM 浮动门工艺加工,器件 可以经受1,000,000 次的写入/擦除操作,片内数据 保存寿命达到100 年.器件可提供的封装有DIP-8 SOIC-8 TSSOP-8
4)选择性读操作
选择性读操作允许主器件对寄存器的任意字节进行读操作。主器件首先通 过发送起始信号、从器件地址和它想读取的字节数据的地址执行一个伪写 操作。在CAT24WC01/02/04/08/16 应答之后,主器件重新发送起始信号和 从器件地址。此时R/W 位置1, CAT24WC01/02/04/08/16 响应并发送应答 信号,然后输出所要求的一个8 位字节数据。主器件不发送应答信号但产生 一个停止信号

SPI、I2C、UART三种串行总线的原理、区别及应用参考模板

SPI、I2C、UART三种串行总线的原理、区别及应用参考模板

简单描述:SPI 和I2C这两种通信方式都是短距离的,芯片和芯片之间或者其他元器件如传感器和芯片之间的通信。

SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。

I2C 是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。

总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。

多路微控制器能在同一个I2C总线上共存这两种线属于低速传输;而UART是应用于两个设备之间的通信,如用单片机做好的设备和计算机的通信。

这样的通信可以做长距离的。

UART和,UART就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡;SmBus有点类似于USB设备跟计算机那样的短距离通信。

简单的狭义的说SPI和I2C是做在电路板上的。

而UART和SMBUS是在机器外面连接两个机器的。

详细描述:1、UART(TX,RX)就是两线,一根发送一根接收,可以全双工通信,线数也比较少。

数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。

在多机通信上面用的最多。

2、SPI(CLK,I/O,O,CS)接口和上面UART相比,多了一条同步时钟线,上面UART 的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。

一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。

3、I2C(SCL,SDA)接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。

一般单片机系统里主要用来和24C02等小容易存储器连接。

I2C总线和SPI总线总结

I2C总线和SPI总线总结

I² C vs SPI: 哪位是赢家?
我们来对比一下 I² C 和 SPI 的一些关键点:
第一,总线拓扑结构/信号路由/硬件资源耗费
I² C 只需两根信号线,而标准 SPI 至少四根信号,如果有多个从设备,信号需要 更多。一些 SPI 变种虽然只使用三根线——SCLK, SS 和双向的 MISO/MOSI, 但 SS 线还是要和从设备一对一根。另外,如果 SPI 要实现多主设备结构,总线 系统需额外的逻辑和线路。用 I² C 构建系统总线唯一的问题是有限的 7 位地址 空间,但这个问题新标准已经解决——使用 10 位地址。从第一点上看,I² C是 明显的大赢家。
当两支主设备竞争总线的时候赢家并不知道竞争的发生只有输家发现了冲突当它写一个逻辑1却读到0时而退出竞10位设备地址任何iic设备都有一个7位地址理论上现实中只能有127种不同的iic设备
关于 I²C 和 SPI 总线协议
I² C vs SPI
现今,在低端数字通信应用领域,我们随处可见 I² C (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距 离低速芯片间通信。Philips(for I² C)和 Motorola(for SPI) 出于不同背景和 市场需求制定了这两种标准通信协议。 I² C 开发于 1982 年,当时是为了给电视机内的 CPU 和外围芯片提供更简易的 互联方式。 电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射 (memory-mapped I/O)的方式来互联微控制器和外围设备的。要实现内存映 射, 设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需 大量线路和额外地址解码芯片,很不方便并且成本高。 为了节省微控制器的引脚和和额外的逻辑芯片, 使印刷电路板更简单, 成本更低, 位于荷兰的 Philips 实验室开发了 „Inter-Integrated Circuit‟,IIC 或 I² C ,一种 只使用二根线接连所有外围芯片的总线协议。最初的标准定义总线速度为 100kbps。经历几次修订,主要是 1995 年的 400kbps,1998 的 3.4Mbps。 有迹象表明,SPI 总线首次推出是在 1979 年,Motorola 公司将 SPI 总线集成在 他们第一支改自 68000 微处理器的微控制器芯片上。SPI 总线是微控制器四线 的外部总线(相对于内部总线)。与 I² C 不同,SPI 没有明文标准,只是一种事 实标准,对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过 data sheets 和 application notes 沟通实现上的细节。

SPI,UART,I2C的区别以及RS232与RS485的区别

SPI,UART,I2C的区别以及RS232与RS485的区别

SPI,UART,I2C的区别以及RS232与RS485的区别详细的区别:第一个区别当然是名字: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不行;第四,I2C线更少,比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C 需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于I²C和SPI总线协议I²C vs SPI现今,在低端数字通信应用领域,我们随处可见I²C (Inter-Integrated Circuit) 和SPI (Serial Peripheral Interface)的身影。

原因是这两种通信协议非常适合近距离低速芯片间通信。

Philips(for I²C)和Motorola(for SPI)出于不同背景和市场需求制定了这两种标准通信协议。

I²C 开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互联方式。

电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互联微控制器和外围设备的。

要实现内存映射,设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。

为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了…Inter-Integrated Circuit‟,IIC 或I²C ,一种只使用二根线接连所有外围芯片的总线协议。

最初的标准定义总线速度为100kbps。

经历几次修订,主要是1995年的400kbps,1998的3.4Mbps。

有迹象表明,SPI总线首次推出是在1979年,Motorola公司将SPI总线集成在他们第一支改自68000微处理器的微控制器芯片上。

SPI总线是微控制器四线的外部总线(相对于内部总线)。

与I²C不同,SPI没有明文标准,只是一种事实标准,对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过data sheets和application notes沟通实现上的细节。

SPI对于有经验的数字电子工程师来说,用SPI互联两支数字设备是相当直观的。

SPI是种四根信号线协议(如图):▪SCLK: Serial Clock (output from master);▪MOSI; SIMO: Master Output, Slave Input (output from master);▪MISO; SOMI: Master Input, Slave Output (output from slave);▪SS: Slave Select (active low, output from master).SPI是[单主设备(single-master )]通信协议,这意味着总线中的只有一支中心设备能发起通信。

当SPI主设备想读/写[从设备]时,它首先拉低[从设备]对应的SS线(SS是低电平有效),接着开始发送工作脉冲到时钟线上,在相应的脉冲时间上,[主设备]把信号发到MOSI实现“写”,同时可对MISO 采样而实现“读”,如下图:SPI有四种操作模式——模式0、模式1、模式2和模式3,它们的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(就是时钟信号无效时是高还是低)。

每种模式由一对参数刻画,它们称为时钟极(clock polarity)CPOL与时钟期(clock phase)CPHA。

[主从设备]必须使用相同的工作参数——SCLK、CPOL 和CPHA,才能正常工作。

如果有多个[从设备],并且它们使用了不同的工作参数,那么[主设备]必须在读写不同[从设备]间重新配置这些参数。

以上SPI总线协议的主要内容。

SPI不规定最大传输速率,没有地址方案;SPI 也没规定通信应答机制,没有规定流控制规则。

事实上,SPI[主设备]甚至并不知道指定的[从设备]是否存在。

这些通信控制都得通过SPI协议以外自行实现。

例如,要用SPI连接一支[命令-响应控制型]解码芯片,则必须在SPI 的基础上实现更高级的通信协议。

SPI并不关心物理接口的电气特性,例如信号的标准电压。

在最初,大多数SPI 应用都是使用间断性时钟脉冲和以字节为单位传输数据的,但现在有很多变种实现了连续性时间脉冲和任意长度的数据帧。

I²C与SPI的单主设备不同,I²C 是多主设备的总线,I²C没有物理的芯片选择信号线,没有仲裁逻辑电路,只使用两条信号线——…serial data‟ (SDA) 和…serial clock‟ (SCL)。

I²C协议规定:▪第一,每一支IIC设备都有一个唯一的七位设备地址;▪第二,数据帧大小为8位的字节;▪第三,数据(帧)中的某些数据位用于控制通信的开始、停止、方向(读写)和应答机制。

I²C 数据传输速率有标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps),另外一些变种实现了低速模式(10 kbps)和快速+模式(1 Mbps)。

物理实现上,I²C 总线由两根信号线和一根地线组成。

两根信号线都是双向传输的,参考下图。

I²C协议标准规定发起通信的设备称为主设备,主设备发起一次通信后,其它设备均为从设备。

I²C 通信过程大概如下。

首先,主设备发一个START信号,这个信号就像对所有其它设备喊:请大家注意!然后其它设备开始监听总线以准备接收数据。

接着,主设备发送一个7位设备地址加一位的读写操作的数据帧。

当所设备接收数据后,比对地址自己是否目标设备。

如果比对不符,设备进入等待状态,等待STOP信号的来临;如果比对相符,设备会发送一个应答信号——ACKNOWLEDGE作回应。

当主设备收到应答后便开始传送或接收数据。

数据帧大小为8位,尾随一位的应答信号。

主设备发送数据,从设备应答;相反主设备接数据,主设备应答。

当数据传送完毕,主设备发送一个STOP信号,向其它设备宣告释放总线,其它设备回到初始状态。

基于I²C总线的物理结构,总线上的START和STOP信号必定是唯一的。

另外,I²C总线标准规定SDA线的数据转换必须在SCL线的低电平期,在SCL线的高电平期,SDA线的上数据是稳定的。

在物理实现上,SCL线和SDA线都是漏极开路(open-drain),通过上拉电阻外加一个电压源。

当把线路接地时,线路为逻辑0,当释放线路,线路空闲时,线路为逻辑1。

基于这些特性,IIC设备对总线的操作仅有“把线路接地”——输出逻辑0。

I²C总线设计只使用了两条线,但相当优雅地实现任意数目设备间无缝通信,堪称完美。

我们设想一下,如果有两支设备同时向SCL线和SDA线发送信息会出现什么情况。

基于I²C总线的设计,线路上不可能出现电平冲突现象。

如果一支设备发送逻辑0,其它发送逻辑1,那么线路看到的只有逻辑0。

也就是说,如果出现电平冲突,发送逻辑0的始终是“赢家”。

总线的物理结构亦允许主设备在往总线写数据的同时读取数据。

这样,任何设备都可以检测冲突的发生。

当两支主设备竞争总线的时候,“赢家”并不知道竞争的发生,只有“输家”发现了冲突——当它写一个逻辑1,却读到0时——而退出竞争。

10位设备地址任何IIC设备都有一个7位地址,理论上,现实中只能有127种不同的IIC设备。

实际上,已有IIC的设备种类远远多于这个限制,在一条总线上出现相同的地址的IIC设备的概率相当高。

为了突破这个限制,很多设备使用了双重地址——7位地址加引脚地址(external configuration pins)。

I²C 标准也预知了这种限制,提出10位的地址方案。

10位的地址方案对I²C协议的影响有两点:▪第一,地址帧为两个字节长,原来的是一个字节;▪第二,第一个字节前五位最高有效位用作10位地址标识,约定是“11110”。

除了10位地址标识,标准还预留了一些地址码用作其它用途,如下表:时钟拉伸在I²C 通信中,主设备决定了时钟速度。

因为时钟脉冲信号是由主设备显式发出的。

但是,当从设备没办法跟上主设备的速度时,从设备需要一种机制来请求主设备慢一点。

这种机制称为时钟拉伸,而基于I²C结构的特殊性,这种机制得到实现。

当从设备需要降低传输的速度的时候,它可以按下时钟线,逼迫主设备进入等待状态,直到从设备释放时钟线,通信才继续。

高速模式原理上讲,使用上拉电阻来设置逻辑1会限制总线的最大传输速度。

而速度是限制总线应用的因素之一。

这也说明为什么要引入高速模式(3.4 Mbps)。

在发起一次高速模式传输前,主设备必须先在低速的模式下(例如快速模式)发出特定的“High Speed Master”信号。

为缩短信号的周期和提高总线速度,高速模式必须使用额外的I/O缓冲区。

另外,总线仲裁在高速模式下可屏蔽掉。

更多的信息请参与总线标准文档。

I²C vs SPI: 哪位是赢家?我们来对比一下I²C 和SPI的一些关键点:第一,总线拓扑结构/信号路由/硬件资源耗费I²C 只需两根信号线,而标准SPI至少四根信号,如果有多个从设备,信号需要更多。

一些SPI变种虽然只使用三根线——SCLK, SS和双向的MISO/MOSI,但SS线还是要和从设备一对一根。

另外,如果SPI要实现多主设备结构,总线系统需额外的逻辑和线路。

用I²C 构建系统总线唯一的问题是有限的7位地址空间,但这个问题新标准已经解决——使用10位地址。

从第一点上看,I²C是明显的大赢家。

第二,数据吞吐/传输速度如果应用中必须使用高速数据传输,那么SPI是必然的选择。

因为SPI是全双工,I²C 的不是。

SPI没有定义速度限制,一般的实现通常能达到甚至超过10 Mbps。

I²C 最高的速度也就快速+模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式还需要额外的I/O缓冲区,还并不是总是容易实现的。

第三,优雅性I²C 常被称更优雅于SPI。

公正的说,我们更倾向于认为两者同等优雅和健壮。

I²C的优雅在于它的特色——用很轻盈的架构实现了多主设备仲裁和设备路由。

但是对使用的工程师来讲,理解总线结构更费劲,而且总线的性能不高。

SPI的优点在于它的结构相当的直观简单,容易实现,并且有很好扩展性。

SPI 的简单性不足称其优雅,因为要用SPI搭建一个有用的通信平台,还需要在SPI 之上构建特定的通信协议软件。

也就是说要想获得SPI特有而IIC没有的特性——高速性能,工程师们需要付出更多的劳动。

另外,这种自定的工作是完全自由的,这也说明为什么SPI没有官方标准。

I²C和SPI都对低速设备通信提供了很好的支持,不过,SPI适合数据流应用,而I²C更适合“字节设备”的多主设备应用。

相关文档
最新文档