找回密码
 立即注册
查看: 120|回复: 2

从入门到放弃->STC8H1K16的12Keeprom函数操作

[复制链接]
  • TA的每日心情
    无聊
    2024-3-22 00:13
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    4

    主题

    13

    回帖

    72

    积分

    注册会员

    积分
    72
    发表于 2024-3-16 22:50:54 | 显示全部楼层 |阅读模式
    因为工作原因 接手了表兄弟的公司技术 也因此入坑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中的
    还望论坛大佬们不吝赐教  

    需要存放的数据结构体

    需要存放的数据结构体

    校验函数

    校验函数
    回复 送花

    使用道具 举报

  • TA的每日心情
    无聊
    2024-3-22 00:13
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    4

    主题

    13

    回帖

    72

    积分

    注册会员

    积分
    72
     楼主| 发表于 2024-3-16 22:56:49 | 显示全部楼层
    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);
    这些函数已经实现  是问题的函数 和 思路没有实现 调试了一个晚上 没有仿真器 只能打印 没调试通过
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 08:22
  • 签到天数: 109 天

    [LV.6]常住居民II

    9

    主题

    90

    回帖

    534

    积分

    高级会员

    积分
    534
    发表于 2024-3-20 19:20:19 | 显示全部楼层
    没明白想表达什么功能有问题    eeprom本来读写就慢  其他任务要等待     按照例程写就没问题   
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-30 03:34 , Processed in 0.069630 second(s), 39 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表