XMC™使用Dave4快速开发(二)定时器输入捕获

上篇博文中我们在Dave4中使用PWM APP配置了一队互补输出的PWM,在這篇博文中,我将使用CAPTURE APP来配置实现输入捕获功能。输入捕获功能可以用来测量脉冲宽度或者测量频率。XMC单片机的定时器模块,包括CCU4  CCU8,每个模块都有4个定时器片,其中的每个定时器片都可以同时用作输入捕获功能。 输入捕获,简单的说就是通过检测 边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值存放到对应的通道的捕获/比较寄存器里面,完成一次捕获。同时还可以配置捕获时是否触发中断等。

假如我们需要捕获输入信号的周期和占空比,一般的单片机捕获脉宽的方式是先设置输入捕获为上升沿检测,记录发生上升沿的时候定时器的值。然后配置捕获信号为下降沿捕获,当下降沿到来时,发生捕获再并记录此时的定时器值。这样,前后两次计数值之差,就是高电平的脉宽,同时通过计数频率计算出高电平脉宽的准确时间。那在XMC的单片机中,我们可以直接使用CAPTURE APP和官方提供的库来捕获信号周期长度和占空比。 

这里我们选择使用CAPTURE APP来将CCU8_0的其中一个时间片配置成输入捕获模式来捕获信号周期和占空比。

1. 添加CAPTURE APP,我们依旧是直接搜索CAPTURE,添加后自动命名为Capture_0,双击打开可以看到如下画面。
在General Setting中我们可以选择CCU模块,在Timer Resolution Configuration可以选择定时器的频率,这里我们就Direct默认使用最大频率48MHz来计算。
在Desired Timer Resolution中选择分辨率。
在Capture Setting选择我们想要捕获的边沿信号跳动方向,周期长度和占空比只有在捕获边缘配置上升沿到上升沿或下降沿到下降沿时才可用。这里我们选择上升沿到上升沿。





2. 在Advanced Settings中我们可以选择输入源,我们这里选择GPIO
在Low pass filter configuraton中可以配置数字低通滤波器, 选择低通滤波器连续计数时钟周期的数量,输入信号需要在这些时钟周期内保持稳定举个简单的例子:假设 选择3个时钟周期的低通滤波器,且为上升沿触发,那么在捕获到上升沿的时候,再以设定的频率,连续采样到 3 电平,如果都是高电平,则说明是一个有效的触发,如果开启了中断就会触发输入捕获中断。这样可以滤除那些高电平脉宽低于3个采样周期的脉冲信号,从而达到滤波的效果。这里我们不需要滤波处理,选择Disabled。



3. 在Interrupt Settings中我们可以选择是否触发中断和中断优先级配置,这里我们更名中断服务函数名称为CAPTUREIRQHandler



4. 在Pin Settings中我们可以选择输入引脚的方向类型



5. 最后我们右键点击CAPTURE_0 APP选择信号输入的IO引脚,然后点击Generate code 生成代码即可。
生成代码后,在Main.C中,可以直接添加我们命名的中断服务函数 void CaptureIRQHandler( void ){},发生捕获后会跳转到该中断。
想要得到周期和占空比的话,我们可以直接分别使用官方提供的函数CAPTURE_GetPeriod();CAPTURE_GetDutyCycle();非常好用。

看更多內容
上一篇:Infineon 图形化配置软件Dave4使用-针对XMC系列(一)
下一篇:XMC™使用Dave4快速开发(三)ADC实验

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

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

评论