串行总线:I2C、SPI和UART的区别(重要)
2015-08-26 10:24
323 查看
I2C、SPI和UART的区别:
(1)I2C:串行总线
芯片间串行传输总线;双工的同步数据传输;两线:串行数据线(SDA)和串行时钟线(SCL);多主控总线;当然任何时间点上只能有一个主控;每个设备都有唯一的地址;可以实现组网;
适合器件之间近距离、非经常性的数据传输;
用通用IO口模拟I2C总线,并实现双向传输,则需要一个输入输出口(SDA),还需要输出口(SCL);
例子:24C02芯片
(2)SPI:串行外设接口
同步串行通讯方式;三线同步总线:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI),{CS(片选)};可实现多个SPI设备互相连接;提供SPI串行时钟的SPI设备为主设备(至少有一个),其他设备为从设备;主从设备实现全双工通信;从设备较多时,可以增加从设备选择线;
线的功能介绍:
CS(片选):预先规定的使能信号(高电平和低电平),对该芯片的操作才有效,这使在同一总线上连接多个SPI设备成为可能;
负责通讯的三根线:
SPI数据是一位一位的传输;SCK提供时钟脉冲,SDI、SDO则基于此脉冲数完成数据传输;数据通过SDO线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取注意:SCK信号线只由主设备控制;
至少8次时钟信号的改变(上沿和下沿一次),就可以完成8位数据的传输。
普通串行通讯一次连续传送至少8位数据(1个字节),而SPI允许一位一位的传送,甚至可以暂停,因为SCK时钟线由主设备控制,当没有时钟跳变时,从设备不采集或传送数据;其输入和输出独立,故可同时完成数据的输入和输出。
用通用IO口模拟SPI总线,必须有输出口(SDO)和出入口(SDI),另一个口视实现的设备类型而定:
若实现主从设备,则需输入输出口;
若只实现主设备,则需输出口即可;
若只实现从设备,则需输入口即可。
例子:Nokia5110
(3)UART:通用异步收发器
单端,远距离传输;一般由波特率产生器、UART接收器、UART发送器组成;
用通用IO模拟UART总线,需要一个输入口和一个输出口;
串口通讯,按位发送和接收数据;一根线接收和一根线发送;距离可达1200m;
UART常用于控制计算机或其他串行设备的芯片,提供了RS-232数据终端设备接口
例子:静态显示
区别:(1)SPI和UART可以实现全双工,但I2C不行;
(2)I2C线少,技术麻烦,需要有双向IO的支持,并使用上拉电阻,抗干扰性弱,速度慢,用于近距离;UART需要固定波特率,两位数据的间隔要相等,而SPI无所谓,因为它有时钟的协议;SPI是规定好的通讯方式,传输速度快;
(1)I2C:串行总线
芯片间串行传输总线;双工的同步数据传输;两线:串行数据线(SDA)和串行时钟线(SCL);多主控总线;当然任何时间点上只能有一个主控;每个设备都有唯一的地址;可以实现组网;
适合器件之间近距离、非经常性的数据传输;
用通用IO口模拟I2C总线,并实现双向传输,则需要一个输入输出口(SDA),还需要输出口(SCL);
例子:24C02芯片
(2)SPI:串行外设接口
同步串行通讯方式;三线同步总线:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI),{CS(片选)};可实现多个SPI设备互相连接;提供SPI串行时钟的SPI设备为主设备(至少有一个),其他设备为从设备;主从设备实现全双工通信;从设备较多时,可以增加从设备选择线;
线的功能介绍:
CS(片选):预先规定的使能信号(高电平和低电平),对该芯片的操作才有效,这使在同一总线上连接多个SPI设备成为可能;
负责通讯的三根线:
SPI数据是一位一位的传输;SCK提供时钟脉冲,SDI、SDO则基于此脉冲数完成数据传输;数据通过SDO线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取注意:SCK信号线只由主设备控制;
至少8次时钟信号的改变(上沿和下沿一次),就可以完成8位数据的传输。
普通串行通讯一次连续传送至少8位数据(1个字节),而SPI允许一位一位的传送,甚至可以暂停,因为SCK时钟线由主设备控制,当没有时钟跳变时,从设备不采集或传送数据;其输入和输出独立,故可同时完成数据的输入和输出。
用通用IO口模拟SPI总线,必须有输出口(SDO)和出入口(SDI),另一个口视实现的设备类型而定:
若实现主从设备,则需输入输出口;
若只实现主设备,则需输出口即可;
若只实现从设备,则需输入口即可。
例子:Nokia5110
(3)UART:通用异步收发器
单端,远距离传输;一般由波特率产生器、UART接收器、UART发送器组成;
用通用IO模拟UART总线,需要一个输入口和一个输出口;
串口通讯,按位发送和接收数据;一根线接收和一根线发送;距离可达1200m;
UART常用于控制计算机或其他串行设备的芯片,提供了RS-232数据终端设备接口
例子:静态显示
区别:(1)SPI和UART可以实现全双工,但I2C不行;
(2)I2C线少,技术麻烦,需要有双向IO的支持,并使用上拉电阻,抗干扰性弱,速度慢,用于近距离;UART需要固定波特率,两位数据的间隔要相等,而SPI无所谓,因为它有时钟的协议;SPI是规定好的通讯方式,传输速度快;
相关文章推荐
- svn分支合并到主干可能出现异常信息
- Wireless Network
- android学习-----框架介绍
- php面向对象与面向过程两种方法给图片添加文字水印
- jffs2_scan_eraseblock()问题解决办法
- phpcms v9 外部链接在新窗口打开
- 【并查集】UVALive3027 Corporative Network
- OO真经——关于面向对象的哲学体系及科学体系的探讨(上)
- Android.mk 语法
- 迎接挑战2
- ACdream 1213 Matrix Multiplication(矩阵相乘)
- 已解决:Was启动报错 mbind:Invalid argument
- HBase基础知识(3):CRUD操作之删除方法
- OO真经——关于面向对象的哲学体系及科学体系的探讨(上)
- 十、从头到尾彻底理解傅里叶变换算法、下
- maven之pom文件详解
- 双机热备数据库备份脚本 v2.1
- OTSU算法学习 OTSU公式证明
- DNS原理及其解析过程 精彩剖析
- html引入css文件的名字大小写问题