历史上的今天

今天是:2024年10月27日(星期日)

正在发生

2021年10月27日 | inux之ARM (I.MX6ULL) EPIT定时器详解

发布者:码农侠 来源: eefocus关键字:inux  ARM  I  MX6ULL 手机看文章 扫描二维码
随时随地手机看文章

定时器是最常用的外设,常常需要使用定时器来完成精准的定时功能, I.MX6U 提供了多种硬件定时器,有些定时器功能非常强大。我们从最基本的 EPIT 定时器开始,学习如何配置 EPIT 定时器,使其按照给定的时间,周期性的产生定时器中断,在定时器中断里面我们可以做其它的处理,比如翻转 LED 灯。


1、EPIT定时器简介

EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的定时器还有很多其它的功能,比如输入捕获、 PWM 输出等等。但是 I.MX6U 的 EPIT 定时器只是完成周期性中断定时的,仅此一项功能!至于输入捕获、 PWM 输出等这些功能, I.MX6U 由其它的外设来完成。


EPIT 是一个 32 位定时器,在处理器几乎不用介入的情况下提供精准的定时中断,软件使能以后 EPIT 就会开始运行, EPIT 定时器有如下特点:


①、时钟源可选的 32 位向下计数器。

②、 12 位的分频值。

③、当计数值和比较值相等的时候产生中断。

EPIT 定时器结构如下图所示:

上图中各部分的功能如下:


①、这是个多路选择器,用来选择 EPIT 定时器的时钟源, EPIT 共有 3 个时钟源可选择,ipg_clk、 ipg_clk_32k 和 ipg_clk_highfreq。

②、这是一个 12 位的分频器,负责对时钟源进行分频, 12 位对应的值是 0 ~ 4095,对应着1~4096 分频。

③、经过分频的时钟进入到 EPIT 内部,在 EPIT 内部有三个重要的寄存器:计数寄存器(EPIT_CNR)、加载寄存器(EPIT_LR)和比较寄存器(EPIT_CMPR),这三个寄存器都是 32 位的。EPIT 是一个向下计数器,也就是说给它一个初值,它就会从这个给定的初值开始递减,直到减为 0,计数寄存器里面保存的就是当前的计数值。如果 EPIT 工作在 set-and-forget 模式下,当计数寄存器里面的值减少到 0, EPIT 就会重新从加载寄存器读取数值到计数寄存器里面,重新开始向下计数。比较寄存器里面保存的数值用于和计数寄存器里面的计数值比较,如果相等的话就会产生一个比较事件。

④、比较器。

⑤、 EPIT 可以设置引脚输出,如果设置了的话就会通过指定的引脚输出信号。

⑥、产生比较中断,也就是定时中断。


EPIT 定时器有两种工作模式:

set-and-forget 和 free-running,这两个工作模式的区别如下:

set-and-forget 模式:

EPITx_CR(x=1, 2)寄存器的 RLD 位置 1 的时候 EPIT 工作在此模式下,在此模式下 EPIT 的计数器从加载寄存器 EPITx_LR 中获取初始值,不能直接向计数器寄存器写入数据。不管什么时候,只要计数器计数到 0,那么就会从加载寄存器 EPITx_LR 中重新加载数据到计数器中,周而复始。


free-running 模式:

EPITx_CR 寄存器的 RLD 位清零的时候 EPIT 工作在此模式下,当计数器计数到0以后会重新从0XFFFFFFFF开始计数,并不是从加载寄存器EPITx_LR中获取数据。


接下来看一下 EPIT 重要的几个寄存器,第一个就是 EPIT 的配置寄存器 EPITx_CR,此寄存器的结构如下图所示:

寄存器 EPITx_CR 我们用到的重要位如下:

image.png

寄存器 EPITx_SR 结构体如下图 所示:

寄存器 EPITx_SR 只有一个位有效,那就是 OCIF(bit0),这个位是比较中断标志位,为 0 的时候表示没有比较事件发生,为 1 的时候表示有比较事件发生。当比较中断发生以后需要手动清除此位,此位是写 1 清零的。


寄存器 EPITx_LR、 EPITx_CMPR 和 EPITx_CNR 分别为加载寄存器、比较寄存器和计数寄存器,这三个寄存器都是用来存放数据的,很简单。


寄存器 EPITx_LR结构体如下图 所示:

寄存器 EPITx_CMPR 结构体如下图 所示:

1.1、总结

通过上面的分析,EPIT 的配置步骤如下:


1、设置 EPIT1 的时钟源设置寄存器 EPIT1_CR 寄存器的 CLKSRC(bit25:24)位,选择 EPIT1 的时钟源。


2、设置分频值设置寄存器 EPIT1_CR 寄存器的 PRESCALAR(bit15:4)位,设置分频值。


3、设置工作模式设置寄存器 EPIT1_CR 的 RLD(bit3)位,设置 EPTI1 的工作模式。


4、设置计数器的初始值来源设置寄存器 EPIT1_CR 的 ENMOD(bit1)位, 设置计数器的初始值来源。


5、 使能比较中断我们要使用到比较中断,因此需要设置寄存器 EPIT1_CR 的 OCIEN(bit2)位,使能比较中断。


6、设置加载值和比较值设置寄存器 EPIT1_LR 中的加载值和寄存器 EPIT1_CMPR 中的比较值,通过这两个寄存器就可以决定定时器的中断周期。


