arm9的时钟和定时器

Posted DChipNau

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arm9的时钟和定时器相关的知识,希望对你有一定的参考价值。

时钟

两种能够提供时钟的方式:

1) 晶振

2) PLL(也就是锁相环):通用PLL需啊一个晶振,和对晶体特定频率分频或倍频的锁相环电路。

 

 

 

学习ARM9时钟的四步

1) 晶振:12MHZ

2) 有多少个PLL:两个,MPLLUPLL

3) PLL产生了哪些时钟:

MPLLFCLK HCLK PCLK

UPLLUCLK

4) 时钟都用来做什么了:

FCLK:用于CPU核。

HCLK:用于AHB总线设备,如cpu核,存储控制器,中断控制器,DMA等。

PCLK:用于APB总线设备,如watchdogi2ciis等。

UCLK:用于USB设备。

 

 

下面是开机流程图

 

注:刚开机的时候,cpu核的频率为外部输入时钟的频率。

初始化流程如下:

1) 设置LOCKTIME

2) 设置MPLLCON寄存器,用于设置FCLKfin(外部输入的时钟)的倍数。

3) 设置CLKDIVN寄存器,用于设置FCLKHCLKPCLK三者的比例。

4) 设置CAMDIVN寄存器,用于将CPU的总线模式变为异步模式(因为FCLKHCLK不相等,按照芯片手册,应该做这个变化)。

 

定时器

 

从上图可以看出,arm9共有516位定时器,时钟源是PCLK

0号和1号使用一个预分频器,2,3,4号使用一个预分频器。第二级分频器功能输出5种频率的时钟:2分频,4分频,8分频,16分频或者外部时钟TCLK0/TCLK1

0-3号定时器有一个输出pin,故他们可以输出PWM,而4号定时器不能。

 

定时器的工作流程如下:

1) 程序初始的时候,设定TCMPBn(定时器的比较值),TCNTBn(初始计数值)这两个寄存器。

2) 设置TCON启动寄存器来启动定时器。这时TCMPBnTCNTBn的值被装入其内部寄存器TCMPnTCNTn中。在定时器n的工作频率下,TCNTn开始减一计数,其值可以通过读取TCNTOn得出。

3) TCNTn的值等于TCMPn的值时,定时器n的输出管脚TOUTn反转。

4) TCNTn的值等于0时,输出管脚再次反转。

5) TCNTn的值等于0时,如果TCON寄存器设置定时器n为自动加载,则TCMPBnTCNTBn的值被从新装入其内部寄存器TCMPnTCNTn中。

寄存器介绍:

1) TCFG0寄存器:设置预分频。

2) TCFG1寄存器,设置分频。

3) TCNTBn寄存器:初始计数值。

4) TCMPBn寄存器:保存比较值。

5) TCNTOn寄存器:读此寄存器可知道计数器目前值。

6) TCON寄存器:控制寄存器





以上是关于arm9的时钟和定时器的主要内容,如果未能解决你的问题,请参考以下文章

时钟和定时器

系统时钟和定时器

Linux内核时钟系统和定时器实现

深入理解定时器系列第三篇——定时器应用(时钟倒计时秒表和闹钟)

JZ2440 裸机驱动 第10章 系统时钟和定时器

定时器最大接口时钟我定时时钟区别