zh123zh 发表于 2024-12-6 11:22

TLE9877使用EEPROM完成数据读写

本帖最后由 zh123zh 于 2024-12-6 13:09 编辑

我目前在使用TLE9877芯片的Flash内的EEPROM空间完成数据读写功能,地址范围为0x1100F000~0X1100FFFF,共4k占据一个扇区。
遇到的问题是:
1、EEPROM只能是按页写入,是一次至少写入一页的内容吗?能不能跨页写入呢?
2、设计了一次单独写入一个字节的函数,但是内部还是通过数据的方式调用ProgramPage()函数写入一页的内容,而且如果不从一页的起始地址开始写入,那么起始地址开始自动填充0xFF直到该页写入数据的地址,那么是必须要从首地址开始写入数据吗?
3、单字节写入设计,而不是向新地址写入时都将数组的数据全部写入。
4、数据读取也是一次只能读取一页的数据吗?能不能跨页读取呢?
5、有没有推荐的数据写入读取的校验函数设计呢?

suncat0504 发表于 2024-12-10 21:59

好像一次不能跨页读写,这个应该是内部构造决定的。我记得应该可以按照单元写的。如果一次性写入的数据很少的话,不妨按照单元方式写。

suncat0504 发表于 2024-12-10 22:00

即使是U盘这样的介质,也有固定单元大小,比如512字节。如果不足,一样会有浪费。

nuan11nuan 发表于 2025-1-24 12:19

EEPROM通常是按页写入的,这意味着你一次至少需要写入一页的内容。跨页写入通常是不支持的,因为EEPROM的物理结构决定了它必须以页为单位进行写入操作。如果你尝试跨页写入,可能会导致数据损坏或写入失败。

清芯芯清 发表于 2025-1-24 13:22

你提到的单字节写入函数内部调用ProgramPage()函数写入一页的内容,这是正确的。EEPROM的写入机制要求你从页的起始地址开始写入数据。如果你不从页的起始地址开始写入,那么从起始地址到你实际写入数据的地址之间的部分会自动填充为0xFF。

twinkhahale 发表于 2025-1-24 14:29

为了确保数据的正确性和完整性,建议你从页的起始地址开始写入数据。

pe66ak 发表于 2025-1-24 15:47

每次写入一个字节时,实际上是在写入一页数据。因此,你需要确保在写入之前,先将该页的其他数据读取出来,然后与新数据合并,再写入整个页
页: [1]
查看完整版本: TLE9877使用EEPROM完成数据读写