UART,IIC,SPI协议

UART,IIC,SPI协议

1、UART

UART(Universal Asynchronous Receiver/Transmitter,通用异步接收/发送器)是一种串行、异步、全双工的通信协议,将所需传输的数据一位接一位地传输。其特点是通信线路简单,只要一对传输线就可以实现双向通信,大大降低了成本,但传送速度较慢。在UART通信协议中,当信号线上的状态为高时,代表“1”,当信号线上的状态为低时,代表“0”。以下是UART的一些主要特点和工作原理:

  1. 异步通信:UART使用异步通信方式,这意味着发送和接收设备不需要共享一个共同的时钟信号来同步数据传输。
  2. 点对点连接:UART通常用于点对点连接,即一个发送器(TX)连接到一个接收器(RX)。
  3. 波特率:UART通信的速率由波特率(Baud Rate)决定,这是每秒传输的比特数。不同的设备可以配置不同的波特率。
  4. 数据位:UART可以配置数据位的数量,通常是7或8位,但也有其他配置选项。
  5. 停止位:UART通信可以包含1或2个停止位,这些位用于标识数据包的结束。
  6. 奇偶校验:为了错误检测,UART可以配置奇偶校验位,可以是无校验、奇校验或偶校验。
  7. 全双工通信:UART支持全双工通信,即可以同时发送和接收数据。
  8. 简单易用:UART的实现相对简单,是许多微控制器和计算机系统中的标准组件。
  9. 应用广泛:UART用于多种应用,包括计算机主板上的串行端口、远程通信设备(如调制解调器)、以及嵌入式系统中的设备间通信。
  10. 电气特性:UART通信通常使用TTL电平,但在长距离通信中可能需要使用RS-232,RS-485或其他电气标准。
  11. 灵活性:UART的配置非常灵活,可以根据需要调整波特率、数据位、停止位和校验位等参数。

UART协议的这些特性使其成为一种非常通用和灵活的通信方式,适用于各种短距离和长距离的串行通信需求。

​ UART 使用两条数据线。每个设备上都有一个 RX 引脚和一个 TX 引脚(RX 用于接收,TX 用于发送)。每个设备的 RX 引脚都连接到另一个设备的 TX 引脚。无需时钟线

​ UART 使用两条数据线。每个设备上都有一个 RX 引脚和一个 TX 引脚(RX 用于接收,TX 用于发送)。每个设备的 RX 引脚都连接到另一个设备的 TX 引脚。无需时钟线

在这里插入图片描述
​ 特点:

  • 数据一位一位地顺序传送
  • 双向通信,全双工(两条线,一条发送数据(TX),一条接收数据(RX))
  • 传送速度相对较慢

在这里插入图片描述

​ 在串口通讯协议中, 规定了数据包的内容,它由起始位、数据位、校验位以及停止位组成,通讯双方的数据包格式要约定一致才能正常收发数据。

起始位:通信线路上空闲时为“1”,当检测到“0”即下降沿时,认为数据传输开始

数据位:传输开始后传递的需要接收和发送的数据值,可以表示指令或数据,有效数据的长度常被约定为5、6、7或8位长。

校验位:数据位之后有一个数据校验位(可选),校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)。

停止位:数据传输结束,传输线恢复常“1”状态,停止信号可由0.5、1、1.5或2个逻辑1的数据位表示。

由波特率怎么计算每秒传输的字节数:在异步通信时,需要设定好波特率,波特率即每秒传输多少个二进制数据。例如波特率=115200,则它传输一位数据位(1bit)的时间为1/115200s,而传输一个8位的数据,还需要一个起始位和停止位,共十位,所需时间是10*1/115200s,那么一秒能传输1/(10/115200)=11520bytes。

2 、IIC

IIC,通常指的是I2C(Inter-Integrated Circuit),是一种多主机、同步的串行计算机总线,用于连接微控制器和其他设备。以下是I2C协议的一些关键特性:

  1. 两线制:I2C总线由两条线组成,分别是数据线(SDA)和时钟线(SCL)。

  2. 多主机支持:I2C允许多个主机和多个从设备在同一总线上通信。主机可以是任何控制时钟信号的设备。

  3. 地址空间:每个设备在I2C总线上都有一个唯一的地址,通常为7位或10位,用于识别设备。

  4. 同步通信:I2C使用同步通信方式,数据传输速率由时钟信号(SCL)控制。

  5. 主从模式:在I2C通信中,至少有一个主设备和至少一个从设备。主设备发起通信,从设备响应。

  6. 数据传输方向:主设备可以向从设备写入数据,也可以从从设备读取数据。这个方向由主设备在发送地址时附加的读写位(R/W位)决定。

  7. ACK机制:从设备在接收到数据后,会返回一个应答位(ACK),以指示数据是否成功接收。如果数据没有被成功接收,从设备将返回非应答位(NACK)。

  8. 速度:I2C有不同的速度标准,包括标准模式(最高100kbps)、快速模式(最高400kbps)、快速模式+(最高1Mbps)和高速模式(最高3.4Mbps)。

  9. 功耗:I2C通常功耗较低,适合于便携式设备和电池供电的系统。

  10. 应用:I2C广泛应用于各种电子设备中,如传感器、EEPROM、实时时钟(RTC)等,用于微控制器之间的通信或与外设的通信。

