串行总线:I2C、SPI和UART的区别(重要)

来源:互联网 发布:linux .gitignore文件 编辑:程序博客网 时间:2024/05/18 21:47

I2CSPIUART的区别:

1I2C:串行总线

芯片间串行传输总线;双工的同步数据传输;线:串行数据线SDA)和串行时钟线SCL);多主控总线;当然任何时间点上只能有一个主控;每个设备都有唯一的地址;可以实现组网;

适合器件之间近距离、非经常性的数据传输;

用通用IO口模拟I2C总线,并实现双向传输,则需要一个输入输出口(SDA),还需要输出口(SCL);

例子:24C02芯片

 

2SPI:串行外设接口

同步串行通讯方式;三线同步总线:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI),{CS(片选)};可实现多个SPI设备互相连接;提供SPI串行时钟SPI设备为主设备(至少有一个),其他设备为从设备;主从设备实现全双工通信;从设备较多时,可以增加从设备选择线

 

线的功能介绍:

CS(片选):预先规定的使能信号(高电平和低电平),对该芯片的操作才有效,这使在同一总线上连接多个SPI设备成为可能;

负责通讯的三根线:

SPI数据是一位一位的传输;SCK提供时钟脉冲SDISDO则基于此脉冲数完成数据传输;数据通过SDO线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取注意:SCK信号线只由主设备控制

至少8次时钟信号的改变(上沿和下沿一次),就可以完成8位数据的传输。

普通串行通讯一次连续传送至少8位数据(1个字节),而SPI允许一位一位的传送,甚至可以暂停,因为SCK时钟线由主设备控制,当没有时钟跳变时,从设备不采集或传送数据;其输入和输出独立,故可同时完成数据的输入和输出

用通用IO口模拟SPI总线,必须有输出口(SDO)和出入口(SDI),另一个口视实现的设备类型而定:

若实现主从设备,则需输入输出口;

若只实现设备,则需输口即可;

若只实现设备,则需输口即可。

例子:Nokia5110

 

3UART:通用异步收发器

单端,远距离传输;一般由波特率产生器、UART接收器、UART发送器组成;

用通用IO模拟UART总线,需要一个输入口和一个输出口;

串口通讯,按发送和接收数据;一根线接收和一根线发送;距离可达1200m

UART常用于控制计算机或其他串行设备的芯片,提供了RS-232数据终端设备接口

     例子:静态显示


区别:(1SPIUART可以实现全双工,但I2C不行;

     (2I2C线少,技术麻烦,需要有双向IO的支持,并使用上拉电阻,抗干扰性弱,速度慢,用于近距离;UART需要固定波特率,两位数据的间隔要相等,而SPI无所谓,因为它有时钟的协议;SPI是规定好的通讯方式,传输速度快;


     

0 0
原创粉丝点击