初步了解I2C

本文详细介绍了I2C协议的工作原理及其硬件结构。包括I2C接口的基本组成、主机与从机之间的通信流程,以及数据的发送和接收过程。同时探讨了I2C的采样方式,帮助读者深入理解I2C协议。

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

最近发现嵌入式的面试经常会被问到I2C协议,所以今天好好的学习总结下。目前I2C几乎所有芯片都留有I2C接口,也那怪这么多面试会被问到。下面我们下来了解一波I2C的硬件结构,如下图所示:

I2C的硬件结构包含两根线一根是数据线(SDA)和一根时钟线(SCL)外部上拉,采取一主多从的模式:一台主机与多个从设备相连,那么怎么将数据发送/接收到指定的主机/从机的呢?我们再来看两张图:

start

从机地址/方向

回应

数据1

回应

数据2

回应

……….

P停止位

上图黑色为主机发送,红色为从机发送

首先需要主机发送开始信号(START)I2C规定只有在时钟线为低电平期间允许数据线变化,如果在时钟线为高电平期间数据线产生下降沿信号即为通讯开始标志。接下来主机会发送七位从机地址和一位的读写信号,若对应的从机地址存在,时钟线的控制权交给从机,从机确认可以接收后会发送第九位的ASK回应信号表示目标地址可以接收,接下来主机会一直发送八位数据然后等待从机回应去人接受,当主机觉得发送内容已完成会主动在时钟线为高电平期间产生一个上升沿信号给数据线表示通讯结束。以上为主机发送从机接收,接下来我们来看看从机发送主机接受的模式。

start

从机地址/方向

回应

数据1

回应

数据2

回应

……….

P停止位

与上面相似也是现有主机发出开始信号,然后发送从机地址和一位读信号,从机回应一位确认信号后,不同的地方开始了,接下来是从机控制时钟线向主机发送数据,然后主机接收到会有一位的回应信号,接下来就这样一直循环读取,直到主机觉得数据接收完成以后发送停止信号停止接收。

IIC的采样方式

IIC采用的是双边采样(为了检测START和STOP信号),当两个相邻的上升沿和下降沿采样数据发生变化,说明在SCL的高电平期间发生数据位变动,若是从1到0即表示START,从0到1即为STOP信号,其他的数据位在相邻的两个上升沿和下降沿相同表示在SCL高电平期间数据未发生变化,该数据即实际要传递的数据。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值