一. EPIT定时器实验介绍
EPIT定时器
特点如下:
1. EPIT是 32位的一个向下计数器。
开启定时器以后,计数寄存器会每个时钟减1,如果和比较寄存器里面的值相等的话就会触发中断。
2. EPIT的时钟源可以选择。
EPIT 共有 3 个时钟源可选择,分别为 ipg_clk、ipg_clk_32k 和 ipg_clk_highfreq。
我们选择 ipg_clk=66MHz(由参考手册第24章框图可知)。
3. 12 位的分频值。
可以对时钟源进行分频,12位的分频器,0~4095分别代表1~4096分频。
4. 当计数值和比较值相等的时候产生中断。
EPIT定时器两种工作模式:Set-add-forget模式与 free-runing模式。
Set-add-forget模式:在此模式下 EPIT 的计数器从加载寄存器 EPITx_LR 中获取初始值。
free-runing模式:当计数器计数到0以后会重新从0XFFFFFFFF开始计数,并不是从加载寄存器EPITx_LR 中获取数据。
IMX6ULL有两个 EPIT定时器,每个定时器有 5个寄存器。
二. EPIT定时器原理
IMX6ULL有两个 EPIT定时器。每个定时器有五个寄存器。
EPIT_CR 寄存器(控制寄存器)
bit0:设置EPIT使能
bit1:设置计数器的初始值加载方式。
bit2:使能比较中断。
bit3:工作模式选择,Set-add-forget模式或者 free-runing模式。
我们选择 Set-add-forget模式。
bit4~bit15:设置分频值。
Bit25:24:设置时钟源的选择。
我们设置为1,那么EPIT的时钟源就为ipg_clock=66MHz
EPIT_SR寄存器:(状态寄存器)
bit0:表示中断状态,写1清零。
当 OCIF位为1时,表示中断发生,为0时表示中断未发生。
注意:在使用中断时,中断处理结束后,需要清除中断标志位!!!
EPIT_LR寄存器:设置计数器的加载值。
计数器每次计时到 0 以后,就会读取 LR寄存器的值,重新开始计时。在加载寄存器设置值后,则定时中断时间就定下来了。
CMPR比较计数器:当计数器的值和CMPR相等以后,就会产生比较中断。
CPIT_CNR寄存器:计数器
每一个时钟周期,它的值减一。
总结:
本文主要介绍 IMX6ULL的EPIT中断定时器的原理,以及几个寄存器使用。下一篇开始编写代码,使用 EPIT中断定时器。