查看: 4585|回复: 11

[求助] 我对ke02的flash进行擦除问题,有个问题不解

[复制链接]

该用户从未签到

4

主题

17

帖子

0

注册会员

Rank: 2

积分
70
最后登录
2017-7-25
发表于 2015-11-27 10:48:12 | 显示全部楼层 |阅读模式
我对ke02的flash进行擦除,直接调用例程FLASH_EraseSector(16*512);擦除,他就从0x2000向下擦除,但是我没有指定擦除的区域啊,有点不解。为什么?问:不用指定查出区域吗?求专业解答

还有
  4 952 bytes of readonly  code memory
     48 bytes of readwrite code memory
    752 bytes of readonly  data memory (+ 16 absolute)
      8 bytes of readwrite data memory


分别占用FLASH和RAM多少啊?怎么看啊?
我知道答案 目前已有11人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2015-11-27 11:23:34 | 显示全部楼层
建议楼主还是先到FLASH_EraseSector函数定义的地方,看看具体是怎么样的
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-11-27 11:26:35 | 显示全部楼层
    帮顶一下
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-11-27 11:26:58 | 显示全部楼层
    增加下知识,以后也会遇到这种问题
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    17

    帖子

    0

    注册会员

    Rank: 2

    积分
    70
    最后登录
    2017-7-25
     楼主| 发表于 2015-11-27 12:04:41 | 显示全部楼层
    FSL_TICS_ZP 发表于 2015-11-27 11:23
    建议楼主还是先到FLASH_EraseSector函数定义的地方,看看具体是怎么样的

    就是这个函数啊,

    uint16_t FLASH_EraseSector(uint32_t u32NVMTargetAddress)
    {
            uint16_t u16Err = FLASH_ERR_SUCCESS;
           
            // Check address to see if it is aligned to 4 bytes
            // Global address [1:0] must be 00.
            if(u32NVMTargetAddress & 0x03)
            {
                    u16Err = FLASH_ERR_INVALID_PARAM;
                    return (u16Err);
            }
            // Clear error flags
            FTMRH->FSTAT = 0x30;
           
            // Write index to specify the command code to be loaded
            FTMRH->FCCOBIX = 0x0;
            // Write command code and memory address bits[23:16]       
            FTMRH->FCCOBHI = FLASH_CMD_ERASE_SECTOR;// EEPROM FLASH command
            FTMRH->FCCOBLO = u32NVMTargetAddress>>16;// memory address bits[23:16]
            // Write index to specify the lower byte memory address bits[15:0] to be loaded
            FTMRH->FCCOBIX = 0x1;
            // Write the lower byte memory address bits[15:0]
            FTMRH->FCCOBLO = u32NVMTargetAddress;
            FTMRH->FCCOBHI = u32NVMTargetAddress>>8;
           
            // Launch the command
            FLASH_LaunchCMD(TRUE);
           
            // Check error status
            if(FTMRH->FSTAT & FTMRH_FSTAT_ACCERR_MASK)
            {
                    u16Err |= FLASH_ERR_ACCESS;
            }
            if(FTMRH->FSTAT & FTMRH_FSTAT_FPVIOL_MASK)
            {
                    u16Err |= FLASH_ERR_PROTECTION;               
            }
            if(FTMRH->FSTAT & FTMRH_FSTAT_MGSTAT0_MASK)
            {
                    u16Err |= FLASH_ERR_MGSTAT0;               
            }
            if(FTMRH->FSTAT & FTMRH_FSTAT_MGSTAT1_MASK)
            {
                    u16Err |= FLASH_ERR_MGSTAT1;               
            }       
    #if defined(CPU_KE02)
            if(FTMRH->FERSTAT & (FTMRH_FERSTAT_SFDIF_MASK))
            {
                    u16Err |= EEPROM_ERR_SINGLE_BIT_FAULT;
            }
            if(FTMRH->FERSTAT & (FTMRH_FERSTAT_DFDIF_MASK))
            {
                    u16Err |= EEPROM_ERR_DOUBLE_BIT_FAULT;
            }
    #endif       
            return (u16Err);
    }

    主程序是这样写


        FLASH_Init(BUS_CLK_HZ);
       
        /* Erase 99th sector */
        FLASH_EraseSector(fstart*FLASH_SECTOR_SIZE);
        但是我没有指定擦除的区域啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-25 09:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    13

    主题

    430

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1385
    最后登录
    2018-6-13
    发表于 2015-11-27 12:38:17 | 显示全部楼层
    ke02不能擦除flash吧?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    569

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2117
    最后登录
    2018-2-1
    发表于 2015-11-27 13:01:20 | 显示全部楼层
    没用过,帮顶一下。 FreeLogo.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16710
    最后登录
    1970-1-1
    发表于 2015-11-27 13:10:20 | 显示全部楼层
    学习一下
    回复

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-11-27 13:48:18 | 显示全部楼层
    kankanni 发表于 2015-11-27 12:04
    就是这个函数啊,

    uint16_t FLASH_EraseSector(uint32_t u32NVMTargetAddress)

    你看看u32NVMTargetAddress这个变量的值
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    17

    帖子

    0

    注册会员

    Rank: 2

    积分
    70
    最后登录
    2017-7-25
     楼主| 发表于 2015-11-27 14:11:54 | 显示全部楼层
    FSL_TICS_ZP 发表于 2015-11-27 13:48
    你看看u32NVMTargetAddress这个变量的值

    就是一个基地址,和例程一样,是32*512
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-25 21:05 , Processed in 0.104691 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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