UART、IIC以及SPI通信协议

目录

一、UART总线通信协议

二、IIC总线时序图

2.1IIC总线时序图

2.1.1起始信号和终止信号时序图

2.2数据传输时序图

2.3字节传输和应答信号

2.4I2C的寻址

2.2IIC总线通信协议

2.2.1主机给从机发生一个字节的通信协议

2.2.2主机给从机发生连续的多个字节的通信协议

2.2.3主机从从机读一个字节的通信协议

2.2.4主机从从机读连续的多个字节的通信协议

三、SPI总线通信协议

3.1SPI基本的通信协议

3.2SPI共有4种通信模式


一、UART总线通信协议

起始位:发送数据的开始信号,由发送器产生;

数据位:要发送的数据,先发送低位,再发送高位;

校验位:校准数据的,常用奇偶校验位;

​ 奇校验:数据位和校验位中,1的个数之和为奇数;

​ eg : 假设数据位为0x55, 校验位自动补1;假设数据位为0x51, 校验位自动补0;

​ 偶检验:数据位和校验位中,1的个数之和为偶数;

​ eg : 假设数据位为0x55, 校验位自动补0;假设数据位为0x51, 校验位自动补1;

停止位:一帧数据发送结束,最重要的功能是用来校准时钟的。

​ 由于串口采用的是异步通信,通信的双方各自采用各自独立的时钟源,虽然要求时钟的频率保持一致,

​ 但是也会存在一定的误差,每发送一个bit位数据之后,误差就会进行累积,因此发送一帧数据完成之后,

​ 需要通过停止位校准时钟。

常用的串口协议为:8N1(8位数据位,没有校验位,1个停止位);

波特率(比特率):表示串口通信的数据的传输速率,每s钟传输数据的bit位数,单位为bps。

​ 常用的波特率为:115200bps或者9600bps

二、IIC总线时序图

2.1IIC总线时序图

2.1.1起始信号和终止信号时序图

1> SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号

2> SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号

3> 起始和终止信号都是由主机发出,起始信号产生后,总线就处于占用的态;终止信号产生后,总线就处于空闲态。

2.2数据传输时序图

1> I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

2> 在SCL为低电平期间,发送器可以向数据线上写入输入,因此数据线上的数据允许发生变化;

3> 在SCL为高电平期间,接收器从数据线上读取数据,因此必须保持数据线上的数据保持稳定。

2.3字节传输和应答信号

​ 1> 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

​ 2> 在第9个时钟周期的低电平期间,接收器向数据线上写入数据,在第9个时钟周期的高电平期间,发送器从数据线上读取数据,如果读到的是高电平,则表示非应答信号;如果读到的是低电平,则表示应答信号。

​ 3> 应答信号是由接收器产生的。

2.4I2C的寻址

1> I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。

2> 主机在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),用“0”表示主机发送数据(W),“1”表示主机接收数据(R)。总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己被主机寻址,根据R/W位将自己定为发送器或接收器。

2.2IIC总线通信协议

2.2.1主机给从机发生一个字节的通信协议

”8位数据“ 被写到 “寄存器的地址” 中。

2.2.2主机给从机发生连续的多个字节的通信协议

第1个 ”8位数据“ 被写到 “寄存器的地址” 中。

第2个 ”8位数据“ 被写到 “寄存器的地址+1” 中。

第3个 ”8位数据“ 被写到 “寄存器的地址+2” 中。

..............(地址会自动增加1)

2.2.3主机从从机读一个字节的通信协议

从机将 “寄存器地址”中的数据发送给主机

从机只能被动的进行数据的收发,如果从机给主机发送一个字节数据之后,如果主机给从机发送应答信号之后,则从机会认为主机还想接收下一个字节的数据,因此从机会将下一个字节的数据再次发送给主机;如果从机收到的是非应答信号,则从机不会发送下一个字节的数据给主机。

2.2.4主机从从机读连续的多个字节的通信协议

第一次, 从机将 “寄存器地址”中的数据发送给主机;

第二次, 从机将 “寄存器地址+1”中的数据发送给主机;

..........

三、SPI总线通信协议

3.1SPI基本的通信协议

         设备选择线/片选线 : CS SS NCS NSS

​          时钟线 : SCK SCL SCLK

​          串行输出数据线 : MOSI

​          串行输入数据线 : MISO

​          M : Master I : Input S : Slave O : Output

          MOSI:主器件数据输出,从器件数据输入

          MISO:主器件数据输入,从器件数据输出

          SCLK :时钟信号,由主器件产生

           /SS:从器件使能信号,由主器件控制(片选)

1> 起始信号: NSS信号线由高变低,是SPI通讯的起始信号

2> 结束信号:NSS信号线由低变高,是SPI通讯的停止信号

3> 数据传输:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。

​ MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。

​ SPI每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。

​ SPI总线发送的数据既有地址信息,命令信息和数据相关的信息。

3.2SPI共有4种通信模式

在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)这两项即是主从设备间数据采样的约定方式。

3.2.1时钟极性CPOL : 设置时钟空闲时的电平的状态

​ 当CPOL = 0 ,SCK引脚在空闲状态保持低电平;

​ 当CPOL = 1 ,SCK引脚在空闲状态保持高电平。

3.2.2时钟相位CPHA :设置数据采样时的时钟边沿

​ 当 CPHA=0 时,MOSI或 MISO 数据线上的信号将会在 SCK时钟线的奇数边沿被采样

​ 当 CPHA=1时, MOSI或 MISO 数据线上的信号将会在 SCK时钟线的偶数边沿被采样

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我只是个小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值