Linux应用开发(九)——系统时钟和定时器


前言

  • 了解S3C2410的时钟体系结构
  • 掌握通过设置MPLL改变系统时钟的方法
  • 掌握在不同的频率下设置存储控制器的方法
  • 掌握PWM定时器的用法
  • 了解WATCHDOG定时器的用法

一、时钟体系及各类时钟部件

S3C2410时钟体系

S3C2410的时钟控制逻辑既可以外接晶振,然后通过内部电路产生时钟源;也可以直接使用外部提供时钟源,他们通过引脚的设置来选择。时钟控制逻辑给整个芯片提供3种时钟:

  • FCLK用于CPU核
  • HCLK用于AHB总线设备,比如CPU核、存储控制器、中断控制器、LCD控制器、DMA和USB主机模块等;
  • PCLK用于APB总线上的设备,比如WATCHDOG、IIS、I^2C、PWM定时器、MMC接口、ADC、UART、GPIO、RTC和SPI。

AHB总线主要用于高性能模块(CPU,DMA、DSP等)之间的连接;
APB总线主要是用于低带宽的周边外设之间的来连接(UART,I^2C等)

MPLL

PLL是时钟控制逻辑,通过设置PLL来改变时钟的频率。S3C2410有两个PLL:MPLL和UPLL
MPLL:用于设置FCLK、HCLK、PCLK。
UPLL:用于USB设备。(两者的设置方法相似,就是设置寄存器上面的微4位操作)

PWM定时器

作用:PWM即脉冲宽度调试,通过对周期内高低点平的所占时间长短(占空比)来调节GPIO的输出。

S3C2410的定时器部件完全一样,共有5个16位的定时器。其中定时器1,2,3有PWM(Pulse Width Modulation)功能,即它们都有一个输出引脚,可以通过定时器来控制引脚周期性的高、低电平变化;定时器4没有输出引脚。

定时器部件的时钟源为PCLK,首先通过两个8位的预分频器降低效率:定时器0、1共用第一个预分频器,定时器2,3,4共用第二个预分频器。预分频器的输出将进入第二级分频器,它们输出5种频率的时钟:2,4,8,16或则外部时钟TCLK0/TCLK1.每个定时器的工作时钟可以从这5种频率中选择。

这两个预分频都可以通过TCFG0寄存器来设置,每个定时器工作在那种频率下也可以通过TCFG1寄存器来选择。
定时器的结构
在这里插入图片描述

定时器的内部控制逻辑的工作流程
在这里插入图片描述

通过比较定时器设置值,和定时器的初始值,进行管脚的输出反转。通过初始值减一操作,减到相等时,进行翻转。减到0时再次反转。并从新装入我们的初始值。

WATCHDOG定时器

WATCHDOG定时器可以像一般16位定时器一样用于产生周期性的中断,也可以用于发出复位信号以重启失常的系统。它与PWM定时器结构类似
在这里插入图片描述

使用WATCHDOG定时器的“WATCHDOG”功能时,在正常的程序中,需要不断地重新设置WTCNT寄存器使得它不为0,这样可以保证系统不被重启,这样称为“喂狗”;当程序崩溃时不能正常“喂狗”,计数值达到0后系统将会被重启,这样程序将重新运行。为了克服各种干扰、避免各类系统错误时系统彻底死机,经常使用WATCHDOG功能

二、MPLL和定时器操作实例

程序设计思路

首先启动MPLL提高系统时钟,初始化存储控制器使SDRAM工作在HCLK下,然后将定时器0设为0.5s产生一次中断,在中断程序里改变LED状态

这里就不分析代码了,理解了原理到时候需要用到操作对应地寄存器就行。

总结

这部分的代码,后面有机会和大家一起分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jacky~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值