当你在调试一块板子时,如果那个家伙对你的努力无动于衷时,你会怎么样。
说实在的,我会经常认为应该把这家伙好好安葬了,不该再在这家伙身上浪费时间了。心里这么想着,行动上却不这么做,因为这些家伙可都是用钱买来的,其能说下葬就下葬。
从昨天下午到今天早上3点多,我花了将近12个小时才把这个板子上的RTC程序调试完成,现在想把我的调试经验
跟大家谈一谈,希望对那些刚起步的人有点帮助。但请那些高手们不要笑我这么长时间才调一个RTC。
我在这里简单地介绍一下44b0x内部集成的RTC的功能:
1、支持闰年;
2、解决了2000;
3、独立的供电功能;
4、支持毫秒滴答(TICK)时间中断作为RTOS核的时间滴答;
5、报警功能。
6、循环复位功能。
当然对于我们现在的人来说,最关心的是其中的第4点和第5点(第一点也当然非常重要,但关于我们如何去调试,
与这个功能有或没有却没什么关系), 下面结合我的调试过程,来说明下RTC的调试要点。
第一步是要将我们的时间写入对应的BCD时间寄存器里,在写BCD寄存器之前我们要先写RTC控制寄存器
RTCCON因为RTCCON寄存器包含着RTC读写允许位
RTCCON 0x01D70040(little endian)
0x01D70043(Big endian) R/W(字节) RTC control Register 初始值0x0
位名称 BIT 描述
CLKRST [3] RTC 时钟计数复位
0 = No reset, 1 = Reset
CNTSEL [2] BCD计数复位
0 = Merge BCD counters
1 = 保留(Separate BCD counters)
CLKSEL [1] BCD 时钟选择
0 = XTAL 1/2 15 divided clock
1 = Reserved (XTAL clock only for test)
RTCEN [0] RTC读写允许
0 = Disable, 1 = Enable
这里应该注意的是,在对CLKRST写入1复位之后,应该马上将CLKRST写回0,因为该位是1时RTC的时钟计数器会一直复位,时间就会停在
你写入复位信号的那个时刻,刚开始时,我就是没有注意这一点,我还认为是我的RTC有问题,时间怎么就是启动不了。
还有一点就是在读写RTC完成后如果有一段时间不去读时,应该及时将读写允许位禁止掉。如果RTC 读写允许, STOP电
流将大大增大, 为了减少STOP 电流, 当不存取RTC时,设置该位为0,虽然为0,但RTC时钟仍运行.
第二步是初始化日历时间。
第三步,如果你要RTC滴答功能,你就得对TICNT寄存器进行初始化:
TICNT 0x01D7008C(little endian)
0x01D7008F(Big endian) R/W(字节) 时间滴答计数寄存器初始值0x00
位名称 BIT 描述
TICK INT ENABLE [7] 时间滴答中断允许
0 = disable 1 = enable
TICK TIME COUNT [6:0] 时间滴答计数值. (1-127)
这个计数值内部递减, 用户不能读它的实时值
要用这个功能,首先你要搞明白中断服务程序的写法,我在使用这个中断时,就是因为中断初始化搞错,还花了很长一段时间在观察TICK 计数器
因为通过存储区bank1的特殊功能寄存器区,只能看见可读的寄存器值,我还以为是我的RTC出了问题,结果浪费了许多时间。
这里的TICK中断的间隔时间=(n+1)/128,单位秒,其中n=TICK TIME COUNT ,也就是寄存器TICNT的低6位。
第四步,如果使用你要时钟报警功能的话,你还要对报警时间寄存器和报警控制寄存器进行初始化。
RTCALM 0x01D70050(little endian)
0x01D70053(Big endian) R/W(字节) RTC 报警控制寄存器初始值0x0
位名称 BIT 描述
Reserved [7]
ALMEN [6] Alarm全局允许
0 = Disable, 1 = Enable
YEAREN [5] 年alarm允许
0 = Disable, 1 = Enable
MONREN [4] 月alarm允许
0 = Disable, 1 = Enable
DAYEN [3] 天alarm允许
0 = Disable, 1 = Enable
HOUREN [2] 小时alarm允许
0 = Disable, 1 = Enable
MINEN [1] 分alarm允许
0 = Disable, 1 = Enable
SECEN [0] 秒alarm允许
0 = Disable, 1 = Enable
这里的报警允许是这样定义的:
首先要ALMEN=1才能产生报警。
再就是只有当BCD时间寄存器的时间和相应alarm允许位对应ALM时间寄存器的时间一样时才会产生报警
就是说:
如果你想要报警每分钟一次,那就令ALMEN=1,MINEN=1,SECEM=1,其他位都为0;
如果你想要报警每小时一次,那就令ALMEN=1,HOUREN=1,MINEN=1,SECEM=1, 其他位为0;
如果你想要每天一次,那就令ALMEN=1,DAYEN=1,HOUREN=1,MINEN=1,SECEM=1,其他位为0;
。。。。。。
注意不可能在YEAREN=1的情况下实现每个月或更频繁的报警,也不可能在MONREN=1的情况下实现每天或
更频繁的报警。。。
关键字:44b0x 开发板 RTC调试
引用地址:
44b0x 开发板上的RTC调试经验
推荐阅读最新更新时间:2024-03-16 13:55
使用STM32H563开发板简单演示DMA 2D模式的应用
我这里使用STM32H563开发板来简单演示一下DMA 2D模式的应用。所谓DMA 2D模式,个人理解是DMA可以通过事先设置块内寻址偏移量和块寻址偏移量来动态调整DMA的寻址方式及能力。换句话说,DMA在进行数据传输时,块内寻址不再总是固定相邻存放,而是可以通过编程决定相邻两次传输时访问数据的地址间隔。对于重复性的块传输,也不再是简单的每次从同一位置再开始,而是可以根据块地址的偏移量调整从新开始传输的起始地址。 描述起来有点抽象,不妨加点看图说话。现在假设针对同一DMA请求发起三次【三轮】传输,对应3个DMA传输块。【注:手机模式下图片可放大查看】 如上图所示,第一次传输了5个红色标示的数据【即第1块】,按图示进行数据
[单片机]
大联大世平集团推出基于中科蓝讯产品的蓝牙音箱开发板方案
2024年1月9日, 致力于亚太地区市场的国际领先半导体元器件分销商--- 大联大控股 宣布,其旗下世平推出基于中科蓝讯(Bluetrum)AB5301A的蓝牙音箱开发板方案。 图示1-大联大世平基于中科蓝讯产品的蓝牙音箱开发板方案的展示板图 在蓝牙技术的持续迭代下,蓝牙音箱作为一种方便、小巧的无线音频设备越来越受到人们的欢迎。其凭借便捷的连接方式、卓越的音质以及广泛的兼容性,不仅可以为消费者带来出色的音乐体验,还可以作为智能家居的中心控制器,通过语音控制和远程控制,实现家居设备的智能管理。基于此背景,大联大世平推出基于中科蓝讯AB5301A微控制器的蓝牙音箱开发板方案,该方案可助力开发者快速完成蓝牙音箱
[模拟电子]
iTOP-4412开发板Linux系统下使用wifi模块配置
精英版在 linux 下使用 wifi,需要进行下面的配置: 首先用户在拿到光盘资料以后查看下光盘里面的“linux”- ”root_xxxxxxxx.tar.gz”文件,其中的“xxxxxxxx” 代表linux系统的版本日期, 迅为提供的支持linux下wifi的系统版本是 “root_20150422.tar.gz” ,也就是 2015-04-22 以后的版本(括 20150422)是支持 wifi 模块的。 插上 wifi 模块,启动开发板进到 uboot 命令行,使用 fastboot 烧写光盘提供的支持 wiif 模块的 linux镜像到开发板上,烧写完成后重启开发板进入到 linux 文件系统,如下图:
[单片机]
开发板与主机ping不通的解决方案(mini2440)
方案:组建一个由windows、linux和开发板组成的局域网 1.准备工作 虚拟机使用桥接方式 用根网线将开发板和主机直接连接起来(不经过交换机) 关闭linux的防火墙: 关闭selinux: 关闭windows防火墙 断掉外网(无线) 2.ip设置 将linux的ip地址设置为静态ip:192.169.1.100 网关:192.169.1.1 设置子网掩码码为:255.255.255.0 执行下面命令更改文件内容和下面相同即可 设置静态ip详细步骤:http://jingyan.baidu.com/article/455a99508be7cda167277865.html 设置开发板的ip
[单片机]
Adafruit 创客级Feather nRF52 Bluefruit开发板登陆贸泽
电子网消息,专注于新产品引入 (NPI) 与推动创新的领先分销商贸泽电子(Mouser Electronics)即日起开售Adafruit的Feather nRF52 Bluefruit。Feather nRF52 Bluefruit属于Adafruit的Feather系列,是一种独立的可堆叠开发板,兼容Arduino并采用低功耗蓝牙®技术,同时内置有USB和电池充电接口。使用强大的板载Nordic片上系统(SoC),工程师和创客可以直接在开发板上运行代码,而不需要外部微控制器,因此可以为各种物联网(IoT)、可穿戴设备、照明、MIDI音频及其他应用提高性能并降低能耗。 贸泽电子供应的Adafruit Feather nRF5
[半导体设计/制造]
OK6410A 开发板 (四) 1 OK6410A 裸机LCD RGB接口
代码已经上库,https://github.com/lisider/OK6410/tree/master/lcd 硬件 lcd 控制器侧 14 Display Controller // 位于S3C6410 datasheet Page455 寄存器范围 : 0x77100000 - 0x77100344 寄存器个数 : 105个 硬件接口 : 支持 RGB 和其他三种接口(I80接口/NTSC/PAL标准电视编码器接口/IT-R BT. 601 接口) lcd 侧 型号: WXCAT43-TG3#001 4.3 寸 屏 规格书与原理图 屏幕显示区域 : 95.04 * 53.856 mm 对角线(可显示区域) : 4.
[单片机]
W800开发板和网页的交互(存取网页上的字段)
前言 前天,将W800工程中加入了一个测试网页(W800开发板修改网页配置), 怎么让W800开发板和这个网页交互。昨天研究了1天,搞定。 网上W800应用层编程资料特别少,就找到一处,那个同学就讲了一下思路。对于实际的工程维护,用处不大。 winnermicro官方SDKwm_sdk_w800_20210513中带的转过的数组文件(wm_sdk_w800_20210513srcappwebfsdata_lwip.c)和工程中自带的html(wm_sdk_w800_20210513srcappwebfs_basic*.html)并不匹配,将工程自带的html转成fsdata_lwip.c后,编译出的工程无法实现网页字段的交
[单片机]
LOGi FPGA 开发板:可在树莓派和Beaglebone上开发FPGA
最近在Kickstarter网站上,Valent F(x)团队正在为LOGi FPGA开发板的生产筹备资金。 LOGi 是fpga开发与arm平台的结合。Valent F(x)团队开发了可以支持树莓派和Beaglebone上开发的FPGA开发板,LOGi系列。它让FPGA开发与入门变得简单,同时趋于统一现存硬件接口和开源开发平台,如树莓派和Beaglebone Black这两个流行的开源开发平台。 Valent F(x)团队分别针对树莓派和Beaglebone Black开发了两个版本的LOGi板,如下图的LOGi-Pi和LOGi-Bone。LOGi-Pi的FPGA板的底部连接器可与树莓派的GPIO头连接,LOGi-Bone的
[嵌入式]