【Linux】ARM篇十--RTC实验



一、前言

本篇使用华清远见的FS4412开发板,进行RTC实验,知识包括RTC知识原理、开发板RTC介绍与寄存器介绍、RTC编程,并通过开发板实验现象验证RTC实验。


二、准备工作

  • FS4412开发板,我用的是华清远见的FS4412开发板
  • ubuntu下linux操作系统(包含交叉编译工具
  • serial-com8程序烧入执行工具
  • 开发板电路原理图、芯片手册
  • 开发程序模板

开发板资料、交叉编译工具、程序烧入工具下载(包含教程)
开发板可选择到华清远见官网进行租赁。
工程模板文件下载


三、RTC简介

RTC(Real Time Clock)即实时时钟,它是一个可以为系统提供精确的时间基准的元器件,RTC一般采用精度较高的晶振作为时钟源,有些RTC为了在主电源掉电时还可以工作,需要外加电池供电。
在这里插入图片描述


四、开发板的RTC

具有的功能:

  • 支持“BCD编号”,支持“秒”、“分”、“小时”、“星期几”、“日”、“月”、“年”。
  • 支持闰年生成器
  • 支持告警功能,即Alarm- interrupt或wake from power down模式。
  • 关机模式有:闲,深闲,停,深停,和睡眠。
  • 支持滴答计数器功能,即滴答中断或从电源下电模式(空闲,深度空闲,
    停下,深停下,睡吧)
  • 支持独立电源引脚(RTCVDD)
  • 为RTOS内核滴答定时
  • 支持毫秒滴答定时中断。

RTC结构图:
在这里插入图片描述


五、RTC寄存器介绍

在这里插入图片描述

  • 1:定时提醒部分是设置1个定时时间,到时间走到定时时间时,RTC给CPU发出一个提醒。
  • 2:时间校准部分,我们通常通过这部分寄存器获取时间,以及校准时间。

1、RTCCON寄存器

在这里插入图片描述
功能:RTC功能设置寄存器
其他位我们使用默认值,主要看第0位

  • 该位置1时,允许校准时间
  • 改位置0时,不允许校准时间

该位默认为0,主要为防止程序意外而导致时间被修改。


2、时间寄存器


在这里插入图片描述
功能:秒单位设置寄存器

在这里插入图片描述
功能:分钟单位设置寄存器

在这里插入图片描述
功能:小时单位设置寄存器

在这里插入图片描述
功能:天单位设置寄存器

在这里插入图片描述
功能:月单位设置寄存器

在这里插入图片描述
功能:年单位设置寄存器


六、RTC编程

1、程序编写

#include "exynos_4412.h"

void RTC_Init()
{                                                                                                        
    /* 打开时间设置 */
    RTCCON |= 1;

    /* 时间设置,WEEK与DAY数据手册写反了,这里要相反写 */
    RTC.BCDYEAR = 0x22;
    RTC.BCDMON = 0x4;
    RTC.BCDDAY = 0x1;
    RTC.BCDWEEK = 0x25;
    RTC.BCDHOUR = 0x11;
    RTC.BCDMIN = 0x29;
    RTC.BCDSEC = 0x1;

    /* 关闭时间设置 */
    RTCCON &= (~1);
}

int main()
{
    unsigned int  oldsec = 0, newsec = 0;
    RTC_Init();

    while(1)
    {
        /* 1秒打印1次 */
        newsec = RTC.BCDSEC;
        if(oldsec != newsec)
        {
            printf("%x-%x-%x,%x,%x:%x:%x\n", RTC.BCDYEAR, RTC.BCDMON, 
                RTC.BCDWEEK, RTC.BCDDAY, RTC.BCDHOUR, RTC.BCDMIN, RTC.BCDSEC);
            oldsec = newsec;
        }
    }
    return 0;                                                                                            
}


2、代码烧入

1.输入make生成.bin文件
在这里插入图片描述


2.将.bin文件复制到共享文件夹

在这里插入图片描述

在这里插入图片描述

输入:

cp ARM_LED.bin /mnt/hgfs/cca

将文件复制到cc文件夹


3.打开serial-com8,连接开发板(COM2接口),烧入程序
①查看端口
在这里插入图片描述
②打开serial-com8设置
在这里插入图片描述
在这里插入图片描述
③接通开发板电源,迅速按enter键,使其快速进入裸机模式。
在这里插入图片描述
④烧入程序
在这里插入图片描述
输入:

loadb 40008000
在这里插入图片描述

选择可执行文件烧入
在这里插入图片描述
烧入成功:
在这里插入图片描述


⑤执行程序
输入:

go 40008000


七、RTC实验现象

在这里插入图片描述


到这里就结束啦!
在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修成真

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值