【i.MX RTXXX 系列】i.MXRT500 输入捕获功能

关键字 :NXPi.MX RT500

本文将介绍 i.MXRT500 输入捕获功能。

  • Ctimer 定时器

 RT500 有 5 个 Ctimer——Ctimer0-4;每个 timer 都有 4 路捕获通道:

 

 

输入捕获功能引脚复用名称为 CTIMER_INPx ,这些引脚都可以通过 INPUTMUX 模块复用到具体的 timer 通道,输入捕获的时间可以通过 CR 寄存器获得。

 

  • 相关配置

接下来说明如何配置相关参数:

Ctimer 主要用到的寄存器有三个:Count Control Register (CTCR)、Capture Control Register (CCR)、Capture Register (CR0 - CR3) ,

 

Count Control Register (CTCR):

 



这里一般配置 bit7:5, bit 4, bit 1:0 ,依次为 SELCC 、ENCC、CTMODE,

CTMODE:选择计数模式,分为定时器计数,还是外部输入计数,如果选择外部,则 bit3:2 需要进行选择使用哪个 capture 通道;

ENCC:使能边沿触发清零定时器计数,脉冲输入捕获一般两个边沿,我们需要得到两个边沿之间的计数器,从而计算器时间,该功能主要是在第一个边沿开始时,将计数器清零重新计数,待第二个边沿触发结束,此时的计数器值就是这一段的计数值,这样就不需要我们去读取两个边沿的计数值,然后相减得到差值,再计算时间,省去了这些步骤;

SELCC:设置第一次边沿触发,哪个通道的上升沿或者下降沿;

 

Capture Control Register (CCR):

 

此寄存器功能主要设置第二次边沿触发,以及触发后是否产生中断,这个根据需求选择;

 

 

Capture Register (CR0 - CR3)



此寄存器位捕获到电平的计数器的值,这里需要根据 CRx 的计数值 / (Ctimer 时钟频率 / 1000)来计算出时间,这种计算的时间单位为 ms;

 

  • 实战演练

这次开发环境试用 NXP 官方的 IDE MCUXpresso ,首先导出 Ctimer 的例程:

 

 

定义相关宏和一些变量:


 

定义使用到捕获通道引脚,这里选择 PIO0_25 ,对应开发板上的 SW1:

 

 

 

调用 API 进行相关配置:

 

 

中断回调函数处理:

读取计数值,计算时间

 

 

下载到开发板后按下按键 sw1 :

 

 

 

 

  • 注意事项

 

在这里需要注意的一点就是引脚的配置,RT 系列与之前的 LPC 系列有所不同,LPC 系列配置为输入功能后一般不需要额外配置其它,下图为 RT500 的引脚功能框图:

 

 



输入捕获功能的时候需要将该位使能,否则输入无效。

 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论