I2C协议的这些特性使其成为一种非常灵活和高效的通信方式,特别适用于嵌入式系统中的短距离通信。

I2C通讯设备之间的常用连接方式如图

在这里插入图片描述

(1) 在一个I2C通讯总线中, 可连接多个I2C通讯设备,支持多个通讯主机及多个通讯从机。

(2) 一个I2C总线只使用两条总线线路,一条双向串行数据线(SDA) , 一条串行时钟线 (SCL)。数据线即用来表示数据,时钟线用于数据收发同步。

(3) 每个连接到总线的设备都有一个独立的地址, 主机可以利用这个地址进行不同设备之间的访问。

(4) 总线通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态, 而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。

(5) 多个主机同时使用总线时,为了防止数据冲突, 会利用仲裁方式决定由哪个设备占用总线。

(6) 具有三种传输模式:标准模式传输速率为100kbit/s ,快速模式为400kbit/s , 高速模式下可达 3.4Mbit/s,但目前大多I2C设备尚不支持高速模式。

(7) 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制 。

IIC 起始信号和停止信号

在这里插入图片描述

启动条件:
当 SCL 线是高电平时 SDA 线从高电平向低电平切换,这个情况表示通讯的起始。
向其他从属设备发出信号,表明传输即将发生。
如果两个主机同时发送启动条件想要获得总线的所有权,那么谁先将 SDA 拉低,谁就“获胜”
停止条件:
所有数据帧发送完毕后,将发送停止条件。
当 SCL 是高电平时 SDA 线由低电平向高电平切换,表示通讯的停止。起始和停止信号一般由主机产生。

传输数据

​ I2C使用SDA信号线来传输数据,使用SCL信号线进行数据同步。 SDA数据线在SCL的每个时钟周期传输一位数据。传输时,SCL为高电平的时候SDA表示的数据有效,即此时的SDA为高电平时表示数据“1”, 为低电平时表示数据“0”。当SCL为低电平时,SDA的数据无效,SDA的电平切换一般在SCL为低电平时。

在这里插入图片描述

ACK(响应)

​ I2C的数据和地址传输都带响应。响应包括“应答(ACK)”和“非应答(NACK)”两种信号。作为数据接收端时, 当设备(无论主从机)接收到I2C传输的一个字节数据或地址后,若希望对方继续发送数据,则需要向对方发送“应答(ACK)”信号, 发送方会继续发送下一个数据;若接收端希望结束数据传输,则向对方发送“非应答(NACK)”信号, 发送方接收到该信号后会产生一个停止信号,结束信号传输。

在这里插入图片描述

传输时主机产生时钟,在第9个时钟时,数据发送端会释放SDA的控制权,由数据接收端控制SDA, 若SDA为高电平,表示非应答信号(NACK),低电平表示应答信号(ACK)。

IIC写数据

在这里插入图片描述

​ 数据传输方向配置为写数据时,主机广播地址,R/W写入0,对应从机返回应答信号(ACK),主机开始正式向从机传输数据(DATA), 数据包的大小为8位,主机每发送完一个字节数据,都要等待从机的应答信号(ACK),重复这个过程,可以向从机传输N个数据, 这个N没有大小限制。当数据传输结束时,主机向从机发送一个停止传输信号§,表示不再传输数据。

IIC读数据

在这里插入图片描述

​ 数据传输方向配置为读数据时,主机广播地址,R/W写入1,对应从机返回应答信号(ACK),从机开始向主机返回数据(DATA), 数据包大小也为8位,从机每发送完一个数据,都会等待主机的应答信号(ACK),重复这个过程,可以返回N个数据,这个N也没有大小限制。 当主机希望停止接收数据时,就向从机返回一个非应答信号(NACK),则从机自动停止数据传输。

IIC通信步骤

STEP1:主设备发出开始信号,(SCL高电平,SDA由高变低),总线进入繁忙状态,主设备开始监听总线并准备接收数据仅允许主从设备间数据传输,停止信号后释放总线。
STEP2:主设备发送7位地址加读写方向位,从设备根据地址回应。*STEP3:每个从机将主机发送的地址与自己的地址进行比较。成功匹配地址的从设备通过拉低 SDA 线返回 ACK 位。
STEP4:当主设备收到从设备的应答ACK后,开始发送或接收数据。
STEP5:接收设备发送完每个数据帧后,向发送方返回另一个ACK位,以确认该帧已成功接收,然后继续传输。
STEP6:当数据传输完成后,主设备会向其他设备发出停止信号,释放总线,总线进入空闲状态。

