IIC协议简介

IIC总线介绍

IIC也称I2C,是一个多主从的串行总线,由飞利浦公司发明的通讯总线,属于半双工同步传输类总线,仅由两条线就能完成多机通讯,一条SCL时钟线,另外一条双向数据线SDA,IIC总线要求每个设备SCL/SDA线都是漏极开路模式,因此必须带上拉电阻才能正常工作。I2C协议占用引脚少,硬件实现简单,可扩展性强,I2C数据传输速率有标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps)。

IIC协议时序

在这里插入图片描述

  1. IDLE
    表示总线空闲状态。此状态下时钟信号SCL和数据信号SDL均为高电 平,此时无I2C设备工作。
  2. START
    表示起始状态。在IDLE状态下,时钟信号SCL继续保持高电平,数据信号SDL出现由高电平转换为低电平的下降沿,此时产生一个起始信号,与总线相连的I2C设备检测到起始信号之后,进入起始状态等待控制字节的输入。
  3. Read or Write
    表示IIC设备读写状态。具体见下文。
  4. STOP
    表示停止状态。完成数据读写后,SCL保持高电平,SDL产生一个由低电平转换为高电平的上升沿信号之后,产生停止信号,总线回到空闲状态。

I2C读写状态时序如下:
在这里插入图片描述
SCL为低电平期间,SDA允许数据变换(1代表高电平,0代表低电平)。SCL为高电平期间,SDA数据必须保持稳定,因此一个时钟周期传输1bit数据,每次传输8个bit即一个字节,主机将在最后一个数据时钟末释放SDA总线使从机应答,在传输完1字节数据后的第一个时钟周期SCL为高电平,如果SDA未被检测到低电平,则视为非应答,代表此次数据传输失败。
注意:数据传输是以高位在前,低位在后。

I2C数据读写操作

I2C单字节写步骤如下:
(1)主机产生起始信号并发送到从机,将控制命令写入从机(7位设备地址+1位读写控制命令),读写控制位设置为低电平,表示对从机进行写操作。
(2)从机接收到控制指令后,给与主机一个应答信号ACK,主机接收到ACK应答信号后开始写入寄存器地址,若寄存器地址为16位,则依次写入高8位,产生应答,再写入低8位,产生应答。若寄存器地址为8位,则直接从高位开始写入8位寄存器地址,产生应答。
(3)地址写入完成后,接收到从机应答信号之后,开始单字节数据的写入。
(4)单字节数据写入完成后,接收到从机应答信号之后,向从机发送停止信号,至此单字节数据写入完成。
注意:每次写入1字节数据从机都要产生一个应答信号。
I2C单字节读步骤如下:
(1)主机产生起始信号并发送到从机,将控制命令写入从机(7位设备地址+1位读写控制命令),读写控制位设置为低电平,表示对从机进行写操作。
(2)从机接收到控制指令后,给与主机一个应答信号ACK,主机接收到ACK应答信号后开始写入寄存器地址,若寄存器地址为16位,则依次写入高8位,产生应答,再写入低8位,产生应答。若寄存器地址为8位,则直接从高位开始写入8位寄存器地址,产生应答。
(3)地址写入完成后,接收到从机应答信号之后,主机再次向从机发送一个起始信号。
(4)主机向从机发送控制命令,读写控制位设置为高电平,表示对从机读操作。
(5)主机接收到从机的应答信号后,开始接收从机的单字节数据。
(6)主机接收完成数据之后,主机产生一个时钟周期的高电平无应答信号。
(7)主机向从机发送一个停止信号,至此单字节读操作完成。

注意:随机读操作过程中需要先进行一次写操作,因为我们需要将从机中的地址指针指到我们想要读取的地址,此次写操作也叫哑写、虚写,待从机给与应答信号后,指针指到我们想要读的地址,此时可以进行当前地址读操作了。
随机读与当前地址读的区别:
随机读:可以随机读取从机某地址的数据。
当前地址读:是指在一次读或写操作后发起的读操作,I2C设备在读写操作后,其内部的地址指针自动加1。

I2C页写与单字节写
I2C单字节写与页写的最大的区别:单字节写按照I2C协议每次写入一个字节,产生一个stop信号,页写可以允许写入多个字节数据,但不能超过设备单页包含的最大存储数,写入多个字节后,最终主机发送一个stop信号。
在这里插入图片描述
所有的I2C设备都支持单数据写入操作,但只有部分I2C设备支持页写操作。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三岁囍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值