ok6410 定时器学习笔记

今日任务又要开始了,既然,那就!!



第一部分:s3c6410定时器设置流程详解

部分内容源于s3c6410datasheet第三章,官方的数据手册,是最好的学习档案。


系统控制器包含的特性有以下几个方面:
    三个PLL:ARM PLL, 主 PLL, 额外的PLL (这些模块用于使用特殊频率)。
    五种省电模式:正常,闲置,停止,深度停止和睡眠。
   五种可控制的电源范围:domain-V, domain-I, domain-P, domain-F, domain-S。
    内部子块的控制操作时钟。

    控制总线优先权。




下面开始启动定时器设置流程

1设置LOCKTIME,相关原理见下图


设置LOCK_TIME的寄存器



2,设置cpu进入异步模式。

关于异步模式说明:

当cpu时钟和内存时钟不一致时,则需要将cpu时钟设置为异步模式。

这一点在6410手册中并无介绍,但在2440手册中有相关描述

还有突然发现中文手册可能有些许不准确性,例如关于OTHERS寄存器的设置。英文手册和中文手册略有不同,以后尽量使用英文手册,可能是我才疏学浅。不能体会吧!






3配置相关寄存器

3.1首先是配置clk存器,完成pll产生频率之后的频率设定

CLK_DIV0 mainly controls the system clocks and special clocks of multimedia IP s.
CLK_DIV1 controls MMC, LCD, TV scaler, and UHOST clocks.
CLK_DIV2 controls SPI, AUDIO, UART, and IrDA clocks.

因此,我们今天只需要设置CLK_DIV0即可。寄存器如下图



bit16-bit31暂时我们用不了,只用设置bit0-15就可以了,关于s3c6410的最高频率,我在网上搜索结果为

s3c640的arm内核是arm1176JZF-S,在1.1v下最高可以跑532mhz,在1.2v下最高可以跑667mhz。在这里我也不知道我是1.1还是1.2,姑且让它跑532mhz就ok了



为了保证准确运行,从后向前设置,待设置完成之后,开启pll即可。


3.2设置PLL_CONF寄存器,产生532mhz或者相应频率的时钟。


pll_conf相关公式




3.3相关设置完全完成,将晶振切换成pll。









第二部分:代码示例

 假设在init.s中已经初始化相关硬件和看门狗及设置c语言堆栈。



下面文件为clock.s






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值