3、SPI

SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于微控制器和它们的外围设备之间的数据交换。以下是SPI协议的一些主要特点:

  1. 同步通信:SPI使用一个时钟信号(SCLK)来同步数据传输,确保数据在发送和接收时同步。

  2. 全双工通信:SPI允许同时发送和接收数据,即全双工模式。

  3. 主从模式:SPI通信需要一个主设备来生成时钟信号并控制数据传输的开始和结束,从设备则响应主设备的请求。

  4. 最少3条线:SPI通信至少需要3条线,分别是:

    • SCLK(时钟线):由主设备控制,用于同步数据传输。
    • MOSI(主设备数据输入线):主设备通过这条线发送数据到从设备。
    • MISO(主设备数据输出线):从设备通过这条线发送数据到主设备。
  5. 可选的片选线:SPI通常使用额外的线(SS,即片选或从设备选择)来选择特定的从设备。在多从设备系统中,每个从设备都有一个唯一的CS线,由主设备控制。

  6. 数据传输速率:SPI的数据传输速率(即时钟频率)取决于主设备的时钟信号频率,可以非常高,适合高速数据传输。

  7. 数据宽度:SPI支持可配置的数据宽度,通常是8位,但也可以是16位或更宽。

  8. 极性和相位:SPI允许配置时钟信号的极性(CPOL)和相位(CPHA),这影响时钟信号的初始状态和数据采样的时机。

  9. 无内建的错误检测:SPI协议本身不包含错误检测机制,但可以通过其他方式实现,例如通过额外的线路或协议。

  10. 应用广泛:SPI广泛用于连接各种外围设备,如传感器、存储器、LCD控制器等。

  11. 简单易用:SPI协议相对简单,易于实现,是嵌入式系统中常用的通信方式之一。

SPI协议的这些特性使其非常适合于需要高速数据传输和/或控制多个从设备的场合。

SPI通讯设备之间的常用连接方式如图

在这里插入图片描述

4 线 SPI 设备通讯使用3条总线及片选线,3条总线分别为SCK、MOSI、MISO,片选线为SS。其中

(1)SCK:时钟线,用于通讯数据同步

(2)MOSI:主设备输出/从设备输入引脚,(Master Output, Slave Input)

(3)MISO:主设备输入/从设备输出引脚,(Master Input,,Slave Output)

(4)SS:片选信号,SPI通讯以SS线置低电平为开始信号,以SS线被拉高作为结束信号。

CPOL/CPHA及通讯模式

时钟极性CPOL是指SPI通讯设备处于空闲状态时,SCK信号线的电平信号(即SPI通讯开始前、 SS线为高电平时SCK的状态)。CPOL=0时, SCK在空闲状态时为低电平,CPOL=1时,则相反。

时钟相位CPHA是指数据的采样的时刻,当CPHA=0时,MOSI或MISO数据线上的信号将会在SCK时钟线的“奇数边沿”被采样。当CPHA=1时, 数据线在SCK的“偶数边沿”采样。

SPI模式CPOLCPHA空闲状态下SCK采样时间
0000奇数边沿(数据在 SCK 的上升沿上读取,在下降沿上切换数据)
1010偶数边沿(数据在 SCK 的下降沿上读取,在上升沿上切换数据)
2101奇数边沿(数据在 SCK的下降沿上读取,在上升沿上切换数据)
3111偶数边沿(数据在 SCK 的上升沿上读取,在下降沿上切换数据)

在这里插入图片描述

​ 以CPHA=0为例。首先,根据SCK在空闲状态时的电平,分为两种情况。 CPOL=0时,SCK信号线在空闲状态为低电平时;CPOL=1时,空闲状态为高电平时,无论CPOL=0还是=1,当时钟相位CPHA=0时,在图中可以看到,采样时刻都是在SCK的奇数边沿。 注意当CPOL=0的时候,时钟的奇数边沿是上升沿,而CPOL=1的时候,时钟的奇数边沿是下降沿。 MOSI和MISO数据线的有效信号在SCK的奇数边沿保持不变,数据信号将在SCK奇数边沿时被采样,在非采样时刻,MOSI和MISO的有效信号才发生切换。

4 总结

UARTIICSPI
线数2(RTD,TXD)2(SDA,SCL)4(SCLK.MISO,MOSI,SS)
地址无地址有7位或10位地址无地址,通过CS信号选择设备
同步机制异步同步同步
应答机制
数据传输方向全双工半双工全双工
支持设备数量1对1可连接多个从设备可连接多个设备,通过SS控制
优点简单易用,只需要两条线即可实现通信多设备共享同一总线
地址唯一,易于识别设备
功耗较低
支持高速数据传输
  • 20
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值