EDN China > 技术文章 > 嵌入式系统 > 操作系统 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

嵌入式系统中实时时间的获取

2009年08月13日 ?? 收藏0

  O 引言

  许多长时间无人值守的监控系统中,数据到来的时刻是不可预知的,数据及其出现时的时间信息要一并记录下来,以便后期的处理和查阅。在智能交通系统中,以交叉路口的闯红灯自动抓拍系统为例,系统抓拍的闯红灯车辆的图片中就要包含抓拍的时间信息,以作为日后交警进行违规处罚的有力证据。以往的自动抓拍系统都是用工控机搭建的,在其工控主板上有时钟芯片和板载电池,即使断电也不会丢失实时时间信息。但是,作为硬件资源丰富的通用型工业控制计算机,在具体的控制系统中,往往会有许多硬件资源被闲置,使得成本偏高。随着嵌入式技术的发展和逐步成熟,为了节约成本和提高系统的可靠性,大有用嵌入式取代通用型工控机的趋势。这就提出了一个问题:在嵌入式系统中,实时时间从何获得。

  本文将给出两种在嵌入式系统中获取实时时间的设计方法:使用时钟芯片方法和使用GPS接收机方法。

  1 使用时钟芯片获取实时时间

  在这种方案中,实时时钟芯片以美国DALLAS公司推出的DSl302芯片为例,嵌入式平台选用ATMEL的基于ARM920T内核的AT9lRM9200微处理器配以Linux一2.6.13嵌入式操作系统。

  1.1 时钟芯片概述

  DIP封装的DSl302共有8个引脚,Vccl和Vcc2分别是主电源引脚和备用电源引脚,当Vcc2>Vccl+0.2V时,由备用电源向时钟芯片供电。X1、X2是晶振连接引脚。GND接地。剩下的三个引脚用于与微控制器通信,它们是RST、SCLK、I/O。

  DSl302内部有31字节的静态RAM可用于记录重要数据、共有12个寄存器其中有7个用于存储时间和日期。更为详细的资料,可以参考DSl302的芯片手册。下面就DSl302读写操作中应注意的几点列举如下:

  1、所有的数据传送均是以发送8位的指令字节开始。指令字节的最高有效位(位7)必须是逻辑l,如果它为O,则不能把数据写入到DSl302中。

  2、RST输入引脚的两种功能:(1)接通控制逻辑,允许地址/命令序列送入移位寄存器:(2)提供了终止单字节或多字节数据传送的手段。当RST为高电平时,所有的数据传送使能,允许对DSl302进行操作。如果在传送过程中RST被置为低电平,则会立即终止此次数据传送,并且I/0引脚变为高组态。

  3、当把RST驱动至逻辑l时,SCLK必须为逻辑0。

  1.2 硬件电路设计

  DSl302采用双电源方式,系统正常工作时由板载电源统一供电,当系统断电或复位时由板载电池供电,以保证时钟芯片始终处于运行状态。

  微控制器AT9lRM9200的PBO、PBl0、PBll三个引脚用于与时钟芯片进行同步串行通信,因为这三个引脚在AT9lRM9200内部都是多功能复用的,所以在DSl302设备驱动程序的初始化代码中首先要把它们配置成通用I/O口。关于晶体振荡器,DS1302的芯片资料指出:32.768KHz的晶振可以直接连接到X1、X2引脚,同时外接晶振电路要有6PF的负载电容与内部震荡器配合运行。所以,在电路设计时X1、X2两引脚分别连接一个15pF的电容至地。硬件连接,如图1所示:

DSl302与处理器的连接

  1.3 Linux 下OSl302驱动程序设计

  Linux系统中有三种类型的设备:字符设备、块设备和网络设备。字符设备是指发送和接收数据以字符的形式进行,无需缓冲直接存取,在对字符设备发出读写请求后,实际的硬件I/0随即发生;而块设备则是对数据缓冲区进行读写并可以随机访问,操作是以块为单位。而网络设备与字符设备、块设备有很大的不同,用于对网络设备的控制和管理。DSl302显然属于字符设备。

  2.6版本的Linux内核和2.4版本存在很大的不同,在模块的开发和设计上也是如此。在这里使用的内核版本是Linux一2.6.13。首先,驱动程序作为一个模块可以动态加载进内核也可以动态的从内核中卸载掉,在加载和卸载的过程中实际伴随的是驱动程序向内核的注册与注销。在驱动程序的代码中会有两个函数分别在模块加载和卸载过程中调用DSl302_init()、DSl302_exit(),在其中再调用register_chrdev()、unregister_chrdev()用以向内核注册和注销一个设备驱动程序。在2.6内核版本中,用如下方法声明这两个函数给内核:

  Module_init(DS1302_init):

  Module_exit(DSl302_exit):

  在DSl302_init()函数中除调用字符设备的注册函数外,还有一个重要任务,就是配置需要用到的三条I/0口线:PBO、PBl0、PBll。配置过程包括:B端口控制器时钟使能、通用I/O口使能、输出使能、上拉电阻使能、三个口线上的同步数据输出使能,另外通过置PIOB_CODR寄存器使三个引脚输出低电平。代码如下:

程序


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

嵌入式? 实时时间? 时钟芯片? DSl302?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