前言
- 了解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状态
这里就不分析代码了,理解了原理到时候需要用到操作对应地寄存器就行。
总结
这部分的代码,后面有机会和大家一起分析