I2C通信协议

目录

前言

I2C总线总览

I2C介绍

I2C电路规范

六种时序结构

起始与终止

发送一个字节

接收一个字节

主机发送与接受应答

发送一帧数据

接收一帧数据

读数据帧

复合格式

其他

 I2C总线应答信号


前言

(本文中截图来源B站江科大视频)

I2C总线总览

可以看下面这个视频初步了解一下:

4分钟看懂!I2C通讯协议 最简单的总线通讯!_哔哩哔哩_bilibili

I2C介绍

IIC协议规定,当主机作为接收设备时,主机对最后一个字节不应答,以向发送设备(从设备)标识数据传送结束。这是因为每次传输都应得到应答信号后再进行下一个字节传送。如果此时接收机应答了,那它就接收的不是最后一个字节了。如果是最后一个字节,第9个时钟周期发送的是非应答信号(此时发送的不是应答信号就是非应答信号),最后发送停止信号。

I2C电路规范

两根线:SCL(时钟线) SDA(数据线)

可以做如下想象:主机(左边的A人)通过下拉杆子(下拉为0,松手上去为1)发送地址,其他人(I2C总线上的其他设备)通过观察发送的地址判断和自己有没有关系,如果这个地址是自己,那就默认自己和主机联系,并通过 下拉杆子/松手上放杆子 发送数据。

六种时序结构

起始与终止

起始信号:SCL保持高电平 SDA下降沿

终止信号:SCL保持高电平 SDA上升沿

发送一个字节

逻辑1:SCL保持高电平时,SDA高电平

逻辑0:SCL保持高电平时,SDA低电平

接收一个字节

逻辑1:SCL保持高电平时,SDA高电平

逻辑0:SCL保持高电平时,SDA低电平

主机发送与接受应答

从机方面:从机接收到了之前的信息会回复0,没收到或“主机读取接收完成”会回复1

发送一帧数据

(开始 - (地址+写0) - 从机应答0 - 第一个字节 - 从机应答0 - 第二个字节……第n个字节 - 从机应答0 - 终止)

读写位:写为0,读为1

接收一帧数据

(开始 - (地址+读1) - 从机应答0 - 第一个字节 - 主机应答0 - 第二个字节……第n个字节 - 主机应答1 - 终止)

注:(此处没有标明要读的寄存器地址,所以从机会发默认地址下的数据(比如某些传感器就一个数据),当主机应答1时宣布不打算继续接收了,那么下一位就为停止位)

读数据帧

(下图)一般开始接收前需要先“写”从机的设备地址,“写”从机的要开始读的寄存器的地址。

复合格式

指定的什么

其他

如有疑问可看一下其他大佬的文章:

 I2C总线应答信号

I2C总线应答信号ACK_ack应答信号-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值