I2C通讯(读写EEPROM)

I2C协议简介并发

I2C通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,它引脚少,硬件实现简单,可扩展性强,不须要USART、CAN等通讯协议的外部收发设备,被普遍的应用在系统内多个集成电路(IC)间通信。框架

它是一个多设备总线,即总线能够挂载多个I2C通讯设备,支持多个通信主机及多个通讯从机。I2C总线只使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL)。ui

每条链接到总线的设备都有一个独立的地址(7位地址或者10位地址),主机能够利用这个地址进行不相同设备之间的访问。3d

I2C物理层blog

在电路中有三种状态图片

①高电平表示逻辑 1开发

②低电平表示逻辑 0it

③高阻态扩展

当通信设备为高阻态时,即电阻很大,就像和总线断开同样配置

当通信设备想表达逻辑1的时候或者空闲时,都要设置高阻态

因此当配置I2C引脚时不能配置成推挽输出,而是要配置成开漏输出(通常用在总线上输出高阻态)

总线数目受到电容限制

I2C协议层

主机写数据到从机

主机先广播从机的地址,在地址后面的这一位表示读写位,0表示写,当有这个地址的从机时,从机会回复一个应答位(ACK),而后主机向从机写数据,每发一个字节的数据,从机会回复一个应答位,当从机没法接收数据时,会回复给主机一个非应答信号,主机会发送一个中止位

主机由从机读数据

由从机读数据与写数据到从机略有不一样,首先读写位不一样,由于是读数据因此读写位为1,而后从机向主机发送数据,主机来回复应答信号,当主机不在接收数据时,主机会回复一个非应答信号,并发送一个中止信号,注意这里的中止信号也是主机发送的。

复合格式

是由写后读复合而成

写方向(设备地址)---写入数据(存储器的内部地址或寄存器)即先选择由从机哪一个地址开始,再来读和写

通信的起始和中止信号

起始和中止信号都是由主机产生的

数据有效性

地址及数据方向

1个字节(8位)

7位的设备地址+1个读写位

举例:

0x78 + 1 =8位设备的读地址 = 0xF1

0x78 + 0 =8位设备的写地址 = 0xF0

响应

当主机向从机写数据时,主机的数据位会在应答位时主动释放数据线SDA的控制权 ,来接收从机数据线SDA的应答信号

STM32的I2C特性及框架

在业界都了解,STM32片上外设的硬件协议会出现一些BUG,但对于初学者并无什么影响

STM32的I2C硬件框架刨析

SMBA总线用的比较少

时钟控制逻辑

由时钟控制寄存器(I2C_CCR)控制

第15位控制I2C速度模式

0:标准模式I2C 100kbit/s

1:快速模式I2C 400kbit/s

在I2C标准模式或SMBus模式下:

Thigh = CCR ×TPCLK1(高电平时间), TPCLK1为AHB1时钟, CCR的值由咱们本身写上去

Tlow = CCR ×TPCLK1(低电平时间) TPCLK1为AHB1时钟 同上

当想设置快速模式时,应该设置DUTY位设置占空比

0:低电平的时间是高电平的时间的2倍

1:低电平的时间是高电平的时间的16/9倍

[图片]

数据控制逻辑

地址及数据方向

I2C为高位先行的

STM32的I2C通讯过程

一、作为主发送器

二、作为主接收器

相关文章
相关标签/搜索