【SAMR21新玩法】31. 使用内部的 NVM 存储器

Adafruit CircuitPython相关
MicroPython重要分支
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

【SAMR21新玩法】31. 使用内部的 NVM 存储器

#1

帖子 shaoziyang »

在SAMR21中,可以使用部分flash空间模拟EEPROM,这部分空间被称为NVM(Non-Volatile Memory)。使用EEPROM的方式比flash简单,可以直接读写byte,不需要像flash那样用页面方式管理。

在目前circuitpython版本中,划分了256字节作为NVM。NVM的使用非常简单,只需要通过microcontroller模块引用nvm就可以。如下面所示:

代码: 全选

>>> import microcontroller
>>> from microcontroller import nvm
>>> nvm
<ByteArray>
>>> len(nvm)
256
>>> nvm[0]
255
>>> nvm[0]=5
>>>
nvm是一个bytearray数组,大小是256字节,可以按字节方式读写。默认数据是255(0xFF,也是flash擦除后的状态,写flash实际是写0),写入数据后将自动修改芯片的NVM内容,掉电后也不会丢失。

在circuitpython中,不同芯片设定的NVM大小也不同。因为SAMR21/D21的flash较小,只有256KB,所以只设定了256字节的NVM。而在512KB的SAMD51上NVM的大小是8192。

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章