电平输入检测-定时器输入捕获

2024-03-28 22:44

本文主要是介绍电平输入检测-定时器输入捕获,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一,引入

二,具体结构

三,实现步骤

四,PWM输入模式


一,引入

        上篇博客,我们对于定时器的计数核心——时基单元作了细致的了解。这篇博文,我们来介绍定时器的四大功能模块之一——输入捕获模块。

        输入捕获模块,顾名思义,当外界有电平输入MCU时,定时器的输入捕获模块能够捕获到电平,进而通过时基单元(计数器),记录捕获的电平的时间、占空比等数据。

        了解了大体功能后,我们来具体了解输入捕获功能的具体结构与实现步骤。

二,具体结构

        图 2.1 为输入捕获功能的框图:

图 2.1 输入捕获模块

        此处,我们以通道 1 为例。

        TIMx_CH1为外界电平输入引脚,TIMx_CHy的定义引脚可在数据手册中的引脚定义目录查看(图2.2)。

图 2.2 引脚定义表

        注意到,在通道1至3上,连接着一个异或门。异或门的功能机理为“相异出1,相同出0”——当异或门的两个(或多个)输入端口的逻辑值不同时(一个为0,另一个为1),输出端口将输出高电平(逻辑1);而当输入端口的逻辑值相同时(都为0或都为1),输出端口将输出低电平(逻辑0)。这个异或门是用来连接三相无刷电机的霍尔传感器的,在此处不作说明。

