WINCE7中RTC时钟芯片BQ32K的开发

最近客户反映我们提供的WINCE7系统的RTC时钟设置后,掉电不能保存,总是回到2000年的起始年份,

我们的工业触摸屏使用的是AM3354方案,查看了原来的WINCE7系统源码,打开文件:

C:\WINCE700\PLATFORM\AM33X_BSP\SRC\OAL\OALLIB\init.c

发现在OEMInit函数中调用的是TI自己的RTC驱动函数OAL3XX_RTCInit,这个函数在路径为:

C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\OAL\OALRTC

中的:oalrtc.c文件被定义,调试发现该文件中RTC_GetTime函数读出的寄存器值一直是0,查看网上资料也有

很多人反映TI的AM3354的RTC时钟有问题,后来进一步检查了硬件,备用纽扣电池正常3.0V,32.768的晶振

没有直接接入到AM3354,而是接入到了BQ32000这款RTC芯片,BQ32000以I2C的方式与AM3354连接,从

地址为0X68,于是只能自己编写BQ32000的WINCE7驱动了,

1.创建目录和makefile,首先在目录:

C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\OAL

下创建文件夹:BQ32K_OALRTC

拷贝目录:

C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\OAL\OALRTC

中的makefile到BQ32K_OALRTC

2.编写sources文件,在BQ32K_OALRTC目录下创建并编写sources文件,内容如下:

!INCLUDE "..\..\sources.inc"
TARGETNAME=am33x_bq32krtc
TARGETTYPE=LIBRARY
SOURCES= oalrtc.c

3.编写源码文件,在BQ32K_OALRTC目录下编写oalrtc.c文件,完成驱动的开发

该文件需要实现函数:OALBQ32KRTCInit

4.修改文件:

C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\OAL\dirs

增加目录BQ32K_OALRTC,内容如下;

DIRS=\
CPUIDLE\
OALI2C\
TIMER\
OALRTC\
BQ32K_OALRTC\

5.创建头文件,在目录:

C:\WINCE700\PLATFORM\COMMON\src\soc\COMMON_TI_V1\COMMON_TI_AMXX\INC

下创建头文件:

bq32k_rtc.h

导出函数:OALBQ32KRTCInit

6.修改上述init.c文件,注释掉语句:

OAL3XX_RTCInit(AM33X_RTCSS_REGS_PA, IRQ_RTCALARM);

新增语句:

OALBQ32KRTCInit(....);//(内容略过)

7.编辑文件:

C:\WINCE700\PLATFORM\AM33X_BSP\SRC\OAL\OALEXE\sources

注释掉以下语句:

#    $(_PLATCOMMONLIB)\$(_CPUINDPATH)\am3xx_oalrtc.lib \

在下一行添加如下语句:

$(_PLATCOMMONLIB)\$(_CPUINDPATH)\am33x_bq32krtc.lib \

修改完成后,打开VS2008的SLN工程,重新编译解决方案即可。

有需要这部分源码的朋友可以+我QQ2362317758

时间: 2024-11-05 18:54:43

WINCE7中RTC时钟芯片BQ32K的开发的相关文章

ARM裸板开发:07_IIC 通过IIC总线接口读写时钟芯片时间参数实现的总结

问题一:程序直接在iRAM内部可正常执行,而程序搬移(Nand ->SDRAM)之后,就不能正常运行了 #define NAND_SECTOR_SIZE 2048 /* 读函数 */ void nand_read(unsigned char *buf, unsigned long start_addr, int size) { int i, j; //if ((start_addr & NAND_BLOCK_MASK) || (size & NAND_BLOCK_MASK)) if

张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231

原文:张高兴的 Windows 10 IoT 开发笔记:RTC 时钟模块 DS3231 GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DS3231 注意:不包含闹钟设置

SylixOS中RTC设备驱动

1.概述 本文档基于SylixOS-EVB-i.MX6Q验证平台,介绍SylixOS中RTC设备驱动实现过程,可作为在SylixOS集成开发环境下进行字符设备驱动开发的参考. 2.RTC设备驱动 2.1硬件原理 实时时钟(RTC)的主要功能是在系统掉电的情况下,利用备用电源使时钟继续运行,保证不会丢失时间信息. i.MX6Q验证平台上使用的是外置实时时钟集成电路ISL1208.硬件接线如图 2.1所示. 图 2.1 RTC硬件接线 图中,X1和X2为内部反向放大器的输入和输出引脚,要求外置一个3

(16)给树莓派B+ 安装一个实时时钟芯片DS1302

在这里首先感谢glgoo在google被墙的情况下提供搜索功能,还要感谢 http://wiringpi.com/ 以及github,尽管自己眼瞎,几经波折还是发现了尘封已久的少林"七十二绝技",没错,每种绝技都能克制一个树莓派GPIO控制外设的问题,七十二绝技的核心就是wiringpi这个为Pi GPIO写的C语言库了,而每种绝技则暗藏在wiringPi/examples/目录下,这里就不一一罗列了,大家想学什么招式,就去看每个example,都非常简短. 其实早在第9篇文章&quo

STM32 RTC时钟的配置

1) 使能电源时钟和备份区域时钟. RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能电源时钟和备份区域时钟. 2) 取消备份区写保护. 要向备份区域写入数据,就要先取消备份区域写保护 ,否则是无法向备份区域写入数据的. PWR_BackupAccessCmd(ENABLE); //使能 RTC 和后备寄存器访问 3) 复位备份区域,开启外部低速振荡器. BKP_DeInit();//复位备份

Linux应用层系统时间写入RTC时钟的方法

Linux内核版本:linux-3.0.35 开发板:i.MX6S MY-IMX6-EK200 系统:Ubuntu12 前言:之前写过一篇关于如何通过应用层程序读取系统时间的blog,今天再写一篇如何写入并保存RTC时钟的blog吧. 一.写入时间 1.预备知识: a.mktime 头文件:#include <time.h> 函数:time_t mktime(struct tm *timeptr) 函数说明:mktime()用来将timeptr所指的tm结构体数据换成从公元1970年1月1日0

玩转 RTC时钟库 DS3231

1.前言 ????接着博主的上一篇 玩转 RTC时钟库 + DS1302,这一篇我们重点讲解DS3231时钟模块.没有看过上一篇的同学,麻烦先去阅读一下,因为很多理论基础已经在上一篇做了详细讲解,这里不再重复. DS3231 2.DS3231介绍 2.1 为什么使用DS3231 ????常用的DS1302需要使用外置晶振,且没有温度补偿,误差较大.这就促使了更高精度的时钟芯片 -- DS3231. ????DS3231内置晶振且有内部温度补偿,误差可做到1分钟每年.说白了,精度更高. 2.2 D

数字设计中的时钟与约束

最近做完了synopsys的DC workshop,涉及到时钟的建模/约束,这里就来聊聊数字中的时钟(与建模)吧.主要内容如下所示: ·同步电路与异步电路: ·时钟/时钟树的属性:偏移(skew)与时钟的抖动(jitter).延时(latency).转换(transition)时间: ·内部时钟: ·多路复用时钟: ·门控时钟: ·行波时钟: ·双沿时钟: ·Design Compiler中的时钟约束. 1.同步电路与异步电路 首先来谈谈同步电路与异步电路.那么首先就要知道什么是同步电路.什么是

DS1337 时钟芯片在 C8051F 上的实现

一.DS1337介绍 DS1337串行实时时钟芯片是一种低功耗.全部采用BCD码的时钟日历芯片,它带有两个可编程的定时闹钟和一个可编程的方波输出.其地址和数据可通过I2C总线串行传输,能提供秒.分.时.日.星期.月和年等信息. 1.1 DS1337的引脚说明 DS1337的引脚排列示意图如图1所示.各引脚的功能如下: 图1 DS1337引脚示意图 VCC,GND:直流电源和接地端,VCC的输入范围在1.8~5.5V之间.X1,X2:标准的32.768kHz的石英晶振接入端,内部晶振电路设计要求晶