《Windows CE嵌入式开发入门——基于Xscale架构》第2章 系统时钟

本文详细介绍了PXA255处理器中的实时时钟RTC和OS时钟控制器的工作原理及寄存器配置,包括RTC的RTC精确调整寄存器、RTC闹钟寄存器、RTC计数寄存器和RTC状态寄存器,以及OS时钟匹配寄存器、中断使能寄存器和看门狗使能寄存器等。此外,还探讨了PWM输出的运行机制和相关寄存器控制。
摘要由CSDN通过智能技术生成

电子系统中,时钟是一个关键的要素,尤其在手持设备中,时钟系统的设计与系统的性能和功耗有直接关系。PXA255提供了丰富的时钟系统的控制能力,能有效地实现性能和功耗的平衡。

2.1  实时时钟RTC

在介绍时钟机制之前,先要说明一下PXA255上的时钟系统。PXA255上的时钟系统主要包含以下5个模块:

n     32.768kHz振荡器;

n     3.6864MHz振荡器;

n     可编程频率核心锁相环PLL

n     95.85MHz固定频率外设锁相环PLL

n     147.46MHz固定频率锁相环PLL

其中32.768kHz3.6864MHz晶振将与本书讲解的模块有密切联系。

如图2-1所示的32.768kHz晶振可以用来驱动RTCPWM等模块。但是这个晶振在硬件复位后是被屏蔽的,系统使用3.6864MHz晶振作为时钟源。因此需要软件来设置寄存器,使这个晶振工作。

2‑1  PXA255时钟系统

3.6864MHz晶振是系统的主要时钟源,可以用来驱动大部分的模块。在没有32.768kHz晶振的情况下,可以将其分频使用。

一个实时时钟是系统在关闭时也能追踪、记录时间的时钟。它经常以集成电路芯片的形式嵌入在系统中。实时时钟可以用于许多种类的计算机,尤其在嵌入式系统中。

一般情况下,实时时钟是依靠备用电池供电的,并不和外部电源直接相连。因此在断电后,仍然能工作,而相比之下,其他依靠外部电源供电的时钟在系统断电后就无法工作了。希望读者不要把一个计算机的实时时钟与其CPU时钟相混淆。

2.1.1   实时时钟的运行原理

PXA255一共提供了以下几个实时时钟控制/状态寄存器:

n     RTC精确调整寄存器(RTTR);

n     RTC闹钟寄存器(RTAR);

n     RTC计数寄存器(RCNR);

n     RTC状态寄存器(RTSR)。

RTTR为时钟提供了修正的功能;RTAR为闹钟寄存器,存放了引发中断的时间限制数;RCNR为计数计数器;RTSR为状态寄存器,可以用来触发中断。

在硬件复位或者看门狗复位后,RCNR计数恢复为0,然后在每赫兹时钟的每个下降沿递增1。由于1赫兹产生的脉冲的高电平区只能维持32kHz周期的宽度,而RCNR的递增操作发生在赫兹时钟产生上升沿后的32kHz周期的时间点上,因此看起来就像是在赫兹时钟下降沿递增的。这个寄存器是读/写寄存器,当要把特定的计数值写入这个寄存器时,直接操作即可。RTSR计数器不受系统的睡眠或者是空闲状态改变的影响。

除了计数器以外,PXA255还提供了闹钟寄存器RTAR,可以向RTAR中写入特定的值,每当RCNR计数器递增后就会和RTAR进行比较,如果值相等,则触发中断RTSR[AL](如果中断没有被屏蔽的话)。

赫兹时钟是由两个时钟源中任何一个的频率进行特定运算后得到的频率。在PX255的系统中,要求使用3.6864MHz的晶振和32.768kHz的晶振。系统中可以同时使用这两个时钟源或者其中一个,如果是使用3.6864MHz晶振的话,应当对其进行分频到32.914kHz

可以通过编程来指定产生赫兹时钟的除法的参数,这同时也提供给开发人员修正时钟误差的机会,关于修正误差,我们将在后续的章节中讨论。

2.1.2   RTC精确调整寄存器(RTTR

通过设置RTTR寄存器,可以调整赫兹时钟的频率。这个寄存器在复位后的值为0x0000_7FFF,如果晶振为非常精确的32.768kHz的话,那么正好将产生1Hz的输出。如果设置成其他值,也同样会使赫兹时钟产生其他的频率。如果使用的晶振不是32.768kHz的话,也可以通过这个寄存器的值的改变来弥补。在后面的章节中我们将介绍如何计算赫兹时钟的频率。

RTTC中的一次写入操作将会使RCNR自增。在RTTR中,有一部分被保留的位,这些位应当被设置成0,任何对它们的读操作都将被忽略。RTTR只能通过硬件的重启来复位,不像RCNR可以通过软件方式来复位。RTTR的第32位为Lock功能,如果被置位的话,那么本寄存器就变成只读的了,这样可以更好地保护数据。第32位只能通过硬件复位来清除。RTTR的定义如图2-2与表2-1所示。

2-2  RTTR

2-1                                                                 RTTR定义

   

   

   

<31>

LCK

调整值的锁存位
0-RTTR
值允许被改变
1-RTTR
值不允许被改变

<30:26>

-

保留

<25:16>

DEL

调整用的删除计数
这个值代表了32MHz时钟被删除的数目

<15:0>

CK_DIV

时钟除数
这个值代表了32MHz时钟周期数,加1等于赫兹时钟周期

2.1.3   RTC闹钟寄存器(RTAR

RTAR闹钟寄存器是一个32位的寄存器。处理器可以进行读/写操作。

在赫兹时钟的每个上升沿,本寄存器的值都将和RCNR的值进行比较,如果它们相等,并且RTSR[ALE]被置位,则RTSR[AL]被设置成1,引发中断。

RTAR寄存器在复位后,值为0x0

RTAR的定义如图2-3与表2-2所示。

2‑3  RTAR

2-2                                                                 RTAR定义

   

   

   

<31:0>

RTMV

RTC闹钟触发值
这个值将会和RTC计数器的值比较

2.1.4   RTC Counter RegisterRCNR

RCNR是一个读/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值