SPI与IIC通讯详解

SPI通讯协议

传送门:https://www.cnblogs.com/deng-tao/p/6004280.html
个人觉得这个是网上比较详细的SPI通讯协议详解了;

IIC通讯协议

IIC协议
总线信号 :

SDA :串行数据线

SCL :串行时钟

总线空闲状态 :

SDA :高电平

SCL :高电平

起始位:SCL为高电平期间 SDA出现下降沿
SPI与IIC通讯详解
终止位:SCL为高电平期间 SDA出现上升沿

SPI与IIC通讯详解

数据传输 :SDA的数据在SCL高电平期间被写入从机。所以SDA的数据变化要发生在SCL低电平期间。

SPI与IIC通讯详解
应答信号

每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据,从机应答主机所需要的时钟仍是主机提供的,应答出现在每一次主机完成8个数据位传输后紧跟着的时钟周期,低电平0表示应答,1表示非应答
SPI与IIC通讯详解
IIC写时序
SPI与IIC通讯详解

  • 产生start位

  • 传送器件地址ID_Address。器件地址的最后一位为数据的传输方向位,R/W,低电平0表示主机往从机写数据(W),1表示主机从从机读数据(R)。ACK应答,应答是从机发送给主机的应答,这里不用管。

  • 传送写入器件寄存器地址,即数据要写入的位置。同样ACK应答不用管。

  • 传送要写入的数据。ACK应答不用管

  • 产生stop信号。

IIC连续写时序
多数据写时序,写入器件地址,写入寄存器地址,连续写入数据。
SPI与IIC通讯详解
IIC读时序
SPI与IIC通讯详解

  • 产生start信号

  • 传送器件地址(写ID_Address),ACK。

  • 传送字地址(写REG_Address),ACK。

  • 再次产生start信号。

  • 再传送一次器件地址,ACK。

  • 读取一个字节的数据,读数据最后结束前无应答ACK信号。

  • 产生stop信号。
    IIC连续读时序
    多数据读时序,写入器件地址,写入寄存器地址,,然后再次写入器件地址,连续写入数据。读数据最后结束前无应答ACK信号。
    SPI与IIC通讯详解