使用ESP的rtc存储器

ESP32、ESP8266
ESP32-S2、ESP32-S3、ESP32-C3
回复
头像
shaoziyang
帖子: 3967
注册时间: 2019年 10月 21日 13:48

使用ESP的rtc存储器

#1

帖子 shaoziyang »

在新版本的ESP系列固件中(包括了ESP8266和ESP32),可以访问rtc memory了。如:

Code: Select all

import machine

rtc = machine.RTC()
rtc.memory('12345')
rtc.memory()

头像
shaoziyang
帖子: 3967
注册时间: 2019年 10月 21日 13:48

Re: 使用ESP的rtc存储器

#2

帖子 shaoziyang »

在目前固件版本中,rtc.memory()是一个bytes类型对象,可以对rtc.memory整体写入,但是不能单独写入某个位置,而读取是可以一次读取或读取某个位置。

如:

代码: 全选

rtc.memory('12345')
rtc.memory('abc')
rtc.memory(b'\x0012345')
print(rtc.memory())
print(rtc.memory()[0], rtc.memory()[1])
rtc.memory最大大小,对于ESP8266是492,而ESP32是2048。

国外网友的一个测试代码

Code: Select all

import machine

rtc = machine.RTC()
i = 1
while True:
    try:
        rtc.memory(b'X' * i)
    except Exception as e:
        print('Error:', e)
        print(len(rtc.memory()), 'Bytes')
        print(rtc.memory())
        break
    else:
        i += 1

头像
shaoziyang
帖子: 3967
注册时间: 2019年 10月 21日 13:48

Re: 使用ESP的rtc存储器

#3

帖子 shaoziyang »

上电复位时,rtc.memory内容会清零,缓冲区长度变为0。但是在软复位时(包括deepsleep),rtc.memory的内容不会发生变化,也就是不会被初始化,利用这个特性,可以将一些特定数据写入到rtc.memory。

目前rtc.memory功能还待完善,暂时也没有文档。
 

回复

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