一文让你看懂IIC、SPI、UART协议

本文详细解析了IIC(I2C)、SPI和UART协议的区别,包括数据流向、信号线、通信类型和选通方式。IIC强调半双工和多主机模式,SPI支持全双工和多从机,UART则为单工或半双工,适合低速应用。还介绍了它们的传输模式、总线仲裁和操作细节。
摘要由CSDN通过智能技术生成

一文让你看懂IIC、SPI、UART协议

三者区别

区别对比表

协议名字数据流向信号线通信类型选通方式
uart单工、半双工、全双工1/2条异步
spi全双工4条同步NSS选择
IIC半双工2条同步地址索引

IIC

信号线

两根双向信号线

  • SCL
  • SDA

IIC特点

  • 半双工通信方式
  • 通信过程包含开始、传输、应答、结束几个过程
  • 接口电路为开漏输出,需要接上拉电阻使用
  • 支持多主机模式(需要仲裁),总线上的每个设备都有唯一的地址,任何设备都可以作为主机,也可以做为从机,但是同一时刻只允许有一个主机

传输模式

  • 标准模式(standard):100kbps
  • 快速模式(fast):400kbps
  • 快速模式+(fast-plus):1Mbps
  • 高速模式(high-speed):3.4Mbps
  • 超快模式(ultra-fast):5Mbps

传输过程

  1. 开始
    当SCL为高电平时,SDA由高电平变为低电平时为起始条件。
  2. 从设备地址+R/W位
    IIC是8bits为单位进行传输的,刚才也提到总线上的每个设备都有唯一的地址,通信时需要选择哪个设备作为从设备,所以就需要先发送设备地址,以确定与哪个设备进行通信,格式为7bits从设备地址+1bit读/写位,构成1byte数据。
    每个IIC器件都有自己的地址,7位,一般4位表示类型,3位表示编号。一般主机寻址发送8位地址,7位器件地址 + 1位读写位(0:W,1:R)。发送到总线上时也是高位先发。
  3. ACK应答
    应答位是表示后续通信是否进行以及本次8bits通信是否成功接收的标志,发送方只有接收到从设备的响应后才会执行下一个数据的传输(PS:下图中的ACK表述有点问题,应该是拉低的)。
  4. 数据传输
    高电平读取,低电平数据变化
  5. 停止
    当SCL为高电平时,SDA由低电平变为高电平时为停止条件

请添加图片描述
在这里插入图片描述

总线仲裁

总线仲裁

上图是以两个节点为例的仲裁过程。DATA1和DATA2分别是主节点向总线所发送的数据信号,SDA为总线上所呈现的数据信号,SCL是总线上所呈现的时钟信号。当主节点1、2同时发送起始信号时,两个主节点都发送了高电平信号。这时总线上呈现的信号为高电平,两个主节点都检测到总线上的信号与自己发送的信号相同,继续发送数据。第2个时钟周期,2个主节点都发送低电平信号,在总线上呈现的信号为低电平,仍继续发送数据。在第3个时钟周期,主节点1发送高电平信号,而主节点2发送低电平信号。根据总线的线与的逻辑功能,总线上的信号为低电平,这时主节点1检测到总线上的数据和自己所发送的数据不一样,就断开数据的输出级,转为从机接收状态。这样主节点2就赢得了总线,而且数据没有丢失,即总线的数据与主节点2所发送的数据一样,而主节点1在转为从节点后继续接收数据,同样也没有丢掉SDA线上的数据。因此在仲裁过程中数据没有丢失。
————————————————
本段为参考:
版权声明:本文为CSDN博主「小栎」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010027547/article/details/47779975

10位地址位模式

地址帧为两个字节长,原来的是一个字节;
第一个字节前五位最高有效位用作10位地址标识,约定是“11110”。

10位地址位

保留地址

这些地址用于特殊用途
请添加图片描述

IIC的一些其他sao操作

  • 当主机向从机索取数据时,如果从机数据没有准备好,是否可以将时钟信号拉低,让主机等待?
  • 当主机向从机索取数据时,如果从机数据没有准备好,应该怎么反馈给主机?或者说主机怎么知道从机数据是否准备好了呢?

