IIC通信中设备的交互流程

本文主要叙述,当两个设备进行 IIC 通信时,两个设备的交互流程,即主机的动作和从机的动作。当通过软件编程的方式实现设备间的 IIC 通信时,我们就是按照主机的动作或从机的动作来编写对应的代码。实际上,主机和从机是按照 IIC 通信协议的要求完成相应的动作的( IIC 通信协议在文章IIC通信基础-CSDN博客 中有详细叙述),因此,程序代码就是 IIC 通信协议的提现。下面将分别叙述当两个设备进行 IIC 通信时,主机的动作和从机的动作,为编写对应代码做好准备。

主机的动作

  1. 主机产生起始信号,通过将 SDA 线在 SCL 线为高电平时由高拉低至低电平来实现。
  2. 主机发送从机地址(7位)和指示读写方向(1位)(读写方向,0为写,1为读)。
  3. 主机等待并接收从机的应答信号(ACK)(如果从机准备好通信,从机将 SDA 线拉低作为应答)。
  4. 主机发送数据字节,每个字节后再次等待并接收从机的ACK信号。
  5. 在数据传输完成后,主机产生停止信号,通过将 SDA 线在 SCL 线为高电平时由低拉高至高电平来结束通信。

从机的动作

  1. 从机监测到起始信号后,准备接收主机发送的数据或命令。
  2. 从机接收主机发送的从机地址,并检查地址是否匹配自己的地址。
  3. 如果地址匹配,从机通过将 SDA 线拉低来发送 ACK 信号回应主机。
  4. 从机接收主机发送的每个数据字节,并在接收完成后发送 ACK 信号。
  5. 在读写操作中,如果从机需要向主机发送数据,它会在主机请求数据时准备数据,并在主机的时钟信号控制下通过 SDA 线发送数据。
  6. 在读操作中,从机在主机发送停止信号之前,根据主机的请求发送数据,并在发送每个字节后等待主机的 ACK 或 NACK 信号。

总结

IIC 通信中设备的交互流程可用下图表示,下图中流程的顺序是从左到右执行,并排的流程表示同时执行。

IIC通信中设备的交互流程_第1张图片注意:

IIC通信中的应答信号是由接收设备在接收到一个字节数据后发送的,以确认数据已正确接收。应答信号是一个低电平脉冲,它在数据字节传输的第9个时钟周期出现。在这个周期中,发送设备释放SDA线,允许接收设备将SDA线拉低,以产生应答信号。如果接收设备成功接收了数据,它会在第9个时钟周期将SDA线拉低;如果接收设备无法接收或选择不应答,它将保持SDA线为高电平。

你可能感兴趣的:(嵌入式硬件,单片机,笔记,信息与通信)