7、 EPIT1 中断设置和中断服务函数编写使能 GIC 中对应的 EPIT1 中断,注册中断服务函数,如果需要的话还可以设置中断优先级。最后编写中断服务函数。


8、使能 EPIT1 定时器配置好 EPIT1 以后就可以使能 EPIT1 了,通过寄存器 EPIT1_CR 的 EN(bit0)位来设置。通过以上几步我们就配置好 EPIT 了,通过 EPIT 的比较中断来实现 LED0 的翻转。

关键字:inux  ARM  I  MX6ULL 引用地址:inux之ARM (I.MX6ULL) EPIT定时器详解

上一篇:Linux之ARM Cortex-A7 中断系统详解
下一篇:Linux之ARM(IMX6U)裸机主频和时钟配置

推荐阅读

集微网消息 (文/小北)10月25日,特斯联宣布完成B1轮12亿元人民币融资,本轮融资由光大控股、IDG资本领投,商汤科技跟投。特斯联是光大控股孵化的高科技创新企业,以人工智能+物联网应用技术为核心,致力于打造中国最大的城市级智能物联网平台。早在去年7月,特斯联就获得了A轮5亿元人民币融资。据光大控股执行董事兼首席执行官陈爽表示,特斯联是光大控...
据外媒AppleInsider报道,苹果周五发布了其“Privacy on iPhone”系列中的最新隐私广告,其中详细介绍了存储在移动设备上的个人敏感数据宝库,并巧妙地暗示iPhone可能是确保信息安全的唯一方法。   短短一分钟的广告被发布在苹果的官方YouTube频道上,其标题为“ iPhone上的隐私-就这么简单”,这是该公司针对隐私的商业广告系列的最新一则广...
据 MacRumors 报道,苹果 iPhone 12 系列引入了通过更快的 5GHz Wi-Fi 进行个人热点连接的支持,而之前的 iPhone 则是使用 2.4GHz Wi-Fi。  所有 iPhone 12 机型都默认启用了 5GHz Wi-Fi 上的个人热点。在这些设备的设置>个人热点菜单中,有一个新的“最大化兼容性”开关,启用后会将个人热点恢复到 2.4GHz Wi-Fi,苹果指出,这可能...
日前,由丰田汽车公司出资的联合燃料电池系统研发有限公司(FCRD)和华丰燃料电池有限公司(FCTS)将开始销售首个在国内面向商用车开发、生产的燃料电池系统“TL Power 100”。自去年8月,由北京亿华通科技股份有限公司、丰田、中国一汽、东风、广汽、北汽共同成立以来,基于亿华通、丰田的最新技术以及商用车企业的经验,进行了更贴近中国商用车的燃料...

史海拾趣

问答坊 | AI 解惑

FCC禁用頻率

现提供一些参数供大家参考:FCC禁用頻率!…

查看全部问答∨

门禁电锁基本知识

摘要:门禁用的电锁是门禁系统的重要组成部分,是门禁系统的执行机构和关键设备,如果把门禁系统比做一个人的话,电锁就好比人的手和脚,关系着整个门禁系统的稳定性。如果一个门禁系统控制器和读卡器都不错,如果电锁的质量有问题,同样会引起门打 ...…

查看全部问答∨

开关电源全套

开关电源全套 [ 本帖最后由 文浩 于 2009-7-10 10:16 编辑 ]…

查看全部问答∨

招聘:助理研究员或博士后1-2名

招聘:助理研究员或博士后1-2名,条件如下: 1、        数字信号处理、电子或相关专业,博士毕业。 2、        具有3年或以上嵌入式系统设计经验,精通XILINX或ALTERA 等厂家FPGA芯片的结构和设计流程 ...…

查看全部问答∨

uc/gui+uc/os-ii 能不能在AXD里仿真?

uc/gui+uc/os-ii 在ADS里能不能调试? 我调试时为什么老是卡到某个地方呢? 要是不能在AXD里仿真,那怎么检测代码实现的效果呢,要一次一次的烧录到开发板里么?…

查看全部问答∨

LED矿灯应用解析

目前LED单位光通量的大幅提高,使大功率LED照明应用在更多场合成为可能。因该技术在研发成本、技术应用、使用观念等方面的原因,造价还比较高,但LED照明固有的诸如节能、长寿、安全、环保、免维护等一系列优势,使其作为一种应用趋势,替代传统 ...…

查看全部问答∨

电源块为什么会烧掉 ?

手机充电接口为USB口,所以自己DIY一个充电器,一端连5V电源块,一端接USB口的+ -极端(数据D+D-空置),插入手机进行充电,结果冲到一半电源块烧掉了,手机安然无恙,很不理解为什么,电源块5V 最大电流3A的 我知道一般充电器都是限流500MA的,是 ...…

查看全部问答∨

有没有FSMC的中文文档

                                 FSMC最近看的晕里糊涂的?有没有什么中文文档而且讲清楚一点的呢?有的话,哪位说一说在哪里?…

查看全部问答∨

加密IC

大家好!我是新人!想了解一下加密IC!能不能给与我一些帮助!或者有用的一些学习资料!谢谢大家!…

查看全部问答∨

关于adc

问个东西,是否可以这样在,先adc1_channel1工作1分钟,然后切换到adc1_channel2工作1分钟,再切换到adc1_channel2工作1分钟,不停的循环往复,希望可以看到源代码,我那边有份错误的代码,至少没有得到应该的数据,方面的话可以交流一下,我qq 109 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved