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

每次写入一个字节时,实际上是在写入一页数据。因此,你需要确保在写入之前,先将该页的其他数据读取出来,然后与新数据合并,再写入整个页

suiziq 发表于 2025-1-24 17:02

数据读取通常是可以跨页读取的。你可以从任意地址开始读取任意长度的数据,而不受页大小的限制。读取操作不会像写入操作那样受到页边界的限制

ewyu 发表于 2025-1-24 18:25

为了确保数据写入和读取的正确性,推荐使用CRC校验,使用循环冗余校验(CRC)算法对写入和读取的数据进行校验。CRC是一种常用的错误检测码,能够有效地检测数据传输或存储过程中的错误

地瓜patch 发表于 2025-1-24 19:44

按页的话还是flash,eep是字节访问最小单元

地瓜patch 发表于 2025-1-24 19:48

nuan11nuan 发表于 2025-1-24 12:19
EEPROM通常是按页写入的,这意味着你一次至少需要写入一页的内容。跨页写入通常是不支持的,因为EEPROM的物 ...

按页写入就不是eeprom啊

miltk 发表于 2025-1-24 20:11

计算数据的校验和,并在写入时将校验和一并存储。读取时重新计算校验和并与存储的校验和进行比较,以确保数据的完整性

hhdhy 发表于 2025-1-25 10:05

如果芯片支持,可以使用ECC来检测和纠正数据中的错误。

wamed 发表于 2025-1-25 11:23

在使用时,你可以在写入数据前计算CRC,并将CRC值一并写入EEPROM。读取数据时,重新计算CRC并与存储的CRC值进行比较,以确保数据的正确性

tiakon 发表于 2025-1-25 14:09

读数据也不可以夸页读取的,一般是不支持

AdaMaYun 发表于 2025-1-26 10:29

TLE9877芯片的Flash内的EEPROM空间完成数据读写功能

为你转身 发表于 2025-2-28 15:08

在TLE9877的EEPROM编程中,写操作是按页进行的。如果你只想写入一个字节,理论上不能直接写单个字节,而是需要先读取整个页的数据,修改目标字节的内容,然后重新写入整页。

梵蒂冈是神uy 发表于 2025-2-28 19:17

如果你希望通过编程来修改EEPROM中的一个字节,必须先读取该页的数据,修改相应的字节,然后再将整页的数据重新写入。

xdvca 发表于 2025-4-29 11:45

不能跨页进行单独写入,如果你需要在两个不同的页地址上写入数据,你必须分两次写入,分别操作两个页。
页: [1]
查看完整版本: TLE9877使用EEPROM完成数据读写