基本信息
文件名称:I2C总线协议学习笔记.docx
文件大小:38.75 KB
总页数:8 页
更新时间:2025-03-25
总字数:约2.59千字
文档摘要

I2C总线协议学习笔记

?一、引言

I2C(Inter-IntegratedCircuit)总线是一种由飞利浦公司开发的两线式串行总线,用于连接微控制器及其外围设备。它具有简单、高效、可靠等优点,被广泛应用于各种电子设备中。学习I2C总线协议对于深入理解和开发嵌入式系统具有重要意义。

二、I2C总线概述

2.1总线结构

I2C总线由数据线(SDA)和时钟线(SCL)两条线组成。多个I2C设备连接到这两条总线上,通过这两条线进行数据传输和通信同步。

2.2设备角色

-主设备(Master):发起通信的设备,负责产生时钟信号,并控制数据的传输方向。

-从设备(Slave):响应主设备请求的设备,具有唯一的地址。

2.3通信方式

I2C总线采用半双工通信方式,即同一时刻只能进行单向数据传输。主设备可以向从设备发送数据(写操作),也可以从从设备接收数据(读操作)。

三、I2C总线电气特性

3.1逻辑电平

-高电平:VDD-0.3V到VDD。

-低电平:0V到0.3V。

3.2上拉电阻

为了保证总线在空闲时处于高电平状态,通常需要在SDA和SCL线上连接上拉电阻。上拉电阻的大小一般在几千欧姆到几十千欧姆之间。

3.3最大总线速度

I2C总线的速度受到多种因素的限制,常见的标准模式速度为100kHz,快速模式速度可达400kHz,高速模式速度可达到3.4MHz。

四、I2C总线通信协议

4.1起始条件(StartCondition)

主设备在SCL为高电平时,将SDA线从高电平拉到低电平,产生一个起始条件,表示通信开始。

4.2停止条件(StopCondition)

主设备在SCL为高电平时,将SDA线从低电平拉到高电平,产生一个停止条件,表示通信结束。

4.3数据传输

-字节传输:每个字节由8位组成,在SCL的低电平期间,主设备将数据位发送到SDA线上,从设备在SCL的高电平期间读取数据位。

-应答信号(ACK):每传输一个字节后,从设备需要返回一个应答信号。主设备在第9个时钟周期释放SDA线,从设备拉低SDA线表示应答,拉高SDA线表示非应答。

4.4地址传输

-7位从设备地址:用于标识总线上的不同从设备,前7位为地址位,第8位为读写位(0表示写操作,1表示读操作)。

-10位从设备地址:在一些扩展模式下,使用10位从设备地址,前2位固定为11,后8位为设备地址。

五、I2C总线通信过程

5.1写操作

1.主设备发送起始条件。

2.主设备发送从设备地址(写)。

3.从设备应答。

4.主设备发送数据字节。

5.从设备应答。

6.重复步骤4和5,直到所有数据发送完毕。

7.主设备发送停止条件。

5.2读操作

1.主设备发送起始条件。

2.主设备发送从设备地址(读)。

3.从设备应答。

4.主设备接收数据字节。

5.主设备发送应答信号。

6.重复步骤4和5,直到所有数据接收完毕。

7.主设备发送非应答信号(最后一个字节)。

8.主设备发送停止条件。

六、I2C总线仲裁与同步

6.1仲裁

当多个主设备同时尝试控制总线时,通过仲裁机制来决定哪个主设备获得总线控制权。仲裁基于SDA和SCL线上的电平进行,哪个主设备发送的电平与总线电平不一致,就会放弃总线控制权。

6.2同步

I2C总线通过时钟信号(SCL)进行通信同步。主设备产生时钟信号,从设备根据时钟信号进行数据的接收和发送。在数据传输过程中,主设备和从设备需要保持时钟同步,以确保数据的正确传输。

七、I2C总线的应用实例

7.1EEPROM读写

EEPROM(ElectricallyErasableProgrammableRead-OnlyMemory)是一种常用的非易失性存储芯片,通过I2C总线可以方便地进行数据的读写操作。

1.初始化I2C总线:设置总线速度、引脚配置等。

2.发送写命令:向EEPROM发送写命令,指定要写入的地址。

3.发送数据:将数据字节依次发送到EEPROM。

4.等待写入完成:EEPROM写入数据需要一定时间,等待写入完成标志。

5.发送读命令:向EEPROM发送读命令,指定要读取的地址。

6.读取数据:从EEPROM读取数据字节。

7.2温度传感器读取

温度传感