spi、uart、iic总线区别

1、UART总线详解

Universival Asychronous Receiver/Transmitter(通用异步串行口),UART 是一种较为通用的数据传输的方法(即 Start Bit+Data+Check+StopBit),而 COM 口中 Rx、Tx 的数据格式即为 UART。

UART 和 RS232是两种异步数据传输标准。计算机中的 COM1和 COM2都是 RS232串行通信标准接口。当 Uart 接口连到 PC 机上时,需要接 RS232电平转换电路,一块电平转换芯片。用于将TTL/CMOS(单片机电平)转换为RS232(PC机电平)。因为TTL/CMOS电平范围是0~1.8/2.5/3.3/5V(不同单片机范围不同),高电压表示1,低电压表示0。而RS232逻辑电平范围-12V~12V,-5~-12表示高电平,+5~+12V表示低电平。

UART 使用发送数据线 TXD 和接收数据线 RXD 来传送数据,接收和发送可以单独进行也 可以同时进行。它传送数据的格式有严格的规定,每个数据以相同的位串形式传送,每个串行数据由起始位,数据位,奇偶校验位和停止位组成。从起始位到停止位结束的时间称为一 帧(frame),即一个字符的完整通信格式

UART 总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器 (产生的波特率等于传输波特率的16倍)、UART 接收器、UART 发送器组成,硬件上由两根线, 一根用于发送,一根用于接收。 显然,如果用通用 IO 口模拟 UART 总线,则需一个输入口,一个输出口。 UART 常用于控制计算机与串行设备的芯片。

时序图如下所示:

                    

2.SPI总线

Serial Perheral Interface,是一种全双工同步串行接口标准,串行通信的双方用四 根线进行通信,这四根连线分别是:片选信号,I/O 时钟,串行输入,串行输出,这种接口的特点是快速,高效,并且操作起来比 I 2C 要简单一些,接线也比较简单,TLC2543提供 SPI 接口。

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 的数据输入和输出线独立,所以允许同时完成数据的输入和输出

发送协议:

上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。

3.IIC总线

Inter-Integrated Circuit(集成电路之间), I 2C 总线是一种由 PHILIPS 公司开发的 两线式双向串行总线,用于连接微控制器及其外围设备。I 2C 总线产生于在80年代,最初为音 频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管 理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。 可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。 I 2C 属于两线式串行总线,它由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。 在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,最高传送速率100kbps。各种被控制电 路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和 模块都有唯一的地址,在信息的传输过程中,IC2总线上并接的每一模块电路既是主控器(或 被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU 发出的控制信号分为 地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制 量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同 一条总线上,却彼此独立,互不相关。

详细的协议分析,请参考文章:https://blog.csdn.net/ce123_zhouwei/article/details/6882221

4.SPI、IIC、UART总线比较

         a.I2C 线更少,我觉得比 UART、SPI 更为强大,但是技术上也更加麻烦些,因为 I2C 需要有双向 IO 的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯 片之间的通信,较少用于远距离通信。SPI 实现要简单一些,UART 需要固定的波特率,就是说两位数据的间隔要相等,而 SPI 则无所谓,因为它是有时钟的协议。

         b.I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的 SPI 要少。

         c.SPI 和 UART 可以实现全双工,但 I2C 不行。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值