SPI

信号线

四根信号线

  • CLK,时钟信号,由主机发送
  • CS,片选信号,主机发送,用来控制与哪个从机进行通信,通常为低电平有效
  • MISO,主机输入,从机输出
  • MOSI,主机输出,从机输入

SPI优缺点

  • 优点

    • 全双工传输
    • 4种传输模式
    • 高速率数据传输(理论上SPI速率受限于主机发送的时钟CLK的速率)
    • 灵活的数据传输,不限制于8bits,可以是任意大小
    • 简单的硬件结构,不需要配地址
    • 允许三线模式,省掉MISO/MOSI
    • 也可以两线模式,一主一从时,可以再省掉片选
  • 缺点

    • 没有应答机制
    • 没有定义硬件级别的错误检查协议
    • 通常仅支持1个主设备
    • 传输距离比较短

传输模式

SPI有4种传输模式,主要是时钟的默认状态和采样沿的选择

  • 极性 CKP
    • CKP = 0 :时钟空闲时的状态为低电平;
    • CKP = 1 :时钟空闲时的状态为高电平;
  • 相位 CKE or CPHA
    • CKE = 0 :在时钟信号SCK的第一个跳变沿采样;
    • CKE = 1 :在时钟信号SCK的第二个跳边沿采样
      主从设备相位配置应该是相反的(不确定)

多从机模式

SPI总线只能有一个主机,但可以有多个从机,但是多个从机是怎么连接呢?

  1. 第一种方法是多CS方法
    这种方法就是每个从机都有一个片选CS信号,每次和从机通信时,只有一个从机的片选有效。这种方法相对来说比较高效,但是比较消耗硬件资源,特别是从机数量多了以后更加明显。
    多片选方法

  2. 菊花链模式
    这种方式是只有一个片选信号,MOSI和MISO信号交错相连,形成一个大的数据连环,但是这种效率比较低,如果想对最后一个从机发数据,数据需要经过所有的从机,直到最后一个从机接收到数据。
    菊花链方法
    数据流向:
    菊花链方法数据流向


UART

信号线

两根线

  • TX
  • RX

优缺点

  • 优点:
    • 通信只需要2条数据线;
    • 无需时钟信号;
    • 有奇偶校验位;
    • 只需接收端和发送端设置好数据包结构,就可以稳定通信;
  • 缺点:
    • 数据帧最大仅支持9位;
    • 不支持多主机或者多从机的主从系统;

传输协议

一个起始位,5~9个数据位,然后一个可选的奇偶校验位,一个或两个停止位
传输协议

波特率

波特率是串口数据的传输速度,即Bit/s,常见的波特率有:9600,19200,38400,57600,115200。

传输过程

  • 起始
    UART数据传输线通常在不传输数据时保持在高电平。为了开始数据传输,发送端UART在一个时钟周期内将传输线从高电平拉低到低电平
  • 数据
    数据位包含正在传输的实际数据。如果使用奇偶校验位,则可以是5位,最多8位。如果不使用奇偶校验位,则数据帧的长度可以为9位。在大多数情况下,数据首先以低有效位发送。
  • 校验
    有四种检错方式:偶校验、奇校验、高校验和低校验。当然没有校验位也是可以的。
  • 结束
    发送端UART将数据传输线从低电压驱动到高电压至少持续两位数据的时间宽度来表示整个数据包的传输已经结束。

信号电平

这里就涉及到RS232\RS485两个串口通信,他们和UART的区别主要是电平不同

TTL

输入高电平最低2V,输出高电平最低2.4V,典型值3.4V;
输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V;

RS232

逻辑1电平:-3~-15V;
逻辑0电平:+3~+15V;

RS485

RS485是差分信号进行串行传输

  • 逻辑1以两线间的电压差为+(2~6)V表示;
  • 逻辑0以两线间的电压差为-(2~6)V表示;
    电平最低2V,输出高电平最低2.4V,典型值3.4V;
    输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V;
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值