一、概述
在做测试或者是做项目的时候我们很经常会使用到内部 Flash 存储,毕竟很多数据需要用到掉电保存。那么对于 QN9080 来说,我们需要怎么对 Flash 进行读写呢,下面会给大家详细说明。
二、环境搭建
2.1 SDK 下载
本文基于 NXP QN9080 IC,SDK 可在NXP 官网 https://mcuxpresso.nxp.com 下载。
2.2 硬件
本文基于 QN9080 DK 板进行开发,DK 板如图 2.2 所示。
图 2.2
2.3 开发软件
SDK 支持 IAR、Keil、MCUXpreeso IDE 三种开发软件、本文以 IAR 为开发环境作为介绍。
三、工程介绍
在 SDK_2.2.0_QN908XCDK\boards\qn908xcdk\driver_examples\flash\polling 目录下的工程是操作 Flash 的例程,下面带大家一起看看。
3.1 Flash 初始化
- 设置获取 Flash 的 Default 设置: FLASH_GetDefaultConfig(&config); 参数是指向配置 Flash 结构的一个指针。随后是初始化 Flash 模块,具体可参考图 3.1 -1。
图 3.1 – 1
3.2 Flash 擦除
为了保证每一次都能将 Flash 的数据更新为自己需要的数据,必须先将准备写入的那 一页 Flash 进行擦除。具体的函数大家可以参考一下图 3.2 – 1。
图 3.2 - 1
FLASH_Erase 函数的参数分别是:
① 指向配置 Flash 结构的一个指针
② 准备擦除的起始地址
③ 准备擦除的大小
由于 Flash 不同于 EEPROM 可以一个字一个字节地擦除和写入, Flash 只能一页一页地擦除,也就是第三个参数的大小最少为 2048。 也就是说假设你要擦除的起始地址不是第一页,那起始地址需要改为: Flash 起始地址 + 每一页 Flash 的大小 * 你要擦除的页码。具体可参考图 3.2 – 2。
图 3.2 - 2
3.3 Flash 写入
在擦除完对应的 Flash 页之后就可以开始进行写操作了,图3.3 – 1 是对应的写 Flash 函数。
图 3.3- 1
FLASH_Program 函数的参数分别是:
① 指向配置 Flash 结构的一个指针
② 准备写入的起始地址
③ 准备写入的数据指针
④ 准备写入的数据大小。
3.4 结果显示
在写入之前先将 Flash 数据读取并且打印出来,相应的结果如图 3.4 – 1,总共有 2K Bytes,值均为 0XFF。
图 3.4- 1
对其中前面512 Byte 进行赋值 0 – 0xFF,并且写进 Flash 里面,在写操作完成后将数据读取出来,得到的结果如图3.4 – 2。
图 3.4- 2
通过前面的讲述,大家对于怎么去操作 Flash是否有了一个大致的了解,后面还会有其他精彩的内容,希望大家继续观看。
四、参考资料
[1] QN908x.pdf
[2] QN908x user manual.pdf
评论