登录/注册

灵动微读写内部flash

更多

灵动微控制器读写内部Flash操作指南

在使用灵动微(MindMotion)MCU时,读写内部Flash需遵循以下关键步骤和注意事项:


核心步骤

  1. 解锁Flash控制寄存器

    • 写入特定密钥到 FLASH_KEY 寄存器,解除写保护:
      FLASH->KEY = 0x45670123;  // 密钥1
      FLASH->KEY = 0xCDEF89AB;  // 密钥2
  2. 擦除操作

    • Flash写入前必须擦除(全置1),按扇区(Sector)或页(Page)进行:
      FLASH->CR |= FLASH_CR_PER;       // 启用页擦除
      FLASH->AR = SectorAddress;       // 设置待擦除扇区地址
      FLASH->CR |= FLASH_CR_STRT;      // 触发擦除
      while (FLASH->SR & FLASH_SR_BSY); // 等待完成
  3. 写入数据

    • 半字写入(16位):直接操作目标地址
    • 字写入(32位):需对齐地址(地址末位为 0x000x04
      *(__IO uint32_t*)Address = Data; // 32位写入
      while (FLASH->SR & FLASH_SR_BSY); // 等待完成
  4. 重新上锁
    操作完成后锁定Flash:

    FLASH->CR |= FLASH_CR_LOCK;

关键注意事项

  1. 中断管理

    • 操作期间需屏蔽中断(__disable_irq()),避免时序冲突。
    • 若使用RTOS,需关调度器或进入临界区。
  2. 地址对齐

    • 写入地址必须按数据宽度对齐:16位数据需2字节对齐,32位需4字节对齐。
  3. 擦除时间

    • 擦除时间较长(ms级),需等待FLASH_SR_BSY标志清除。
  4. 程序位置
    Flash操作代码需在RAM中运行(避免在Flash中执行擦/写自身的代码)。方法:

    __attribute__((section(".ramfunc"))) void Flash_Write(...) {
     // 操作代码
    }
  5. 选项字节(Option Bytes)

    • 修改配置(如写保护、读保护)需通过选项字节寄存器操作,并调用OB_Launch生效。

示例代码(写入32位数据)

#include "mm32_device.h"

void Flash_Write(uint32_t Address, uint32_t Data) {
    // 解锁Flash
    FLASH->KEY = 0x45670123;
    FLASH->KEY = 0xCDEF89AB;

    // 等待就绪
    while (FLASH->SR & FLASH_SR_BSY);

    // 写入数据
    FLASH->CR |= FLASH_CR_PG;        // 启用编程
    *(__IO uint32_t*)Address = Data; // 写入32位数据
    while (FLASH->SR & FLASH_SR_BSY); // 等待完成

    // 上锁
    FLASH->CR |= FLASH_CR_LOCK;
}

// 调用示例
int main() {
    uint32_t addr = 0x08010000;   // Flash目标地址(需在合法区域)
    Flash_Write(addr, 0x12345678);
    while (1);
}

常见问题排查

  1. 操作失败

    • 检查FLASH_SR寄存器错误标志(如写保护错误 WRPRTERR)。
    • 确认地址在用户Flash范围内(非系统区或只读区)。
  2. 复位问题

    • 擦写期间避免看门狗复位,必要时临时停用看门狗。
  3. 电源稳定性

    • 确保VDD电压在规格范围内,避免低压导致操作错误。

注意:具体细节参考对应型号的《参考手册》中Flash Programming章节(如MM32F103为Chapter 3)。建议使用官方提供的Flash库(如 mm32_flash.c)简化开发。

第二十九章 读写内部FLASH

本文介绍了W55MH32内部FLASH,其含主存储、系统存储等,可存储代码及掉电保存数据。读写需解锁、擦除页等步骤,标准库提供相关函数。还展示了

2025-06-20 14:09:20

GD32F303固件库开发(17)----内部Flash读写

本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以

2023-07-27 09:40:39

STM32CUBEIDE(16)----内部Flash读写

本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以

2023-07-27 09:24:48

芯旺KF8F3132开发板应用笔记之Flash读写

芯旺微KF8F系列单片机KF8F3132开发板应用笔记之Flash读写

资料下载 华秋商城 2022-10-19 16:21:34

STM32F4内部Flash读写

之前的文章中介绍过STM32F0列的内部Flash读写《STM32CubeMX之内部

资料下载 佚名 2021-12-02 11:36:25

STM32读写内部flash注意点

STM32读写内部flash注意点先说注意点怎么写怎么读的总结先说注意点1、写之前的第一步是要先解锁

资料下载 佚名 2021-12-02 11:21:41

STM32内部Flash读写问题

STM32Flash读写之Flash调试技巧文章目录先熟悉所用MCU的Flash

资料下载 佚名 2021-12-01 20:21:14

ESP8266的Flash读写详细教程

本⽂介绍ESP8266的Flash读写接⼝,Flash读写时的注意事项,

资料下载 姚小熊27 2021-03-26 14:12:30

求助,请问如何读写M4内部Flash

请问如何读写新唐M4内部的Flash?我需要直接读写

2023-06-28 07:47:43

读写STM32内部FLASH问题解析

不是那种读写外挂FLASH芯片的,而是读写STM32内部的

2023-01-09 16:46:24

STM32F1内部Flash读写介绍

之前的文章中介绍过STM32F0列的内部Flash读写《STM32CubeMX之内部

2022-01-26 06:40:54

STM32怎么读写内部flash的注意点呢

STM32读写内部flash注意点先说注意点怎么写怎么读的总结先说注意点1、写之前的第一步是要先解锁

2022-01-26 06:09:51

如何对STM32内部Flash进行读写

如何对STM32内部的Flash进行读写呢?其程序是怎样去实现的?

2021-11-02 07:14:09

怎样对STM32内部FLASH进行读写操作呢

怎样对STM32内部的FLASH进行读写操作呢?其读写步骤有哪些呢?

2021-10-26 07:17:31

stm32内部flash读写

stm32内部flash读写,stm32内部

2021-08-05 07:23:19
7天热门专题 换一换
相关标签