欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > STM32 I2C 通信协议

STM32 I2C 通信协议

2025/5/27 15:27:19 来源:https://blog.csdn.net/2301_80039972/article/details/148195963  浏览:    关键词:STM32 I2C 通信协议

1、原理

1、硬件电路

一主多从,单片机作为总线主机

SDA:数据线

SCL:时钟线

主机对SCL线完全控制,从机只能读取;在空闲状态下,主机可以主动发起对SDA的控制,只有在从机发送数据和从机应答的时候,主机才会暂时转交SDA的控制权给从机

I2C禁止所有设备输出强上拉的高电平,采用外置弱上拉开漏输出的电路结构。为了防止出现两个引脚同时处于输出状态,如一个高电平,一个低电平,会发生电源短路。

开漏输出,输出低电平,下管导通,强下拉;输出高电平,下管断开,引脚浮空。为了避免高电平造成的引脚浮空需要在总线外面给SCL和SDA各外置一个上拉电阻(弱上拉)。

从机地址设备:每个从机设备都有一个唯一确定的7位设备地址,一般器件地址的最后几位是可以在电路中改变的。

2、时序基本单元

1、起始、终止

2、发送字节

低电平主机放数据,高电平从机读数据

3、接收字节

低电平从机放数据,高电平主机读数据

主机在接收数据时,必须释放对SDA的控制权(让SDA恢复高电平),让从机控制SDA,发送数据

4、应答

发送:主机释放SDA后,从机立刻将SDA拉低电平,应答位为0,说明从机已经收到(默认高电平,低电平说明从机进行了回应) ;应答位为1,说明从机没有进行回应,发送的字节可能没有收到。

接收:告诉从机是否要继续发送数据。得到主机应答,从机继续发送;没得到应答,从机会释放SDA

3、地址时序

1、指定地址写

发送7位从机地址+1位读写位,在之后的时序中,主机的操作,0写1读

2、当前地址读

调用当前地址读的时序时,主机没有指定读取哪个地址,从机会返回当前指针指向的寄存器的值。

指针上电默认指向地址0,每写入、读出一个字节,指针自动自增一次。

3、指定地址读

前半部分是指定地址写,只指定了地址,还没写入数据;后半部分是当前地址读,加在一起就是指定地址读。

第一个字节发送从机地址,第二个字节用来发送从机的寄存器地址,从机接收到之后,寄存器指针就指向这个地址。为了修改读写标志位,Sr重复起始条件,相当于另起一个时序,指针不会因为时序的消失而消失或改变。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词