- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2)写操作 ① 字节写 主器件发出开始条件以后,再发送R/W=0的控制字 指示被寻址的从接收器的两个地址字及一个数据字将跟在第9个时钟周期产生的确认(应答)位之后。 主器件发送的下一个字节是字地址的高地址字节,应答后,接着是低地址字节,再次应答后,它们将被写入24LC32的地址指针。随后主器件发送写入到被寻址的存储器里的数据字节。24LC32应答后,主器件发出停止条件。 P ② 页面写 写控制字、字地址和第一个数据字节以与字节写相同的方式发送到24LC32。但是替代产生停止条件,主器件可发送多达8页的8个数据字节(总共64个字节)。 24LC32先将这些数据字节暂存在片内的页面高速缓存器中。 一旦接收到主器件的停止条件后,则内部的写周期开始,这些数据字节将从页面高速缓存器中写入E2PROM阵列。接收到每一个字节后,24LC32的低6位顺序地址指针在内部加1,高7位顺序地址指针保持不变。 ③ 应答登记 由于在写周期期间,器件将不会应答,所以,这一点可以用来决定周期在什么时候完成。 一旦针对写命令的停止条件由主器件发出,器件开始进行内部定时写周期,ACK登记被立即启动。如果写周期器件仍然很忙,则ACK信号将不会被恢复;如果周期已经完成,则器件将恢复ACK信号。主器件将可以进行下一次的读或写操作。 3)读操作 当控制字的R/W位被置为“1”时,启动读操作。 三种基本的读操作类型: 读当前地址内容 读随意地址内容 读顺序地址内容 ① 读当前地址内容 24LC32内部包含一个地址计数器,它保存被存取过的最后一个字的地址,并在片内自动加1。如果以前存取的地址为n,下一次读操作则从n+1地址中读数据。 主器件发送一个读控制字。 在接收到的从地址中的R/W为1的情况下,24LC32发送一个应答位,并且送出8位数据字。 主器件发出非应答信号(NO ACK),使从器件释放数据线,以便主器件发出一个停止条件,从而终止数据传送。 ② 读随意地址内容 这种方式允许主器件以任意方式读存储器任意地址的内容。 先置字地址,即主器件将字地址作为写操作的一部分送给24LC32。 发送字地址以后,主器件在应答位之后产生一个开始条件,以终止写操作。 主器件再次发R/W为1的读操作控制字。24LC32将发出应答位,并发送出8位数据字。 主器件将发送非应答信号,并产生一个停止条件,从而终止发送 ③ 读顺序地址内容 读顺序地址内容方式与读随意地址内容方式的启动方法一样,但是在24LC32发送第一个数据字节后,主器件不发出终止发送的信号。 24LC32继续发送下一个地址的8位数据,其内部的地址指针在操作后自动加1。地址指针允许在一次操作期间,连续顺序地读出整个存储器 当主器件接收到最后一个字节后,主器件将产生非应答信号及一个停止条件,终止传送 3、80C51与串行24LC32的接口和编程 ① 80C51与串行 24LC32的接口 A2,A1,A0接地 ∴地址000B A2,A1接地 A0接+5V ∴地址001B 最多接8片24LC32作为从器件 主器件 从器件 ② 模拟I2C总线的编程 模拟I2C总线时,一般需用两根I/O口线 本例中,P1.6用作SCL线,P1.7用作SDA线 以下子程序中,设定单片机所使用的晶体振荡器为6MHz,即机器周期为2μS。 若晶体振荡器不是6MHz,则可根据情况增减程序中的NOP指令即可。 定义以下模拟总线: SDA BIT P1.7 SCL BIT P1.6 数据传输规定 发送起始条件 数据传送,在SCL低电平期间,允许SDA状态改变; 发送停止条件 启动与停止I2C总线子程序 开始条件 —— SCL高电平期间,SDA由高到低表示启动I2C总线; 停止条件 —— SCL高电平期间,SDA由低到高表示停止I2C总线; 启动I2C总线子程序 在SCL高电平期间,发送一个低电平作为开始条件 SDA由高到低表示启动 STA: SETB SDA SETB SCL NOP NOP CLR SDA NOP NOP NOP CLR SCL NOP RET 停止I2C总线子程序 在SCL高电平期间,发送一个高电平作为停止条件 SDA由低到高表示停止 STOP:CLR SDA NOP SETB SCL NOP NOP SETB SDA NOP NOP ; CLR SCL NOP RET 发送与接收数据 待发送的数据在SCL低电平期间放到SDA上; 要接收的数据在SCL高电平期间,SDA稳定时,读入I/O口。 发送一个字节数据 将累加器ACC中的待
文档评论(0)