arm9的时钟和定时器

时钟

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

1) 晶振

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

 

842584-20160308214023882-669334049.png

 

 

学习ARM9时钟的四步:

1) 晶振:12MHZ

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

3) PLL产生了哪些时钟:

MPLLFCLK HCLK PCLK

UPLLUCLK

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

FCLK:用于CPU核。

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

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

UCLK:用于USB设备。

 

 

下面是开机流程图:

842584-20160308214026975-1984431539.png

 

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

初始化流程如下:

1) 设置LOCKTIME

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

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

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

 

定时器

842584-20160308214030007-1797352764.jpg

 

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

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

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

 

定时器的工作流程如下:

1) 842584-20160308214031147-52019386.jpg程序初始的时候,设定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寄存器:控制寄存器





转载于:https://www.cnblogs.com/dchipnau/p/5256032.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值