当前位置: 首页 > article >正文

Micropython RPI-PICO 随记-DS3231和RTC

开发环境

  • MCU:Pico1(无wifi版)
  • 时钟模块:DS3231
  • 使用固件:自编译版本
  • 开发环境:MacBook Pro Sonoma 14.5
  • 开发工具:Thonny 4.1.6
  • 开发语言:MicroPython 1.24.0

知识记录

  • DS3231是一款高精度的I2C实时时钟(RTC)器件,它采用二进制编码的十进制(BCD)格式来存储时间数据。需要进行双向转换:

'''
注意事项:
--这两个函数都假设输入的value是一个小于100的非负整数,因为它们只处理最后两位数字(个位和十位)。
--bcd2bin函数中,如果输入的BCD编码不正确(比如大于9的数字),那么转换结果也会不正确。
--bin2bcd函数中,如果输入的二进制值超过了99,那么只有最后两位数字会被转换,这可能会导致数据丢失。
chenph
'''
# 将BCD模式转换为十进制
def bcd2bin(self, value):
    return (value or 0) - 6 * ((value or 0) >> 4)
    
# 将十进制转换为BCD模式
def bin2bcd(self, value):
    return ((value % 100) // 10) << 4 | (value % 10)
  • Pico接电脑调试的时候,获取当前时间为电脑时钟(写代码的时候是想先设置DS3231,再从DS3231取时间给Pico,程序运行过程中统一取Pico的时钟。当时没意识到接电脑调试会直接取电脑时钟,所以比如“Pico星期一到日对应的是0~6,DS3231对应的是1~7”以及“Pico会根据年月日自动设置星期”的实验可能是错误的,有时间会测试。)
# 获取时间很简单
from machine import RTC

rtc = RTC()

currT = rtc.datetime()
print(currT)

# 设置日期时间,是一个元组,年 月 日 星期 时 分 秒 微秒,微秒DS3231是没有的
datetime = (2024, 12, 17, 1, 20, 16, 00, 0)
rtc.datetime(datetime)

http://www.kler.cn/a/446595.html

相关文章:

  • Tekscan压力分布测量系统:电池安全与质量提升的保障
  • 周末总结(2024/12/21)
  • UDP系统控制器_音量控制、电脑关机、文件打开、PPT演示、任务栏自动隐藏
  • 【AIGC-ChatGPT进阶副业提示词】末日生存指南 2.0:疯狂科学家的荒诞智慧
  • 【ETCD】【Linearizable Read OR Serializable Read】ETCD 数据读取:强一致性 vs 高性能,选择最适合的读取模式
  • 算法笔记—前缀和(动态规划)
  • POI-TL插件开发-表格分组插件
  • HTML 面试题全解析
  • Intellij配置scala运行环境
  • 故障诊断 | 一个小创新:特征提取+KAN分类
  • OpenAI o3 “震撼” 发布后回归技术本身的审视与进一步思考
  • Hive其四,Hive的数据导出,案例展示,表类型介绍
  • 3D开发工具HOOPS助力造船业加速设计与数字化转型
  • 告别Zoo of Factor:净化因子分析中的数据挖掘与p值操纵
  • Vue.js前端框架教程2:Vue路由和状态管理库Pinia
  • 开启新征程——QML
  • MvMRL:一种用于分子性质预测的多视图分子表示学习方法
  • Vue3自定义事件
  • 架构演进之路
  • 学习“Kotlin编程指南”笔记
  • Hadoop HA高可用搭建
  • MySQL中常用的函数
  • “从零到一:揭秘操作系统的奇妙世界”【操作系统中断和异常】
  • wtforms+flask_sqlalchemy在flask-admin视图下实现日期的修改与更新
  • G口带宽服务器与1G独享带宽服务器:深度剖析其差异
  • wxWidgets使用wxStyledTextCtrl(Scintilla编辑器)的正确姿势