liehuf-notes liehuf-notes
首页
K230
Verilog
留言板
我的博客 (opens new window)
GitHub (opens new window)
首页
K230
Verilog
留言板
我的博客 (opens new window)
GitHub (opens new window)
  • 1.K230 简单介绍
  • 2.K230 micropython基础
  • 3.K230 FPIOA&GPIO - 一切的根源
  • 4.K230 PWM的玩法
  • 5.K230 UART-发送和接收
  • 6.K230 RTC-时间都去哪了
    • 1. RTC基础
      • 1.1 什么是RTC?
      • 1.2 RTC工作原理
      • 1.3 K230 RTC特性
    • 2. RTC配置详解
      • 2.1 基本配置
      • 2.2 时间格式说明
      • 2.3 时间操作
    • 3. 实际应用场景
      • 3.1 定时任务
      • 3.2 数据记录
      • 3.3 定时唤醒
    • 4. 性能优化
      • 4.1 时间同步
      • 4.2 时间校准
    • 5. 常见问题与解决方案
      • 5.1 时间不准确
      • 5.2 掉电时间丢失
      • 5.3 时间同步失败
    • 6. 最佳实践
    • 7. 注意事项
    • 8. 参考文档
    • 免责声明
  • 7.我用定时器定时画个圈圈祝福你
  • 8.修勾别复位,我来喂你
  • 9.哈基摄,给我拍
  • 10.摄像头的基本素养-画面
  • 11.摄像头的猫-在画面上画画
  • K230
猎户f
2025-06-17
目录

6.K230 RTC-时间都去哪了

# K230 RTC-时间都去哪了

RTC时钟原理图

# 1. RTC基础

# 1.1 什么是RTC?

RTC(Real-Time Clock)是一种能够提供持续、精确的日期和时间信息的硬件或外设模块。在K230开发板中,RTC模块具有以下特点:

  • 可独立计时
  • 支持年月日时分秒
  • 掉电后时间会丢失(无备用电池)
  • 精度相对较低

# 1.2 RTC工作原理

RTC模块的主要特点:

  • 使用内部计数器记录时间
  • 通过晶振提供时钟源
  • 支持时间设置和读取
  • 可配置闹钟功能

# 1.3 K230 RTC特性

K230的RTC模块提供以下功能:

  • 时间设置和读取
  • 日期设置和读取
  • 闹钟功能
  • 定时唤醒

# 2. RTC配置详解

# 2.1 基本配置

from machine import RTC

# 创建RTC对象
rtc = RTC()

# 设置时间
# 参数格式:(年, 月, 日, 星期, 时, 分, 秒, 微秒)
rtc.init((2024, 12, 11, 3, 17, 7, 50, 0))

# 获取当前时间
current_time = rtc.datetime()
print("当前时间:", current_time)
1
2
3
4
5
6
7
8
9
10
11
12

# 2.2 时间格式说明

# 时间元组格式
(year, month, day, weekday, hour, minute, second, microsecond)

# 星期对应关系
# 0: 星期一
# 1: 星期二
# 2: 星期三
# 3: 星期四
# 4: 星期五
# 5: 星期六
# 6: 星期日
1
2
3
4
5
6
7
8
9
10
11

# 2.3 时间操作

def format_time(datetime_tuple):
    """格式化时间显示"""
    year, month, day, weekday, hour, minute, second, _ = datetime_tuple
    weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
    return f"{year}年{month}月{day}日 {weekdays[weekday]} {hour:02d}:{minute:02d}:{second:02d}"

# 使用示例
current_time = rtc.datetime()
formatted_time = format_time(current_time)
print(formatted_time)
1
2
3
4
5
6
7
8
9
10

# 3. 实际应用场景

# 3.1 定时任务

def check_time(target_hour, target_minute):
    """检查是否到达指定时间"""
    current_time = rtc.datetime()
    current_hour = current_time[4]
    current_minute = current_time[5]
    
    return current_hour == target_hour and current_minute == target_minute

