标题: 关于AT24C256如何获取内部寄存器地址 [打印本页]

作者: zhj1314    时间: 2020-4-15 21:16
标题: 关于AT24C256如何获取内部寄存器地址
如图片中写到,我的理解是通过这个方式获取的寄存器地址值只能是存储数据一次次累加,最后的数据地址。例如:本来空的,“栈指针”指向0x0000,我存入了一些数据,这时候指向了0xffaa,那么通过寄存器地址读取,读到的只能是这个地址往前的8bit数据。

怎么样才能读取其中任意一段数据?我的确可以在写的时候记住地址,下次直接读取这个地址的值,但是这样还要在下次我存数据读取上次数据的地址,然后接着这个地址写?



寄存器地址读取描述.png (69.16 KB, 下载次数: 134)

寄存器地址读取描述.png

AT24C256_I2C.pdf

410.66 KB, 下载次数: 28

数据手册供参考


作者: Y_G_G    时间: 2020-4-16 08:25
"获取内部寄存器地址"
这话什么意思?
AT24C256不管是读还是写,都是先写入一个地址,然后再决定读取还是写入,而这个地址是由自己定的,用得着获取什么吗?
作者: xxpp2011    时间: 2020-4-16 10:27
想存哪里就存哪里呀,AT24CXX不会给你自动分配地址的,读写都要自己指定1个地址,,AT24C256地址范围为0X0000~0X7FFF,每个地址可存1字节数据。
如果存在之前写过数据的地址,就会覆盖先前的数据。如果读之前没存过数据的地址,就会读出0XFF。
作者: zhj1314    时间: 2020-4-16 10:59
Y_G_G 发表于 2020-4-16 08:25
"获取内部寄存器地址"
这话什么意思?
AT24C256不管是读还是写,都是先写入一个地址,然后再决定读取还是写 ...

获取的是最后数据存入的地址,自己决定是覆盖之前的数据还是往后存储。
作者: zhj1314    时间: 2020-4-16 11:00
xxpp2011 发表于 2020-4-16 10:27
想存哪里就存哪里呀,AT24CXX不会给你自动分配地址的,读写都要自己指定1个地址,,AT24C256地址范围为0X00 ...

好的
作者: Y_G_G    时间: 2020-4-16 14:16
"获取的是最后数据存入的地址"
依然不知道你在说什么,这最后的地址不也是你自己指定的吗?用得着去"获取"吗?
不管你是连续写入多个地址还是单独写入一个地址,这最后的地址必然是你自己所指定的地址,肯定是达到了某个条件就停止写入了,那么,这个所谓你地址不就是你指定的吗?

作者: zhj1314    时间: 2020-4-16 20:09
Y_G_G 发表于 2020-4-16 14:16
"获取的是最后数据存入的地址"
依然不知道你在说什么,这最后的地址不也是你自己指定的吗?用得着去"获取"吗 ...

假如这块EEPROM曾经被你的同事写过重要数据,接受项目后你需要接着写数据。为了不覆盖之前的数据,你是让你的同事用脑子回忆起当时哪个地址区间有数据,还是通过CURRENT ADDRESS READ获取the last address accessed during the last read or write operation?
最后的地址当然是我指定的,理论上我可以指定地址区间内的任何地址。
作者: zhj1314    时间: 2020-4-16 20:23
Y_G_G 发表于 2020-4-16 14:16
"获取的是最后数据存入的地址"
依然不知道你在说什么,这最后的地址不也是你自己指定的吗?用得着去"获取"吗 ...

你说的有道理,数据写到哪里都是程序员控制的。但是CURRENT ADDRESS READ的意义在哪呢?
作者: xxpp2011    时间: 2020-4-16 22:53
zhj1314 发表于 2020-4-16 20:23
你说的有道理,数据写到哪里都是程序员控制的。但是CURRENT ADDRESS READ的意义在哪呢?

我用AT24C256做考勤记录存储时是用两个字节存地址标志的,比方说考勤记录从0X0000开始存,每条记录10字节,存完一条就将地址标志加10,放进存标志的地址,这样就可以掉电保存当前存储位置了,还可以由此计算出每条记录的每个字节存在哪个地址。上电后先从标志地址读出标志值,从该位置开始继续存考勤记录,避免覆盖先前的记录。
没有了解过CURRENT ADDRESS READ这个功能,不过如果有的话差不多也是这样用的吧。
作者: zhj1314    时间: 2020-4-17 09:04
xxpp2011 发表于 2020-4-16 22:53
我用AT24C256做考勤记录存储时是用两个字节存地址标志的,比方说考勤记录从0X0000开始存,每条记录10字节 ...

谢谢。懂了。
作者: Y_G_G    时间: 2020-4-17 11:44
zhj1314 发表于 2020-4-16 20:23
你说的有道理,数据写到哪里都是程序员控制的。但是CURRENT ADDRESS READ的意义在哪呢?

这个功能是在不断电的情况下,你可以不用通过地址就可以直接知道上一次读写的最后一个地址,这功能就和你理解的是一样的
但在实际中,基本就不用看这个功能
你接手一个项目,这24C256还得保持电源,如果断电了,这记录应该就是没有了吧,
英文不行,看不明白它是只保存读取还是写入
如果读取也会保存的话,你就有可能不知道上一次写入的地址是哪个了
9#已经给出了正确的用法,特别是在要累加记录又要保存之前记录,而且,设备会经常断电的情况的,地址的记录最好就是另外放一个地址在保存

作者: zhj1314    时间: 2020-4-17 15:04
Y_G_G 发表于 2020-4-17 11:44
这个功能是在不断电的情况下,你可以不用通过地址就可以直接知道上一次读写的最后一个地址,这功能就和你理 ...

是的,我也是后来才注意到。他读回的是上次操作的地址,包括读和写。这样的话意义不大了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1