查看: 3445|回复: 6

[已解决] KE02的EEPROM读写问题

[复制链接]
  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
    发表于 2018-5-8 11:31:31 | 显示全部楼层 |阅读模式
    本帖最后由 烟雨梦 于 2018-5-8 12:57 编辑

    需要存储20个字节,先擦除然后写,在读取出来验证,但是读出来的数据全是0XFF,程序也参考了
    “kexx_drv_lib\src\projects\KE02\EEPROM_demo”,帮忙看下哪里有问题,代码如下:


            #define EEPROM_ADDR_START         0x10000000
            uint8_t fact_data[20];

            
            void EEPROM_INIT(void)
            {
                    uint8_t  temp[20];
                    uint8_t  i;
                    FLASH_Init(BUS_CLK_HZ);
            
                    DisableInterrupts;
                    temp[0] = *((uint8_t *)(EEPROM_ADDR_START));
                    if(temp[0]!=0xAB)
                    {
                            for(i=0;i<5;i++)
                            {
                                    EEPROM_EraseSector(i*2 + EEPROM_ADDR_START);
                            }

                            temp[0]=0xAB;
                        for(i=1;i<20;i++)
                        {
                            temp【i】 = 0x55;
                        }

                            EEPROM_Program(EEPROM_ADDR_START,&temp[0],20);
                    }

                            for(i=0;i<20;i++)
                        {
                            fact_data
    【i】= *((uint8_t *)(EEPROM_ADDR_START+i));
                        }
                     EnableInterrupts;
            }






    最佳答案

    本帖最后由 原来的你 于 2018-5-8 12:53 编辑 烟雨梦 发表于 2018-5-8 12:33 初始化了,并且在操作EEPROM前DisableInterrupts 代码修改如下:fact_data【i】= *((uint8_t *)(EEPROM_ADDR_START+i));即可 ...
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4899

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6321
    最后登录
    2025-7-15
    发表于 2018-5-8 11:51:00 | 显示全部楼层
    flash初始化了没,先初始化,加上FLASH_Init(BUS_CLK_HZ);
    开心
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
     楼主| 发表于 2018-5-8 12:33:44 | 显示全部楼层
    原来的你 发表于 2018-5-8 11:51
    flash初始化了没,先初始化,加上FLASH_Init(BUS_CLK_HZ);

    初始化了,并且在操作EEPROM前DisableInterrupts
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4899

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6321
    最后登录
    2025-7-15
    发表于 2018-5-8 12:50:30 | 显示全部楼层
    本帖最后由 原来的你 于 2018-5-8 12:53 编辑
    烟雨梦 发表于 2018-5-8 12:33
    初始化了,并且在操作EEPROM前DisableInterrupts

    代码修改如下:fact_data【i】= *((uint8_t *)(EEPROM_ADDR_START+i));即可
    开心
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
     楼主| 发表于 2018-5-8 12:56:40 | 显示全部楼层
    本帖最后由 烟雨梦 于 2018-5-8 12:58 编辑
    原来的你 发表于 2018-5-8 12:50
    代码修改如下:fact_data【i】= *((uint8_t *)(EEPROM_ADDR_START+i));即可

    我工程里是对的写的fact_data【i】,包括
    for(i=1;i<20;i++)   
    {
        temp = 0x55;
    }贴到论坛上括号就不见了,刚试了下不通过复制黏贴,在帖子上修改括号就可以
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-5-27 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    21

    主题

    75

    帖子

    1

    中级会员

    Rank: 3Rank: 3

    积分
    298
    最后登录
    2025-7-3
     楼主| 发表于 2018-5-8 13:00:32 | 显示全部楼层
    原来的你 发表于 2018-5-8 12:50
    代码修改如下:fact_data【i】= *((uint8_t *)(EEPROM_ADDR_START+i));即可

    EEPROM_EraseSector这个函数,每次是擦除2个字节数据还是4个?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4899

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6321
    最后登录
    2025-7-15
    发表于 2018-5-8 13:47:28 | 显示全部楼层
    烟雨梦 发表于 2018-5-8 13:00
    EEPROM_EraseSector这个函数,每次是擦除2个字节数据还是4个?

    两个字节

    评分

    参与人数 1 +2 收起 理由
    doatello + 2

    查看全部评分

    开心
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 00:26 , Processed in 0.102406 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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