野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19289|回复: 17

STM32库开发实战指南中I2C接口,对AT24C02(EEPROM)进行读写

[复制链接]
发表于 2014-3-26 08:51:43 | 显示全部楼层 |阅读模式
对AT24C02(EEPROM)进行读写时,对程序有点疑问。
1、AT24C02的每一页(共32页)的地址怎么确定?(器件的地址可以理解呢)。
2、I2C_EE_BufferWrite(),这个函数中根据WriteAddr的不同进行读写。程序中给出的实参EEP_Firstpage是0x00,
如果是0x01的话,第一页只写入7个字节(每页8字节)吗?依次类推0x02的话第一页只写入6个字节?

回复

使用道具 举报

发表于 2014-3-26 09:01:44 | 显示全部楼层
1.datasheet有规定每页的大小,要写到哪一页的哪个地方就可以计算出来了
2.就是按你这样理解
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-26 09:06:42 | 显示全部楼层
危隽洁 发表于 2014-3-26 09:01
1.datasheet有规定每页的大小,要写到哪一页的哪个地方就可以计算出来了
2.就是按你这样理解

EEPROM第一页的地址即第一页首个字节的地址必须是0x00吗?这个不能改吗?
回复 支持 反对

使用道具 举报

发表于 2014-3-26 09:12:13 | 显示全部楼层
hxfxt 发表于 2014-3-26 09:06
EEPROM第一页的地址即第一页首个字节的地址必须是0x00吗?这个不能改吗?

没有限定,是可以随机从某个地址开始写的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-26 09:17:28 | 显示全部楼层
郑倚云 发表于 2014-3-26 09:12
没有限定,是可以随机从某个地址开始写的

这个我知道呢,可以随便写到某一页某一字节。我想说的是它第一页的地址是否固定呢?
回复 支持 反对

使用道具 举报

发表于 2014-3-26 09:18:33 | 显示全部楼层
hxfxt 发表于 2014-3-26 09:17
这个我知道呢,可以随便写到某一页某一字节。我想说的是它第一页的地址是否固定呢?

首地址是固定
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-26 09:20:50 | 显示全部楼层
三流电工 发表于 2014-3-26 09:18
首地址是固定

即0x00吗?然后根据想写入位置的不同再确定相应的写入地址对吧?比如第二页首地址就是0x08对吧?
回复 支持 反对

使用道具 举报

发表于 2014-3-26 09:29:33 | 显示全部楼层
hxfxt 发表于 2014-3-26 09:20
即0x00吗?然后根据想写入位置的不同再确定相应的写入地址对吧?比如第二页首地址就是0x08对吧?

芯片首地址是固定的,之于第二页的首地址要根据芯片实际决定
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-26 09:43:09 | 显示全部楼层
三流电工 发表于 2014-3-26 09:29
芯片首地址是固定的,之于第二页的首地址要根据芯片实际决定

AT24C02,这个芯片呢.datesheet中貌似没有写首地址吧?按照下面写的:

AT24C02, 2K SERIAL EEPROM: Internally organized with 32 pages of 8 bytes each,
the 2K requires an 8-bit data word address for random word addressing.
回复 支持 反对

使用道具 举报

发表于 2014-3-26 10:01:26 | 显示全部楼层
hxfxt 发表于 2014-3-26 09:43
AT24C02,这个芯片呢.datesheet中貌似没有写首地址吧?按照下面写的:

AT24C02, 2K SERIAL EEPROM: In ...

芯片首页的首地址自然是整个芯片的首地址0x00,至于你想从什么地方开始写就随便你了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-26 10:08:20 | 显示全部楼层
郑倚云 发表于 2014-3-26 10:01
芯片首页的首地址自然是整个芯片的首地址0x00,至于你想从什么地方开始写就随便你了


A2、A1、A0的接法不同每页地址是不是也不同呢?书上的例子是全接地呢.....
11111.png
回复 支持 反对

使用道具 举报

发表于 2014-3-26 10:56:58 | 显示全部楼层
hxfxt 发表于 2014-3-26 10:08
A2、A1、A0的接法不同每页地址是不是也不同呢?书上的例子是全接地呢.....

楼主没有区分好设备地址和存储地址
设备地址是每一个IIC设备都有的独立ID(在这里1010加上A0 A1 A2就是这个EEPROM的设备地址)
存储地址是这个设备内部寄存器的地址(这里是EEPROM的存储空间地址)
回复 支持 反对

使用道具 举报

发表于 2014-3-26 11:20:20 | 显示全部楼层
hxfxt 发表于 2014-3-26 10:08
A2、A1、A0的接法不同每页地址是不是也不同呢?书上的例子是全接地呢.....

如12楼所说的,这是设备地址,是用来区分同一总线上的不同设备.不会应响储存地址
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-26 14:00:08 | 显示全部楼层
flyleaf 发表于 2014-3-26 10:56
楼主没有区分好设备地址和存储地址
设备地址是每一个IIC设备都有的独立ID(在这里1010加上A0 A1 A2就是这 ...

这个我知道呢。。。可能我陈述问题不清楚呢。我是想问这两者之间有什么联系吗?因为书中A2/A1/A0都接地呢...存储地址都是从00开始吗?然后如果你想要写到不同的页不同的字节 是由它的存储空间大小,和每页的大小决定的对吧? 谢谢呢.....其实这是我疑惑的呢....
回复 支持 反对

使用道具 举报

发表于 2014-3-26 14:07:32 | 显示全部楼层
hxfxt 发表于 2014-3-26 14:00
这个我知道呢。。。可能我陈述问题不清楚呢。我是想问这两者之间有什么联系吗?因为书中A2/A1/A0都接地呢 ...

独立的,没有关系
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-26 14:17:45 | 显示全部楼层
flyleaf 发表于 2014-3-26 14:07
独立的,没有关系

好的,谢谢呢........
回复 支持 反对

使用道具 举报

发表于 2014-3-26 14:23:02 | 显示全部楼层
hxfxt 发表于 2014-3-26 14:17
好的,谢谢呢........

每种型号的EEPROM都有自己相应的页大小的,datasheet有说明,这个是设备本身的属性,也跟地址没关
回复 支持 反对

使用道具 举报

发表于 2015-8-18 22:34:50 | 显示全部楼层
对于EEPROM  我也有些问题   请问一下各位大神     就是要是我写入的地址是第二页的的5个数据开始,但是我一次性发送7个字节    结果会怎样?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-22 18:21 , Processed in 0.059803 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表