一、时序图

【裸机程序】I2C裸机_stm32

1、平时SDASCL常高
2、 开始信号:SCL保持高电平,SDA有一个下降沿脉冲
3、数据在SCL低电平时变化,在SCL高电平时稳定

二、设备地址、寻址过程、写数据

1、设备地址

设备地址共7bit,其中1010固定,A2A1A0取决于连接。读写的确定由第8位确定。

2、ACK信号

在第9 个CLK 里,I2C 主机释放SDA,由从机驱动驱动SDA.若从机发现该“设备地址”
是自已的,是把SDA 拉为低电平。这时主机就能知道此“设备地址”的设备是存在的,后面就能再发数据了。
后面接着再8 个CLK 时钟,是具体的数据,是与设备有关的。

3、主机到从机的读

【裸机程序】I2C裸机_stm32_02

寻址后的 8 个时钟是由 从机响应,从机会把设备驱动到 SDA 中,最后的第9 个时钟也
是ACK,但是由主机响应。就是说主机已经接收到数据了,就到ACK 拉为低电平。

4、结束传输

SCL 时钟信号在高电平期间,SDA 由低电平变成高电平时结束传输。