imx6ull General Purpose Timer (GPT)

本文详细介绍了NXP i.MX6ULL微控制器中的General Purpose Timer (GPT),包括其特性、操作模式、时钟源、输入捕获和输出比较功能,以及中断机制。GPT拥有32位计数器,可选择多种时钟源,支持输入捕获和输出比较中断。文章还涵盖了GPT的各种寄存器,如控制、预分频、状态、中断、输出比较和输入捕获寄存器,是了解和编程GPT的重要参考资料。
摘要由CSDN通过智能技术生成

一、overview

GPT有一个32位的向上计数器,可以将外部引脚上的事件捕获到GPT寄存器中,捕获触发可以编程设置为上升沿或下降沿触发,甚至双边沿触发。GPT还可以在输出比较引脚上产生一个事件,并当计时器达到编程值时产生一个中断。GPT有一个12位的预分频,来对多个时钟源进行分频。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1iNBT1y-1632660745309)(E:\u-boot\pic\GPT.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfXbX4V6-1632660745311)(E:\u-boot\pic\gpt clock.jpg)]

1.1 特性

① 一个带有时钟源选择的32位递增计数器,时钟源包括外部时钟。
② 两个具有可编程触发沿的输入捕捉通道。
③ 具有可编程输出模式的三个输出比较通道,还有一个“force compare”功能。
④ 可以通过编程,让它在低功耗(low power)和调试(debug)模式下运行。
⑤ 可以在捕获(capture),比较(compare)和翻转(rollover)事件时产生中断。
⑥ 两种计数模式:重新启动(restart)或自由运行(free-run)模式。

1.2 操作模式

① 重新启动计数模式(Restart mode):
在重启模式下(可通过GPT控制寄存器GPT_CR选择),当计数器达到比较值时,计数器将复位并从0x00000000重新开始计数。
重新启动功能仅与比较通道1相关联。对通道1的比较寄存器的任何写操作都将复位GPT计数器。这样做是为了避免在进行计数时将比较值从较高的值更改为较低的值时可能丢失比较事件。对于其他两个比较通道,当发生比较事件时,计数器不会复位。

② 自由运行模式(free-run mode):
在自由运行模式下,当所有三个通道发生比较事件时,计数器不会复位;而是,计数器继续计数直到0xffffffff,然后翻转(变为0x00000000)。

1.3 时钟

可以从4个时钟源中选择一个输入到预分频器的时钟,分别为:
① 高频参考时钟(ipg_clk_highfreq),
② 低频参考时钟(ipg_clk_32k),
③ 外围时钟(ipg_clk),
④ 外部时钟(GPT_CLK)
⑤ 晶体振荡器时钟(ipg_clk_24M)

时钟源选择的操作流程:
① 通过在GPT_CR寄存器中设置EN = 0来禁用GPT;
② 禁用GPT中断寄存器(GPT_IR);
③ 将输出模式配置为未连接/断开连接:往GPT_CR中的OM1,OM2,OM3写0;
④ 禁用输入捕获模式:往GPT_CR的IM1和IM2中写入零;
⑤ 在GPT_CR寄存器中将时钟源CLKSRC更改为所需的值;
⑥ 将GPT_CR寄存器中的SWR位置1;
⑦ 清除GPT状态寄存器(GPT_SR)(该寄存器是往相应位写1清0);
⑧ 在GPT_CR寄存器中设置ENMOD = 1,以使GPT计数器为0x00000000;
⑨ 在GPT_CR寄存器中启用GPT(EN = 1);
⑩ 启用GPT中断寄存器(GPT_IR)。

1.4 GPT 的输入捕获

​ GPT有两个输入捕获通道,每个输入捕获通道都有:一个专用的捕获引脚,捕获寄存器和输入边沿检测/选择逻辑。每个输入捕获功能都有一个状态标记位,并且可以向处理器发出中断服务请求。
​ 我们先设置好捕获引脚的边沿检测/选择逻辑,当该引脚上发生指定的边沿转换时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值