EEPROM I2C操作说明讲义.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
I2C协议 ?? ?? 2条双向串行线,一条数据线SDA,一条时钟线SCL。 ?? SDA传输数据是大端传输,每次传输8bit,即一字节。 ?? 支持多主控(multimastering),任何时间点只能有一个主控。 ?? 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. ?? 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。 1.1 I2C位传输 ?? 数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit; ???????????? 若SDA发生跳变,则用来表示一个会话的开始或结束(后面讲) ?? 数据改变:SCL为低电平时,SDA线才能改变传输的bit 1.2 I2C开始和结束信号 ??? ?? 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 ?? 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 ?? 1.3 I2C应答信号 ??? ?? Master每发送完8bit数据后等待Slave的ACK。 ?? 即在第9个clock,若从IC发ACK,SDA会被拉低。 ?? 若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程,如下所示: 1.4 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.5 I2C读流程 读寄存器的标准流程为: 1.??? Master发送I2C addr(7bit)和w操作1(1bit),等待ACK 2.??? Slave发送ACK 3.??? Master发送reg addr(8bit),等待ACK 4.??? Slave发送ACK 5.??? Master发起START 6.??? Master发送I2C addr(7bit)和r操作1(1bit),等待ACK 7.??? Slave发送ACK 8.??? Slave发送data(8bit),即寄存器里的值 9.??? Master发送ACK 10.??? 第8步和第9步可以重复多次,即顺序读多个寄存器 读一个寄存器 读多个寄存器 1.前言 ? ? 对于大多数工程师而言,I2C永远是一个头疼的问题。相比UART和SPI而言,I2C的时序要复杂一些,I2C组合变化也丰富一些。在这里以AT24C04为例说明I2C使用过程中的一些注意点。 2.AT24C04操作示意图 图 AT24C04操作示意图 示意图说明:示意图分阐述了4种不同的操作方式,例如写单个存储单元,写多个存储单元,读单个存储单元和写单个存储单元。对于单个操作而言,上部为MCU通过I2C输出的相关指令,下部为I2C设备的响应。例如写单个存储单元操作时,MCU发出I2C启动,设备地址,写标志位等,而I2C设备输出多个ACK。 3.若干说明 3.1 基本操作方式 I2C设备的操作可分为写单个存储字节,写多个存储字节,读单个存储字节和读多个存储字节。相对于AT24C04而言,这些读写动作相对于内部的存储单元而言,对于其他的具备I2C接口的AD或传感器而言,存储单元变成了寄存器单元。虽然存在概念上的差别,但是其操作原理确实一样的。 3.2 无应答 在以上4种情况中,无应答为MCU发出,无应答意为MCU不需要从机输出数据,MCU将会停止本次I2C操作。需要说明的是,无应答并不是一种异常情况。 3.3 I2C设备并不只有一个设备地址 这一点往往被忽略,一般情况下认为在I2C启动信号之后的字节为I2C从机地址(7位)。对于AT24C04而言,内部具有4Kb存储位,合计512字节。若需要访问512字节内容,总共需要9根地址线(8位宽度),那么上图中的存储地址(8位长度)显然还差了一位,那么就需要从设备地址中“借”1位,这就使得AT24C04具有两个I2C地址,例如0x50和0x51。 3.4 存储地址 相对于AT24C04而言,存储地址占1个字节。若换成其他I2C设备,例如ADXL345,存储地址被寄存器地址替代即可,其他操作方式相似。但是像AT24C32或AT24C64这样的大容量EEPR

文档评论(0)

441113422 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档