/*

        本人曾写过一篇博客,介绍无霍尔传感器控制无刷电机换相(无感控制),原文指路:

        四轴-无刷电机无感控制(BLDC)-CSDN博客

*/

        不看异或门:电平通过TIMx_CH1端口进入定时器,通过输入滤波器和边缘检测器后,通过边沿检测,到达预分频器,最后到达捕获/比较寄存器。当发生有效的电平转换时(通过通道1的电平发生翻转,被捕获/比较寄存器检测到),计数器中的值传到捕获/比较寄存器中(输入比较模块框图解释)

        由上述语段,可以发现,捕获/比较寄存器(TIMx_CCRy)既需要检测电平变化,又需要储存计数器中的值,且捕获比较寄存器也有影子寄存器。(关于影子寄存器的内容,可参考本人上一篇博客,指路:机器人是怎么计时的(通用定时器 - 时基单元)-CSDN博客

       

        介绍一下输入捕获的中断。

        当捕获事件发生时,相应的CCxIF标志(捕获比较中断标志,只在需要中断时才有用)被置’1’。如果使能了中断(CCxIE)或者DMA(CC1DE)操作,则将产生中断或者DMA。如果捕获事件发生时CCxIF标志已经为高,那么重复捕获标志CCxOF被置’1’。

        上述文字中所提及的“标志”,都是寄存器中所需  读/写的位  的名称。

        其中,重复捕获标志(CCxOF)的作用是,当捕获事件发生时(有电平进入定时器,CCxIF标志被置1),当正在发生此次事件的中断时,又发生了一次捕获事件。

        为了记录重新发生的捕获事件,提醒用户有一次新的捕获事件未被执行,便有了这个“重复捕获标志”,当然,如果CCxOF被置1后,又有新的捕获事件发生,第三次捕获的数据便会遮盖第二次的捕获数据,毕竟重复捕获标志只有一个。

        关于中断,就是框图上那个像闪电一样的箭头,上面写着“CCxI”。

        

        以上,便是输入捕获通道的具体结构。

        下面,我们介绍实现步骤。

三,实现步骤

        以下,是官方参考手册(不是数据手册)中关于  如何在TI1输入的上升沿时捕获计数器的值到TIMx_CCR1寄存器中:

1,选择有效输入端
        TIMx_CCR1 必须连接到 TI1 输入,所以写入 TIMx_CCR1 寄存器中的CC1S=01,只要 CC1S 不为 ’00’ ,通道被配置为输入,并且 TM1_CCR1 寄存器变为只读(图3.1,位介绍见参考手册)。
图 3.1 输入捕获模式设置寄存器
2,根据输入信号的特点,配置输入滤波器为所需的带宽 ( 即输入为 TIx 时,输入滤波器控制位是 TIMx_CCMRx寄存器中的 ICxF )
        假设输入信号在最多5 个内部时钟周期的时间内抖动,我们须配置滤波器的带宽长于5 个时钟周期。因此我们可以 ( f DTS 频率 ) 连续采样 8 次,以确认在TI1 上一次真实的边沿变换,即在 TIMx_CCMR1 寄存器中写入 IC1F=0011( 图3.1)。
此处,“抖动”的意思是,一簇电平的长度为5个时钟(5个电平),边沿变换可能在第1个时钟处出现,也可能在第2个时钟处出现,也可以在第3个、第4个、第5个时钟长度处出现。“采样8次”是为了尽可能地捕获时钟的变换,当然,也可以设置更多的采样次数,就可以加大捕获时钟变换的概率。
3,选择 TI1 通道的有效转换边沿,在TIMx_CCER寄存器(图3.2)中写入 CC1P=0( 上升沿 )
图 3.2 捕获/比较使能寄存器
4,配置输入预分频器。
        在本例中,我们希望捕获发生在每一个有效的电平转换时刻,因此预分频器被禁止(写TIMx_CCMR1 寄存器的 IC1PS=00)
        如果不使用分频器的分频功能,在电平跳变的瞬间,捕获比较寄存器就能捕获到电平跳变的信号,而使用了分频功能,就会延迟捕捉信号,具体原理在下列博客中有介绍: 机器人是怎么计时的(通用定时器 - 时基单元)-CSDN博客
5,设置 TIMx_CCER 寄存器的 CC1E=1 ,允许捕获计数器的值到捕获寄存器中。
6,如果需要,通过设置 TIMx_DIER 寄存器(图3.3)中的 CC1IE 位允许相关中断请求,通过设置
TIMx_DIER 寄存器中的 CC1DE 位允许 DMA 请求。

图 3.3 DMA/中断使能寄存器

        通过配置所选寄存器中的特定位的数据,可以使输入捕获模块执行输入捕获的功能。

四,PWM输入模式

        在输入捕获框图中,我们可以看到如图4.1所示的图像:

图 4.1 PWM输入捕获

        此处,我们只介绍TI1FP2,它的功能是,通过通道1的电平,可以同时到达捕获/比较寄存器1和捕获/比较寄存器2。这样,一组含有高低电平的数据进入MCU时,MCU能够同时检测它的高低电平信号的时间数据,图 4.2 说明了双通道测量数据:

图 4.2 双通道测量数据

        通过时序图,我们可以看到通过IC1、IC2分别计数的过程,配置方法如下:

1,选择TIMx_CCR1的有效输入:置TIMx_CCMR1寄存器的CC1S=01(选择TI1)。
2,选择TI1FP1的有效极性(用来捕获数据到TIMx_CCR1中和清除计数器):置CC1P=0(上升沿
有效)。
3,选择TIMx_CCR2的有效输入:置TIMx_CCMR1寄存器的CC2S=10(选择TI1)。
4,选择TI1FP2的有效极性(捕获数据到TIMx_CCR2):置CC2P=1(下降沿有效)。
5,选择有效的触发输入信号:置TIMx_SMCR寄存器中的TS=101(选择TI1FP1)。
6,配置从模式控制器为复位模式:置TIMx_SMCR中的SMS=100。
7,使能捕获:置TIMx_CCER寄存器中CC1E=1且CC2E=1。

        可以看到,PWM输入模式需要配置从模式控制器为复位模式,在一轮计数完成后(计数值达到预设的周期匹配值),计数器中的数据会复位(如图4.2)。而两个输入信号分别配置为上升沿有效与下降沿有效,就能同时记录PWM的高低电平时间。

        以上,便是输入捕获模式的介绍,欢迎交流喔!

这篇关于电平输入检测-定时器输入捕获的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/856893

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

当你输入一个网址后都发生什么

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注类别数:4 标注类别名称:["Platelets","RBC","WBC","sickle cell"] 每个类别标注的框数:

Temu官方宣导务必将所有的点位材料进行检测-RSL资质检测

关于饰品类产品合规问题宣导: 产品法规RSL要求 RSL测试是根据REACH法规及附录17的要求进行测试。REACH法规是欧洲一项重要的法规,其中包含许多对化学物质进行限制的规定和高度关注物质。 为了确保珠宝首饰的安全性,欧盟REACH法规规定,珠宝首饰上架各大电商平台前必须进行RSLReport(欧盟禁限用化学物质检测报告)资质认证,以确保产品不含对人体有害的化学物质。 RSL-铅,

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