【电机控制器】FM33LF015芯片——FLASH模拟EEPROM
@TOC
前言
使用工具:
1.ARM仿真器/J-OBV2仿真器
提示:以下是本篇文章正文内容,下面案例可供参考
一、概述
二、代码
#define FLASH_PROG_ADDR 0x00004000 #define PAGE_BUFFER_SIZE 128 #define SECTOR_BUFFER_SIZE 512 /* Page大小为512字节 即128个字 */ /* 32位=32bit=4byte,1byte=4bit */ /* PageDataBuffer[128]数组有128个元素,每个元素占用4个byte,即4个字节 */ /* 1byte占用8位 */ uint32_t PageDataBuffer[PAGE_BUFFER_SIZE]; /* Sector大小为2048字节 即512个字 */ uint32_t SectorDataBuffer[SECTOR_BUFFER_SIZE]; uint32_t ReadData; void FlashRW(void) { FL_FLASH_PageErase(FLASH, FLASH_PROG_ADDR); memset(PageDataBuffer, 0x55, PAGE_BUFFER_SIZE * 4); FL_FLASH_Program_Word(FLASH, FLASH_PROG_ADDR, PageDataBuffer[0]); ReadData = *((uint32_t *)FLASH_PROG_ADDR);//将flash数据读出 // FL_FLASH_PageErase(FLASH, FLASH_PROG_ADDR); // memset(PageDataBuffer, 0xAA, PAGE_BUFFER_SIZE * 4); // FL_FLASH_Program_Page(FLASH, FLASH_PROG_ADDR / FL_FLASH_PGAE_SIZE_BYTE, PageDataBuffer); // ReadData = *((uint32_t *)FLASH_PROG_ADDR);//将flash数据读出 // FL_FLASH_SectorErase(FLASH, FLASH_PROG_ADDR); // memset(SectorDataBuffer, 0x00, SECTOR_BUFFER_SIZE * 4); // FL_FLASH_Program_Sector(FLASH, FLASH_PROG_ADDR / FL_FLASH_SECTOR_SIZE_BYTE, SectorDataBuffer); // ReadData = *((uint32_t *)FLASH_PROG_ADDR);//将flash数据读出 //FL_FLASH_SectorErase(FLASH, FLASH_PROG_ADDR); }
三、实验
写两个字节,0x55,掉电后重新上电,仍然是2个字节的0x55
这里的地址和芯片手册没有对上,芯片手册是0x00040000,试了一下没有成功
反而是0x00004000是可以的
后续我在bootswap章节中看到了对于IF3的描述是最低word 00004000地址和实验结论相符
用连续写word的方式,写入8个Word,即4个byte,4个字节,32个bit
四、参考资料
总结
本文仅仅简单介绍了【电机控制器】FM33LF015芯片——FLASH模拟EEPROM,评论区欢迎讨论。
Top comments (0)