【stm32】IIC通信

本文详细介绍了IIC(Inter-IntegratedCircuit)接口的同步工作原理、硬件连接方式、数据传输步骤(包括起始、终止、发送和接收数据及应答机制),以及不同模式下的时序说明,帮助理解IIC在多设备通信中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 基本信息

同步,半双工

两根通信线:SCL,SDA

带数据应答

支持总线挂载多设备(一个主机多个从机,主机仲裁)

2. 硬件电路

所有IIC设备的SCL连在一起,SDA连在一起,主机控制SCL,只有当主机需要读取数据时,从机才短暂获得SDA的控制权

SCL和SDA均配置为开漏输出模式,正常输入

SCL和SDA均有一个上拉电阻,在4.7KΩ左右

缺点:高电平的驱动能力弱

IIC的标准模式,只有100KHz的时钟频率;

快速模式,只有400KHz的时钟频率;

高速模式,3.4MHz

3. 软件

① 起始条件:

SCL保持高电平,SDA从高电平到低电平(下降沿);

② 终止条件:

SCL保持高电平,SDA从低电平到高电平(上升沿);

③ 发送数据:

SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节

④ 接收数据:

SCL低电平期间,从机将数据位依次放到SDA线上(高位先行), 然后释放SCL, 主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA,输入模式)

应答机制:

⑤ 发送应答:

主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答;

⑥ 接收应答:

主机在发送完一个字节之后,在下一个时钟接收一个数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA);

时序说明

① 指定地址写:对于指定设备(Slave address),在指定地址下(reg address),写入指定数据(data)

 S+从机地址(7bits)+R/W(1/0)+AC(应答)+寄存器地址(8bits)+AC+Data+AC+P

② 当前地址读:对于指定设备(Slave address), 在当前地址指针指示的地址下,读取从机数据(Data)

S+从机地址+R/W+AC+Data+SA(发送非应答,从机交出控制权)+P

③ 指定地址读:对于指定设备(Slave address),在指定地址下(reg address),读取指定数据(data)

S+从机地址(7bits)+R(1)+AC(0)+Sr(Start repeat)+从机地址(7bits)+R/W(1/0)+AC(应答)+寄存器地址(8bits)+AC+Data+SA+P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值