- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
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温度传感器读取
温度传感
文档评论(0)