新手入门
- 积分
- 4
- 金钱
- 4
- 注册时间
- 2021-7-23
- 在线时间
- 3 小时
|
6金钱
本人使用的是原子哥的mini板,学习的例程是基于AT24C02的。
AT24C02是比较简单,能存储256个字节Byte,2K-bit.内部存储矩阵也就是8位数据线,和8位地址线。
而之后的AT24C04,08,16内部存储矩阵依次增加一位的地址线,写入的地址依次也变为9-bits,10-bits,11-bits.
所以我有几个问题:1、是否可以对这几款EEPROM的内部地址进行编码,例如AT24C02(地址从,0~11111111B、00~ffH),AT24C04(00~200H、0~1 1111 1111B),AT24C08(00~400H、0~11 1111 1111B),AT24C16(00~800H、0~1111 1111 111B)
例如把每页(page)首地址进行宏定义。在写入数据的时候按页操作,当然这种写的方式仍然是字节(BYTE)写方式?即page1已首地址00h,连续写入8个或者16个字节。
即:用于(AT24C01\AT24C02)
#define page1 0x00 // 00H 0000 0000B
#define page2 0x10 // 10H 0001 0000B
#define page3 0x20 // 20H 0002 0000B
#define page4 0x30 // 30H 0003 0000B
另外数据手册中提到:AT24C02在IIC总线上能挂在8个器件,地址由A0A1A2确定。而04、08、16依次是4个2个和1个。并且01、02每页(page)是8个字节(byte),而04、08、16是每页(page)16字节(byte)。
AT24C02是32页(page)AT24C04、08、16依次是32、64、128页(page)。对于AT24C16来讲引脚A0、A1、A2,这3个引脚到底有什么作用?
本人在网上搜索过一些关于AT24C16的文章,其中百度文库有一份8页写满的程序。其大概意思,是A0、A1、A2用于确定8页中的那一页。每页可写256字节也就是相当8个AT24C02虽然内存大小上是一样,但是内存结构上也允许这样去操作???AT24C16不是128页?这个页不等于page!
但是数据手册上明明写到是128页?是他错了,还是我理解错了!
我个人更偏向理解成这样:这三个引脚(A0、A1、A2、)是作为数据地址的高三位写入的,也就是7位器件地址(高4位固定+3位可编程)+读写位(1010+A0、A1、A2+1位读写),变成了4位固定地址+3位可编程数据地址+读写位(1010+P0P1P2+读写位),在使用中再加上低8位地址共同组成11位地址。不知道这样理解是否正确。
希望能得到各位前辈的指点!
|
最佳答案
查看完整内容[请看2#楼]
至于那3个地址线,确实是用作内部地址寻址了。24C02,3根都可以用来表示ID。 04就只有2根。 08就只有一根。 16来说,三根都用作表示地址了。所以,A0~A3引脚就是废了....
|