- 打卡等级:初来乍到
- 打卡总天数:7
- 最近打卡:2024-07-14 13:13:18
注册会员
- 积分
- 128
|
因为工作原因 {:5_270:}接手了表兄弟的公司技术 也因此入坑stc单片机
面对这大容量的eeprom空间 不由得心动 想要去掉之前的铁电存储器的方案
想要在eeprom中实现函数功能 调试了一个晚上失败了 来论坛求助
<1>512K一个扇区 地址从0x0000开始 1K16高达12K的空间
<2>扇区整页删除 也就意味着要把之前写入的数据重新读取出来
<3>看下结构体定义 我们就需要判断当前扇区的数据是否有效 每个结构体数据都用
uint8_t bcc_verify(uint8_t *buf,uint8_t len);校验 作为结构体成员的checksum 保障数据的准确性
<4>每次写完当前的扇区 判断剩余仅有的字节空间是否满足结构体的大小需求 不行就要增加0x2000字节的地址
#define SECTOR_SIZE 512
#define NUM_SECTORS 128
extern uint8_t IapReadByte(uint16_t);
extern void IapProgramByte(uint16_t, uint8_t);
extern void IapEraseSector(uint16_t);
extern void IapProgramBuffer(uint16_t addr, uint8_t* buff, uint16_t length);
extern void IapReadBuffer(uint16_t addr, uint8_t* buff, uint16_t length);
大家在使用stc单片机的时候如何布局这种大批量数据写入eeprom中的
还望论坛大佬们不吝赐教 {:5_270:}
|
-
需要存放的数据结构体
-
校验函数
|