EF_WRITE_GRAN 宏是啥意思? 我若使用 W25Q32 芯片, 我该配置成啥?

/* the flash write granularity, unit: bit* only support 1(nor flash)/ 8(stm32f4)/ 32(stm32f1) */
#define EF_WRITE_GRAN         1    /* @note you must define it for a value */static size_t set_status(uint8_t status_table[], size_t status_num, size_t status_index)
{size_t byte_index = ~0UL;/** | write garn |       status0       |       status1       |      status2         |* ---------------------------------------------------------------------------------* |    1bit    | 0xFF                | 0x7F                |  0x3F                |* |    8bit    | 0xFFFF              | 0x00FF              |  0x0000              |* |   32bit    | 0xFFFFFFFF FFFFFFFF | 0x00FFFFFF FFFFFFFF |  0x00FFFFFF 00FFFFFF |*/memset(status_table, 0xFF, STATUS_TABLE_SIZE(status_num));if (status_index > 0) {
#if (EF_WRITE_GRAN == 1)byte_index = (status_index - 1) / 8;status_table[byte_index] &= ~(0x80 >> ((status_index - 1) % 8));
#elsebyte_index = (status_index - 1) * (EF_WRITE_GRAN / 8);status_table[byte_index] = 0x00;
#endif /* EF_WRITE_GRAN == 1 */}return byte_index;
}

从这可以看出来, 若 EF_WRITE_GRAN 定义为 1 , 则表示最小改动为1bit;

flash一般有个特性, 可以将1写成0, 所以我们可以利用这个特性实现 "值和位表" 的转换

如代码区的注释表格里一样, 若写入颗粒是1bit, 则可以用一个字节表示8种状态.

假如我们定义有效数据的标记位0xEF89

当EF_WRITE_GRAN 为1, 可以定义脏数据为0xEF89;

当EF_WRITE_GRAN 为8, 可以定义脏数据为0xEF00;

经过我的测试W25Q32 这样的 SPI 存储器的写入颗粒可以是1bit.

记得STM32L1x系列写入颗粒是8, 其他单片机我都没怎么试过.

EasyFlash 里的 EF_WRITE_GRAN相关推荐

  1. Android界面特殊全汇总

    (一)Activity 页面切换的效果 Android 2.0 之后有了 overridePendingTransition() ,其中里面两个参 数,一个是前一个 activity 的退出两一个 a ...

  2. RT-Thread完整版fal及easyflash移植

    最近深圳开始隔离了,居家办公对于我们这种需要做验证仿真的,而家伙都没在手上的打工人太难了.因为最近项目需要用到fal加easyflash软件包,而之前搞过,但是忘记具体的了.还好留有文档,现在也转为文 ...

  3. RT-Thread—FAL与EasyFlash组件移植

    一.FAL管理与示例 FAL (Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理.操作的抽象层,对上层统一了 Flash 及 ...

  4. IOT-OS之RT-Thread(十一)--- FAL分区管理与easyflash变量管理

    文章目录 一.FAL管理与示例 1.1 FAL软件包源码获取 1.2 FAL管理 1.3 FAL移植 1.4 FAL使用示例 二.DFS挂载到FAL分区示例 三.Easyflash移植到FAL分区示例 ...

  5. RT-Thread—STM32—EasyFlash

    !!! 本文已同步到码云 - 点击此链接获取最新 - 可进入码云提交修改 !!! 概述 本教程主要根据官方推荐的教程进行改编,详细信息请参考EasyFlash软件包 本例程的模板使用通用模板环境搭建里 ...

  6. EasyFlash源码分析记录

    前言: 记录分析EasyFlash源码V4.1.0的过程所想.实际嵌入式项目中,flash的使用是必不可少的,好的flash存储框架有利于进行数据的存储和读取,虽然现在的flash擦写寿命已经很长了, ...

  7. EasyFlash V4.0 ENV 功能设计与实现

    声明:本文档来源于EasyFlash的仓库,原作者armink.因github上图片显示缓慢,我转载到了CSDN. 文档链接:EasyFlash V4.0 ENV 功能设计与实现 EasyFlash ...

  8. 基于RT-Thread Studio的FAL,EasyFlash,文件系统移植

    一.新建工程 ​ 1.2.配置时钟 1.3.修改main文件 #include <rtthread.h> #include <rtdevice.h> #include < ...

  9. RT-thread应用讲解——easyflash

    RT-thread应用讲解--easyflash 目录 RT-thread应用讲解--easyflash 前言 一.挂载FLASH 二.配置分区 三.下载软件包 四.接口驱动移植 1.移植驱动 2.修 ...

最新文章

  1. 浅谈lambda表达式最通俗易懂的讲解
  2. python 相关性检验_在Python中计算Pearson相关性和重要性
  3. mysql zrm 配置_利用MySQL-zrm来备份和恢复MySQL数据库方法详解
  4. access 合并多行字符串_八种方法玩转字符串合并,这篇文章全都给你讲明白!...
  5. c语言除法效率问题,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
  6. java quartz没执行完_quartz 防止上一任务未执行完毕,下一时间点重复执行
  7. 在VS2012中实现ExtJS的智能提示
  8. java tempfile read_Java资源作为文件
  9. MySQL查看当前的连接信息
  10. 使用xshell6连接linux提示 WARNING! The remote SSH server rejected X11 forwarding
  11. 基于highcharts+easui+java生成时趋图
  12. jquery 自定义插件!
  13. GNS3与Wireshark相关联
  14. r语言 怎么把字调大_R语言中的字体调整
  15. 红外遥控器解码串口输出模块结合51单片机+oled屏幕实现遥控器红外解锁( STC89C52RC)
  16. 程序员修炼之道——通向务实的最高境界(第二版)
  17. 原生小程序 引入vant-weapp 组件库 和 WeUI组件库
  18. 思岚激光雷达+cartographer建图
  19. 时间局部性和空间局部性
  20. 学习发展历史,真的一无所用吗?NO

热门文章

  1. 体验AI拜年新姿势,爱奇艺技术团队这波操作真秀!
  2. 在tensorflow下进行pip操作时需要注意的地方
  3. 夜神模拟器BURP抓包设置
  4. i.MX6ULL终结者电容触摸实验程序设计
  5. Python 判断列表中是否含有给定字符串
  6. 《出版专业实务》(2015年版初级)思考与练习答案 第三章
  7. php12生肖是哪个,十二生肖对应的数字
  8. 多旋翼无人机技术发展浅析
  9. 桃飘火焰焰,梨堕雪漠漠。(排序 贪心
  10. 柯洁夺斗地主全国冠军!斗地主可以排解输棋痛苦”