STM32标准库开发—硬件I2C外设

I2C外设简介

STM32标准库开发—硬件I2C外设_第1张图片

固定多主机模式:在固定多主机模式下,主机的角色是固定的,每个主机都有一个唯一的地址。在通信过程中,只有一个主机拥有总线的控制权,其他主机处于被动状态。只有获得控制权的主机才能发送数据或接收数据。当一个主机完成通信后,它会释放总线的控制权,其他主机才能接管。
可变多主机模式:在不定多主机模式下,主机的角色可以动态切换,每个主机都可以请求总线的控制权。当一个主机想要发送数据时,它会发送一个请求信号,如果没有其他主机正在使用总线,它就可以获得控制权并进行通信。如果有其他主机正在使用总线,那么请求的主机需要等待,直到总线空闲为止。在这种模式下,主机之间需要通过协议来协调和管理总线的使用。
STM32默认是可变多主机模式,即STM32一开始也是从机。

I2C框图

STM32标准库开发—硬件I2C外设_第2张图片

  • 当我们要发送数据时,可以把数据放到DATA REGISTER(DR),当检测收数据移位寄存器为空时,数据会自动移入移位寄存器,置TXE为1,表示发送寄存器为空,数据经过数据控制寄存器,发送到SDA总线上
  • 当我们要接收数据时,接收的数据从SDA经数据控制寄存器,一位一位移动到数据移位寄存器,最终放到DR寄存器,置RXNE为1,表示接收寄存器非空,此时就可以读取DR寄存器的里值
  • 比较器和地址寄存器是STM32从机模式下使用,当STM32作为从机时就需要一个可寻址地址被其他主机找到,可以配置地址到自身地址寄存器,方便其他主机寻址时比较。并且支持同时响应俩个从机地址即(双地址寄存器)。
I2C外设主机发送

STM32标准库开发—硬件I2C外设_第3张图片

注意:
7位主发送中第一个字节是地址字节(七个地址位+1个读写标志位)。
10位主发送前俩个字节都是地址字节,第一个字节是固定标志位11110+2位地址+1位读写位,第二个字节是8位地址构成10位寻址。

I2C外设主机接收

STM32标准库开发—硬件I2C外设_第4张图片

注意:如果不想接收数据了,需要在最后一个接收时序前提取将ACK应答位置为0,并且设置终止条件请求。

你可能感兴趣的:(stm32,嵌入式硬件,单片机)