Nordic--nrf52832--FDS

Flash访问模块FDS用法及常见问题—nRF5 SDK模块系列一
nRF52832-QFAA,他的 Flash 内存如下表所示:

Flash总大小 页数 页大小 块大小 每个页包含的块数量
512 KByte 128 page 4 KByte 512 Byte 8

裸机 FLASH 读写

 nRF52832 的非易失性存储器是通过非易失性存储器控制器(NVMC)来操作的,NVMC提供了写或擦除 Flash 区域和 UICR 的功能。

 写 Flash 之前必须通过写寄存器 CONFIG.WEN 来使能 Flash 的写操作,同样,擦除 Flash之前必须通过写寄存器 CONFIG.EEN 来使能 Flash 的擦除操作。

 对 Flash 进行操作的时候要特别注意,不能同时使能 Flash 的写和擦除,否则将导致无法预测的后果。

1. 写 Flash

  • 使能 Flash 的写后,每次写入一个字(32 位)到字对齐的地址上。
  • NVMC 只能将 Flash 中的各个位由“1”写成“0”,而不能将“0”写成“1”,这也是为什么 Flash 写之前要进行擦除操作,擦除操作可将 Flash 的各个位写成“1”。
  • 写 Flash 时,只允许写字操作,写入字节或半字都会导致硬件错误,所以,当我们写入的数据不够一个字时,应该按照一个字来处理。
  • 写一个字所需要是的时间是: t W R I T E t_{WRITE} tWRITE ,在写的过程中,CPU 是被挂起的。

2. 擦除 Flash 的页面

  • 使能 Flash 擦除后,可通过 ERASEPAGE 寄存器来按页擦除 Flash。
  • 擦除页面时候,向 ERASEPAGE 寄存器写入这个页面的起始地址即可擦除该页面。
  • 擦除一个页面所需要是的时间是:t ERASEPAGE ,在擦除的过程中,CPU 是被挂起的。

3. 写用户信息配置寄存器 器(UICR)

  • 用户信息配置寄存器 UICR 的写入方式和 Flash 一样。
  • 写 UICR 后,只有复位后新的值才会生效。
  • 写 UICR 所需要是的时间是: t W R I T E t_{WRITE} tWRITE ,在写的过程中,CPU 是被挂起的。

4. 擦除 用户信息配置寄存器(UICR)

  • 使能擦除后,通过 ERASEUICR 寄存器来擦除 UICR。
  • 擦除 UICR 后,UICR 所有的位被设置成“1”。
  • 擦除 UICR 所需要是的时间是: t E R A S E P A G E t_{ERASEPAGE} tERASEPAGE,在擦除的过程中,CPU 是被挂起的。

5. 全部擦除(Erase all)

  • 使能擦除后,通过 ERASEALL 寄存器一次全部擦除 Flash 和 UICR。但是工厂信息配置寄存器 FICR 不会被擦除。
  • 全片擦除所需要的时间是: t E R A S E A L L t_{ERASEALL} tERASEALL ,在擦除的过程中,CPU 是被挂起的。写和擦除所需的时间

表 8-2:写和擦除所需的时间

符号 描述 最小值 典型值 最大值 单位
t W R I T E t_{WRITE} tWRITE 写一个字 67.5 338 µs
t E R A S E P A G E t_{ERASEPAGE} tERASEPAGE 擦除一个页面 2.05 89.7 ms
t E R A S E A L L t_{ERASEALL} tERASEALL 全部擦除 6.72 295.3 ms

BLE 程序中 FLASH 操作

 NRF52832 的 FLASH 数据存储可以通过 Nrodic 提供的两个程序模块来实现。

  • FDS(Flash Data Storage)。
  • Flash Storage。

 相对于 Flash Storage 来说,FDS 对数据的组织性和安全性更强,并且在 SDK 的 BLE例子中使用 FDS 来存储配对相关的信息,因此,FDS 是我们学习 NRF52832 必须要掌握的内容,本节详细解释 FDS 程序模块的特点和应用流程,并通过编写一个使用 FDS 的例子程序来说明如何在我们的程序中加入和应用 FDS 存储数据。

你可能感兴趣的:(单片机,Nordic,nrf52832学习应用之路)