基于IIC协议的EEPROM读写测试

目录

一.EEPROM简介

二.IIC协议

 2.1物理层

 2.2协议层

2.3IIC器件地址 

2.4IIC读写操作种类

2.5IIC读写时序

三.系统整体模块设计 

四.代码解读 

4.1  I2C_dri模块代码解读

4.2E2PROM_rw模块代码解读

 4.3result_led灯模块

五.Modelsim仿真

5.1写操作分析

 5.2读操作分析

六.板级验证


一.EEPROM简介

           PROM:只能写一次数据;

           ROM:只读不写;

           EPROM:可写可擦除,但是需要固定编辑器对其改写。

           EEPROM:(Electrically Erasable Programmable Read Only Memory)带电可擦可编程只读存储器。

           本实验中用到的启明星开发板中所带的EEPROM是ATMEL 公司生产的 AT24C 系列的 AT24C64 这一型号,AT24C64 具有高可靠性,可对所存数据保存 100 年,并可多次擦写,擦写次数达一百万次。AT24C64 采用两线串行接口的双向数据传输协议——I2C 协议实现读写操作。

二.IIC协议

 2.1物理层

       I2C 即 Inter-Integrated Circuit(集成电路总线),是一种简单、双向、二线制总线标准,多用于主机和从机在数据量不大且传输距离短的场合下的主从通信。I2C 总线由数据线 SDA(双向) 和时钟线 SCL 构成通信线路,如下图所示。I2C 器件一般采用开漏结构与总线相连。开漏结构指的是低电平时照常拉低,高电平时由上拉电阻拉至高电平。

    

         

 2.2协议层

     2.2.1整体时序协议

         SCL是时钟线,SDA是数据线。

        当未传输数据时,SCL和SDA均为高电平,因为会被上拉电阻拉至高电平。

        当传输数据时,当SCL中的CLK为高电平时,不允许SDA上的数据发生变化;当SCL中的CLK为低电平时,允许SDA上的数据发生变化。

2.2.2具体时序图 

         首先我们需要知道两点,第一:SCL,SDA未传输数据为高电平;第二:SCL为高电平的时候SDA数据不能发生变化,但是,两点除外,起始信号和停止信号。

        当起始信号(低电平)来临时,在1~8个时钟的低电平处改变传输数据进行发送,当第9个clk的高电平下,SDA为低电平时代表1~8个clk下传输的8bit数据是有效完成的,随后发送停止信号。

  

2.3IIC器件地址 

           器件地址相当于从器件的专属ID号(这里假设这里EEPROM中的A2,A1,A0全为0)如2.1中的图所示,当主器件(ZYNQ)发出在某个从器件(EEPROM、RTC)读/写指令时,会指定器件地址,比如主器件指定器件地址为1010000,发送到从器件上,而EEPROM将A2,A1,A0传给IIC,IIC整合成1010000,回传给主器件的器件地址也为1010000,则此时主从器件就连接成功,下一步主器件就可以在从器件上进行读写数据了。

         一句话,器件地址就是EEPROM的身份证,找到身份证就能指定这个人了 ,同理可以指定从器件。

                                                             EEPROM引脚图

2.4IIC读写操作种类

          连续写操作(页写):例如指定从第32页开始写,从第一行写到第32行结束,若此时还没来停止信号,则会重新回到第32页的第1行开始写,一直循环到停止信号来临。

          顺序读操作:例如EEPROM只有1000个地址,指定从第100个地址开始读,若停止信号没来,则继续读一直读到第1000行地址,然后返回第100行继续开始读。

2.5IIC读写时序

2.5.1单次写时序

         起始信号:当SCL为高时,SDA来低电平,代表主机发送起始信号;

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值