打印
[APM32F4]

F407 flash编程问题

[复制链接]
451|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aple0807|  楼主 | 2023-3-22 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
APM32F407对第2扇区执行擦写操作,首次通电写入数据,数据数量16KB。每次这4个地址数据都不对,下面是错误信息,存储一个二维数组,每组2字。
cvf enc err [url=home.php?mod=space&uid=72445]@[/url] [1536][0]:: REQ=80A86B9E :: ROM=C9077731
cvf enc err @ [1536][1]:: REQ=80A86B9E :: ROM=CCD61B08
cvf enc err @ [1537][0]:: REQ=0D00A6F0 :: ROM=9179A04B
cvf enc err @ [1537][1]:: REQ=0D00A6F0 :: ROM=8658FBA2
奇怪的是,这段程序执行后对写入数据进行读回校验都是对的。但程序运行过程中再次读取验证,这4字就一直是错误的。




代码如下:
void cvf_handle(void)
{
        int group;
        HAL_StatusTypeDef hal_st;
        cvf_check_alloc();
       
        // enc opt
        cvf_enc_rom_addr_make(0, 0);

        FLASH_Unlock(); // 解锁flash

        __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
        FLASH_Erase_Sector(FLASH_SECTOR_2, FLASH_VOLTAGE_RANGE_3);

        for (group = 0; group < CFV_CODE_LEN / 8; group++)
        {
                cvf_enc_gen(group);

                cvf_enc_rom_addr_make(group, 0);

                bsp_flash_write(cvf.addr + 0, cvf.out[0]);
                bsp_flash_write(cvf.addr + 4, cvf.out[1]);
        }

        cvf_free();

        FLASH_Lock();
}

int bsp_flash_write(uint32_t addr, uint32_t dat)
{
        int cnt = 3;
        int err = 1;

        if (dat != UINT32_MAX)
        {
                while ((inpw(addr) == UINT32_MAX) && (cnt--))
                {
                        __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
                        HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr, dat);

                        if (dat == inpw(addr))
                                err = 0;
                }
        }
        else
        {
                if (dat == inpw(addr))
                        err = 0;
        }

        return err;
}



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

328

帖子

2

粉丝