从入门到放弃->STC8H1K16的12Keeprom函数操作
因为工作原因 {: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:}
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);
这些函数已经实现是问题的函数 和 思路没有实现 调试了一个晚上 没有仿真器 只能打印 没调试通过{:4_164:}{:4_164:} 没明白想表达什么功能有问题 eeprom本来读写就慢其他任务要等待 按照例程写就没问题
页:
[1]