动漫网站建设方案设计,深圳市宝安区松岗街道,网站开发二级域名,c2c代表网站有哪些目录 1、FLASH与EEPROM简介 2、FLASH模拟EEPROM原理 2.1、EERPOM数据结构 2.2、EERPOM物理结构 在讲解这篇博文前#xff0c;首先要明白为什么使用Flash存储来模拟EEPROM#xff1f; 主要有以下几个原因#xff1a; 成本效益#xff1a;许多微控制器(MCU)和系统芯片(SoC)内… 目录 1、FLASH与EEPROM简介 2、FLASH模拟EEPROM原理 2.1、EERPOM数据结构 2.2、EERPOM物理结构 在讲解这篇博文前首先要明白为什么使用Flash存储来模拟EEPROM 主要有以下几个原因 成本效益许多微控制器(MCU)和系统芯片(SoC)内置有Flash存储但没有专门的EEPROM。使用已有的Flash存储模拟EEPROM可以减少额外硬件成本。更大的存储容量通常Flash存储提供比EEPROM更大的存储容量。这使得在没有牺牲太多物理空间的情况下可以存储更多数据。灵活性和可扩展性通过软件可以灵活地设计和调整EEPROM模拟的大小和结构以适应不同的应用需求。这种方法比使用固定大小的物理EEPROM更具可扩展性。数据持久性尽管Flash存储的写入次数有限但它仍然能够提供足够的耐用性来满足大多数应用的需要。通过适当的数据管理和穿戴均衡策略可以最大限度地延长Flash存储的寿命。数据保护和安全性许多现代微控制器提供了Flash存储的安全功能如写入保护、加密等这有助于保护存储在Flash中的数据不被未经授权访问。易于编程和集成使用Flash存储来模拟EEPROM可以充分利用现有的Flash编程工具和技术同时也简化了硬件设计。 在使用Arduino开发时有个内置库可以使用Flash模拟EEPROM极大的方便了嵌入式数据存储的开发。 如果使用库函数只是知道调用API很难理解Flash模拟EEPROM的原理和方法本篇博文将以AT32F413flash256KB这款MCU为例详细介绍如何使用Flash模拟EEPROM。 1、FLASH与EEPROM简介 FLASH和EEPROM都为非易失性存储器在断电后数据仍然可以长期保存这为FLASH模拟 EEPROM提供了条件FLASH与EEPROM特点对比如下表所示 FLASH模拟EEPROM优点 低成本可节约一颗EEPROM芯片 存储、读取速度快通讯速度快于使用I2C或者SPI通讯的EEPROM元件 抗干扰能力强由于FLASH在单片机内部不会存在通讯总线被外部干扰的问题 容量可调可根据实际使用灵活调整存储空间大小。 2、FLASH模拟EEPROM原理 2.1、EERPOM数据结构 由于FLASH在写入数据前需要将FLASH数据先擦除为0xFF而FLASH擦除时通常为扇区擦除例如AT32F403A的扇区大小为2K字节这个特性决定了不能简单的将旧数据擦除然后写新数 据因为这样会导致存储在这个扇区内的其他数据也被擦除并且也会导致FLASH频繁擦除而降低 其使用寿命。 所以FLASH模拟EEPROM的思路是 新数据存储不影响旧数据 尽量减少FLASH擦除次数延长FLASH使用寿命。 基于以上的考虑我们设计了以下存储结构 EERPOM结构 EEPROM由两个页组成页0和页1在使用的时候1个页处于有效状态另外一个页处于擦除 状态读取或者写入数据都在有效状态的页进行。 数据格式 存储的数据格式为数据 数据地址地址和数据都是16位方式存储每一次存储占用32位也就是 4个字节。图中data列为数据data address列为数据地址flash address列为数据存储的实际 flash地址偏移量。例如上图中页0的flash address12处数据为0x3003数据地址为0x0002。 页状态标志 在第一个数据存储区存储页状态标志status页状态标志有3种 有效状态EE_PAGE_VALIDstatus 0x0000读取和写数据在此页进行 数据转移状态EE_PAGE_TRANSFERstatus 0xCCCC另外一页满了正在传输有效数 据到本页 擦除状态EE_PAGE_ERASEDstatus 0xFFFF。 数据写入 每一次写入数据前都会从页起始地址开始寻找第一个未存储数据的区域值为0xFFFFFFFF然后将待写入的数据和数据地址写到未存储数据的区域。例如上图中页0的flash address 20处值 为0xFFFFFFFF就是第一个未存储数据的区域。 当知道了页的大小后就可以算出最大的变量存储个数页容量/4-1。例如当页大小为1K时最大 可存储的变量数量为1024/4-1255。需要注意的是在实际使用中应该尽量留出较多的空闲容 量这样可以减小FLASH擦除次数提高FLASH寿命。 另外数据地址不可以超过最大能存储的变量数量例如当页大小为1K时最大可存储的变量数量为 1024/4-1255那么数据地址data address不可以大于255。 数据读取 每一次读取数据都会从页结束地址开始向前寻找最后一个存储的有效数据例如现在要读取地址为 0x0000的数据。从上图中看到flash address 4和flash address 16都是地址为0x0000的数 据因为最后一次存储的数据为flash address 16处的数据所以此时读取地址0x0000的数据为 0x1234。 数据转移 当一页数据存满了之后会将数据传输到空闲页将会执行以下操作以页0满页1空为例 将页1状态标记为数据传输状态EE_PAGE_TRANSFER 将所有有效数据复制到页1 擦除页0 将页1状态标记为有效状态EE_PAGE_VALID。 EEPROM写入流程如下所示 2.2、EERPOM物理结构 实现的EEPROM结构如下图所示一个页可以由1个或者多个扇区组成可以根据实际应 用灵活的选择扇区数量扇区数量越多可以存储的数据量就越多。通常EEPROM存储区定义在整 个FLASH末尾这样程序的烧录、执行和EEPROM区域互不影响。