stm32专题十七:AT24C02

AT24C02的数据手册

1 硬件连接:直接是连接到I2C1的SCL SDA引脚(PB6 PB7)上,因此可以使用硬件I2C

2 存储容量描述

可以看到,AT24C02共有256个字节。跟Flash类似,EEPROM也分成不同的页。AT24C02共有32页,每页8个字节,共256字节。

支持400kHz的通讯速率(IIC快速模式)

3 引脚说明

4 设备描述

5 地址选择

6 写数据

字节写入

       字节写入操作,需要8位的数据字地址跟随在设备字地址和应答位之后。当EEPROM接收到这个地址后,会再次响应0(初次响应为设备地址)。然后计时第一个8位数据。在收到8位数据后,EEPROM会输出0,此时寻址设备(如单片机)必须以停止条件来终止写入序列。此时EEPROM进入内部定时写周期(tWR),写入到非易失性存储器。在这个写周期内,所有输入都被禁止,EEPROM将不会响应,知道写入完成。

页写入

 

注意,EEPROM在进行页写入时,会存在一个数据覆盖的问题。所以,在对EEPROM进行页写入时,要注意8字节对齐。就是地址为0 8 16 ...才是非常正确的数据,不然如果起点是一个页的中间,后面的数据其实会翻转到页的起始处

       数据字地址低三(1K / 2K)或四(4K,8K,16K)位在接收到每个数据字后在内部递增。 较高的数据字地址位不递增,保留存储器页行位置。 当内部生成的字地址到达页边界时,后面的字节放在同一页的开头。 如果将超过8个(1K / 2K)或16个(4K,8K,16K)数据字传输到EEPROM,则数据字地址将“翻转”,之前的数据将被覆盖。

       还有一个非常值得注意的,因为写入数据非常耗时(所以我们才需要RAM),每当我们写入数据时,都需要我们去等待EEPROM把数据写完。而stm32的通讯速度非常快,当我们希望向EEPROM中写入新数据时,可能EEPROM还在写之前的数据(没反应过来),这是不会响应外部的操作。这时可以通过向EEPROM发起询问,具体方式是产生一个起始地址,后面带着EEPROM的设备地址(读地址或写地址),如果EEPROM写入完成,则应答0

 

确认轮询:一旦内部定时写周期开始并且EEPROM输入被禁止,就可以启动应答轮询。 这涉及发送开始条件,然后发送设备地址字。 读/写位代表所需的操作。 只有内部写周期完成后,EEPROM才会响应“0”,允许读或写序列继续。

 

读数据操作

       读操作的启动方式与写操作相同,只是器件地址字中的读/写选择位设置为“1”。 有三种读操作:当前地址读取,随机地址读取和顺序读取。

1 当前地址读取(用的很少,因为你不知道这个内部地址寄存器保存的值是多少)

        当前地址读取:内部数据字地址计数器维护上次读取或写入操作期间访问的最后一个地址,增量为1。只要保持芯片电源,此地址在操作之间保持有效。读取期间的地址“翻转”是从最后一个内存页的最后一个字节到第一页的第一个字节。写入期间的地址“翻转”是从当前页的最后一个字节到同一页的第一个字节。

这个翻转操作其实就是,我用mcu读数据,每收到一个字节后,给EEPROM一个应答信号,然后EEPROM的内部数据字地址计数器就会+1,我们就能读取下一个字节的数据。当全部读完256个字节,EEPROM的内部数据字地址计数器就会变为0,然后重新计数,这样我们就是又从头开始读取。

2 随机读取(这个很常用)

       随机读取:随机读取需要“虚拟”字节写入序列以加载数据字地址(先写入设备地址,然后写入数据字地址,这个过程和写操作一样,成为虚拟字节写入序列)。 一旦器件地址字和数据字地址被EEPROM输入并确认,微控制器必须产生另一个启动条件。 微控制器现在通过发送读/写选择位为高的器件地址来启动当前地址读取(一旦EEPROM响应后,重新产生启动条件,在发送一次设备读地址(因为数据字地址寄存器已经保存了要操作的字节地址,所以这个过程和当前地址读取一样))。 EEPROM确认器件地址并串行输出数据字。 微控制器不响应“0”,但会产生一个跟随停止条件(参见第11页的图11)。

3 顺序读取

       顺序读取由当前地址读取或随机地址读取启动。 在微控制器接收到数据字后,它以确认响应。 只要EEPROM接收到确认,它将继续递增数据字地址并串行输出顺序数据字。 达到存储器地址限制时,数据字地址将“翻转”,顺序读取将继续。 当微控制器没有响应“0”但是确实产生跟随停止条件时,顺序读取操作终止。

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值