# 使用示例
while True:
    if check_time(17, 8):  # 检查是否到达17:08
        print("时间到!执行任务...")
    time.sleep(1)
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3.2 数据记录

def log_data(data):
    """记录数据并添加时间戳"""
    current_time = rtc.datetime()
    timestamp = format_time(current_time)
    log_entry = f"[{timestamp}] {data}\n"
    
    # 写入日志文件
    with open("data.log", "a") as f:
        f.write(log_entry)
1
2
3
4
5
6
7
8
9

# 3.3 定时唤醒

def set_alarm(hour, minute):
    """设置闹钟"""
    current_time = rtc.datetime()
    current_hour = current_time[4]
    current_minute = current_time[5]
    
    # 计算距离目标时间的分钟数
    current_minutes = current_hour * 60 + current_minute
    target_minutes = hour * 60 + minute
    
    if target_minutes <= current_minutes:
        target_minutes += 24 * 60  # 如果目标时间已过,设置为明天
        
    minutes_to_wait = target_minutes - current_minutes
    return minutes_to_wait
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 4. 性能优化

# 4.1 时间同步

def sync_time():
    """通过网络同步时间"""
    try:
        import ntptime
        ntptime.host = "pool.ntp.org"
        ntptime.settime()
        return True
    except:
        return False
1
2
3
4
5
6
7
8
9

# 4.2 时间校准

def calibrate_time():
    """校准时间"""
    # 获取网络时间
    if sync_time():
        # 更新RTC时间
        current_time = time.localtime()
        rtc.init(current_time)
        return True
    return False
1
2
3
4
5
6
7
8
9

# 5. 常见问题与解决方案

# 5.1 时间不准确

  • 原因:晶振精度限制
  • 解决方案:
    • 定期同步网络时间
    • 使用外部高精度时钟模块

# 5.2 掉电时间丢失

  • 原因:无备用电池
  • 解决方案:
    • 使用外部RTC模块(如SD3078)
    • 实现掉电检测和保存时间

# 5.3 时间同步失败

  • 原因:网络问题或NTP服务器不可用
  • 解决方案:
    • 使用多个NTP服务器
    • 实现本地时间备份

# 6. 最佳实践

  1. 时间管理

    • 定期同步网络时间
    • 实现时间备份机制
    • 使用高精度时钟源
  2. 应用开发

    • 考虑时区问题
    • 实现时间格式化
    • 添加时间验证
  3. 系统集成

    • 与网络模块配合
    • 实现数据记录
    • 支持定时任务

# 7. 注意事项

  1. 时间精度

    • K230内置RTC精度较低
    • 建议使用外部高精度时钟模块
    • 定期校准时间
  2. 电源管理

    • 掉电后时间会丢失
    • 需要实现时间保存机制
    • 考虑使用备用电池
  3. 应用开发

    • 考虑时间同步问题
    • 实现错误处理机制
    • 注意时区转换

# 8. 参考文档

  • K230 RTC模块使用说明 (opens new window)

# 免责声明

本文档及所有内容(包括文字、图片、代码等)均为作者基于嘉立创庐山派K230开发板公开资料和个人使用经验整理分享,仅供学习和技术交流之用。

所有涉及的品牌名称、商标、图片及相关资源均归嘉立创官方所有,未经授权不得用于商业宣传或其他用途。

作者与嘉立创官方无任何隶属或代理关系,内容不构成任何形式的官方承诺或保证。

用户在使用相关资源时,应遵守相应的开源协议和法律法规,确保合法合规。

如涉及版权问题,请联系作者或嘉立创官方处理。


帮助我们改善此页面 (opens new window)
上次更新: 2025/07/12, 16:01:22
5.K230 UART-发送和接收
7.我用定时器定时画个圈圈祝福你

← 5.K230 UART-发送和接收 7.我用定时器定时画个圈圈祝福你→

Theme by Vdoing | Copyright © 2025-2025 Eryajf | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式