社区导航

 

搜索
查看: 242|回复: 3

[原创] 在mpy中使用ESP的rtc存储器

[复制链接]

9642

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2019-12-16 09:32 | 显示全部楼层 |阅读模式

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

import machine

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


此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处



回复

使用道具 举报

9642

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 2019-12-16 09:35 | 显示全部楼层

在目前固件版本中,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,超过将引发异常。

 



回复

使用道具 举报

9642

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 2019-12-16 09:40 | 显示全部楼层

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

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



回复

使用道具 举报

9642

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

 楼主| 发表于 2019-12-16 10:17 | 显示全部楼层

国外网友的一个测试代码

 

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

 



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-1-29 10:03 , Processed in 0.143039 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表