查看: 1928|回复: 2

LPC5500系列flash擦写注意事项

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3301

    主题

    6548

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32040
    最后登录
    2024-4-28
    发表于 2020-8-13 09:17:05 | 显示全部楼层 |阅读模式
    LPC5500系列flash擦写注意事项

           这篇文章为大家介绍LPC5500系列MCU擦写内部Flash时的一些注意事项。
    LPC5500系列是NXP推出的基于Arm® Cortex® -M33的全新系列MCU。它的片内Flash与以往老的LPC MCU有较大区别,主要是集成了ECC功能。另外ROM API也较之前的LPC MCU有了很大变化。这篇文章注重介绍一些新手擦写LPC5500系列内部Flash时候容易出现的问题。


    页和扇区大小


    以下两点是基本事实:
    所有LPC5500系列的Flash扇区(Sector)大小为32KB(可一次擦除32KB)。
    所有LPC5500系列的Flash页(Page)大小为512字节(一次擦除/编程的最小单位)。

    PFR区域


    LPC5500系列使用内部Flash最后几页作为PFR(受保护Flash区域)。这片区域存储着一些非常重要的信息(比如芯片的默认配置,与加解密有关的秘钥Key等)。


    这片区域不能被当做普通Flash来用,更不能被随意擦除、改写。
    PFR区域定义如下(注意,不同型号版本,PFR区域的位置和大小都是不一样的):
    1.png
    由上图可以看出:


    1.LPC55S6x/LPC55S2x的PFR区域占用10KB,位于0x0009_D800 ~ 0x0009_FFFF
    2.LPC55S1x的PFR区域占用12KB,位于0x0003_D000 ~ 0x0003_FFFF


    从这里还可以看出如下事实:
    1.对于LPC55S6x/LPC55S2x 256KB/512KB的产品:可用的Flash总大小为256/512KB
    2.对于LPC55S6x/LPC55S2x 640KB的产品:可用的Flash总大小为630KB
    3.对于LPC55S1x  64KB/128KB的产品:可用的Flash总大小为 64/128KB
    4.对于LPC55S1x 256KB的产品,可用的Flash总大小为244KB

    编程Flash


    LPC5500系列的内部Flash集成了ECC管理功能,包含单比特错误校验和记录功能。


    但是这个特点会造成一个问题,就是如果用AHB读方式(比如memcpy)去访问一块被擦除的空Flash, 会造成HardFault。见UM原文:

    所以, 在读取Flash内容的时候建议先调用ROM API: Flash_VerifyErase 先确定这个Page是否是全擦除状态,如果是全擦除状态,则数据全部为0xFF,如果不是全擦除状态,则正常AHB读取Flash内容即可。


    另外,LPC5500系列要求擦写Flash的时候主频必须<= 100Mhz,而且使用ROM API Flash_Program和Flash_Erase的时候,要求填进去的起始地址和长度必须是Page对齐。这两点需要格外注意。
    2.png
    总结


    1.擦写Flash时,必须保证主频一定要<=100Mhz,否则会造成擦写flash失败
    2.注意不要误删除PFR区域:尤其是不要调用SectorErase(擦除扇区32KB)直接去擦除最后一个Flash扇区。一旦调用,最后32KB被擦掉,PFR被破坏,MCU变砖。
    3.建议使用ROM API去操作flash,这样可以确保不会误擦除PFR,不建议直接使用FLASH控制器的寄存器去擦写Flash。
    4.注意对齐问题:ROM API的Flash_Program和Flash_Erase函数的起始地址和长度都必须Page(512B)对齐

    5.SDK中的例程:\boards\lpcxpresso55s28\driver_examples\flashiap 提供了非常好的Flash编程范例, 强烈建议参考。




    文章出处:恩智浦MCU加油站

    签到签到
    回复

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    8
    最后登录
    2023-5-11
    发表于 2023-5-8 16:54:04 | 显示全部楼层
    你好,LPC2144FBD64烧录加密后,想擦除再烧录,就无法操作,直接擦除不了。能有办法解决吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-7-9 12:56
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    17
    最后登录
    2023-7-9
    发表于 2023-7-9 13:38:31 | 显示全部楼层
    要主频低于100M才能擦写,是个问题,在软件运行中无法使用保存参数的功能
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-29 07:32 , Processed in 0.112987 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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