总线(五)I2C通信协议介绍

I2C背景知识

IIC(Inter-Integrated Circuit)简称IICBus 集成电路总线。由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。自2006年10月1日起,使用I²C协议已经不需要支付专利费,但制造商仍然需要付费以获取I²C从属设备地址。

I2C特性

1、双向的同步串行总线
2、支持设备之间的短距离通信
3、标准通信速率:100Kbps 快速模式:400Kbps 高速模式:3.4Mbps
4、各个设备之间的SCL和SDA线都是线与关系
5、扩展的器件的数量主要由电容负载来决定,其负载能力为400pF
6、具有极低的电流消耗

I2C总线的物理层

由于SDA、SCL为漏极开路结构(OD),因此它们必须接有上拉电阻,阻值的大小常为 1k8、4k7、10k,但1k8时性能最好。则在总线空闲时,两根线均为高电平。I2C总线的上拉电阻的阻值要精心考虑,如果上拉电阻的阻值太大,则由于I2C设备输入端的输入电容的存在,会造成信号上升沿和下降沿变缓,以至于不能满足I2C设备的建立时间和保持时间,造成通信的错误发生;如果上拉电阻的阻值过小,则会造成较大的功率损耗。因此I2C通信的上拉电阻的阻值要满足设备上升沿和下降沿要求的同时尽量选择较大的阻值,以降低消耗的功耗问题。
在这里插入图片描述

在这里插入图片描述

I2C标准协议

I2C的位传输

数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA传输数据bit
数据改变:SCL为低电平时,SDA线才能改变传输bit
在这里插入图片描述

1、开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
在这里插入图片描述

2、应答信号
Master每发送完8bit数据后等待Slave的ACK
即在第9个clock,若从IC发出ACK,SDA会被拉低。
若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程
在这里插入图片描述

I2C总线协议

在这里插入图片描述

小结整体时序:
串行协议,多主机模式。(注:主端必须是带有CPU的逻辑模块,在同一总线上同一时刻使能有一个主端,可以有多个从端)
1、起始信号:SCL为高电平时,SDA下降沿,主机发送;
2、停止信号:SCL为高电平时,SDA上升沿,主机发出;
3、数据与地址按8位/字节传输,高位在前;
4、传输过程中,SCL为低电平时,SDA更改状态,SCL为高电平时,SDA状态需稳定;
5、每传输一个字节,接收器必须回应1个应答位(ACK)给发送器

I2C读写寄存器时序

写寄存器操作标准流程

在这里插入图片描述
1、Master 发起 START
2、Master 发送I2C addr (7bit) 和w操作0(1bit),等待ACK
3、Slave 发送ACK
4、Master 发送reg addr (8bit),等待ACK
5、Slave发送ACK
6、Master发送data(8bit),即要写入寄存器中的数据,等到ACK
7、Slave发送ACK
8、第6步和第7步可以反复多次,即顺序写多个寄存器
9、Master发起STOP

读寄存器操作标准流程

在这里插入图片描述

1、Master 发起 START
2、Master发送I2C addr地址 (7bit) 和w操作0(1bit),等待ACK
3、Slave 发送ACK
4、Master 发送reg addr (8bit),等待ACK
5、Slave发送ACK
6、Master 发起 START
7、Master发送I2C addr(7bit)和r操作1(1bit),等待ACK
8、Slave 发送ACK
9、Slave发送data(8bit),即寄存器的值
10、Master发送ACK
11、第9步和第10步可以重复多次,即顺序读多个寄存器

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bazinga bingo

您的鼓励就是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值