捕获和比较
捕获
什么是捕获
所谓捕获就是通过检测捕获通道上的边沿信号。在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCR)里面,完成一次捕获。
捕获的应用
STM32支持一下捕获模式:
输入捕获模式
PWM输入模式
输入捕获模式可以用来测量脉冲宽度或者测量频率。下图是输入捕获测量高电平脉宽的原理,假定定时器工作在向上计数模式,图中 t1~t2 时间,就是需要测量的高电平时间。
测量方法如下:首先设置定时器通道 x 为上升沿捕获,这样,t1 时刻,就会捕获到当前的 CNT 值,然后立即清零 CNT,并设置通道 x为下降沿捕获,这样到 t2 时刻,又会发生捕获事件,得到此时的 CNT 值,记为 CCRx2。这样,根据定时器的计数频率,我们就可以算出 t1~t2 的时间,从而得到高电平脉宽。
比较
什么是比较
所谓比较就是计数器的值和与装载的值进行比较。
比较的应用
STM32支持一下比较模式:
强置输出模式
输出比较模式
PWM模式
单脉冲模式
最近本的应用就是PWM模式了!
上图是输出PWM的原理,假定定时器工作在向上计数 PWM模式,且当 CNT 捕获/比较通道概述 捕获/比较通道与定时器密切相关,密不可分,水乳交融,使用不同的功能要使用到不同的寄存器,这里只列举与输入捕获、PWM相关的寄存器。如果使用到其他功能,详细的相关的寄存器在《STM32中/英文参考手册》的14.4章节。通用定时器框图如下所示,红色框是计数器部分,在计数器的基础上,还有下方的4个独立的捕获/比较通道,主要用于 输入捕获 输出比较 PWM生成(边缘或中间对齐模式) 单脉冲模式输出 每一个捕获/比较通道都是围绕着一个捕获/比较寄存器,包括捕获的输入部分(数字滤波、多路复用和预分频器),和输出部分(比较器和输出控制)。捕获/比较通道的的主电路如下图所示(通道1为例) 捕获/比较模块由一个预装载寄存器和一个影子寄存器组成。读写过程仅操作预装载寄存器。 在捕获模式下,捕获发生在影子寄存器上,然后再复制到预装载寄存器中。 在比较模式下,预装载寄存器的内容被复制到影子寄存器中,然后影子寄存器的内容和计数器进行比较。 输入通道 捕获/比较通道的输入通道1如下图所示。 输出通道 捕获/比较通道的输出通道1如下图所示。 捕获/比较相关寄存器 捕获/比较模式寄存器 1 (TIMx_CCMR1) 通道可用于输入(捕获模式)或输出(比较模式),通道的方向由相应的CCxS[1:0]定义。以CC1S[1:0]为例 CC1S[1:0]:捕获/比较1 选择,这2位定义通道的方向(输入/输出),及输入脚的选择: 00:CC1通道被配置为输出; 01:CC1通道被配置为输入,IC1映射在TI1上; 10:CC1通道被配置为输入,IC1映射在TI2上; 11:CC1通道被配置为输入,IC1映射在TRC上。此模式仅工作在内部触发器输入被选中时(由 TIMx_SMCR寄存器的TS位选择)。 注:CC1S仅在通道关闭时(TIMx_CCER寄存器的CC1E=’0’)才是可写的。 其中IC1和TI1的关系在上面系统图中可以看到,下图可见,IC1是可以接到TI1或TI2或TRC上的,这个位就是配置这里的! 该寄存器其它位的作用在输入和输出模式下不同,OCxx(第一行)描述了通道在输出模式下的功能,ICxx(第二行)描述了通道在输出模式下的功能。该寄存器是针对 2 个通道的配置,低八位[7:0]用于捕获/比较通道 1 的控制,而高八位[15:8]则用于捕获/比较通道 2 的控制。CCMR2 是用来控制通道 3 和通道 4。 输入模式 每个通道的位相同,这里是看其中一个通道的相关位 是定时器的输入频率,一般是72MHz。是根据TIMx_CR1的CKD[1:0]的设置来确定,一般为00,=。 另外关于滤波器的长度要特别解释一下,我们知道边沿信号的跳变可能不是完美的。比如我们在处理按键的跳变信号的时候都有一个“消抖”的过程,而消抖有两种方式:1.等待稳定 2.数字滤波;第一种方式就是所谓的“延时消抖”,第二种方式就是在定时器中断的方式获取按键的状态(以采样周期T对按键状态进行采样),如果连续采集到N次按键的状态是“按下”的状态就认为是按下的状态,如果连续的N次采集中至少有一次不是“按下”的状态就不认为按键被按下,也就是说只有等按键按下之后的波形稳定之后才能被连续采集到N次“按下”状态,以此达到滤波的目的。 举个栗子:假设一个包含毛刺的上升沿跳变信号的采样如下(时间从左到右) 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 如果我们用N=4进行滤波的话,红色部分就会被认为没有上升沿跳变,绿色部分才被认为跳变! 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 如果用N=2进行滤波的话,红色部分会被认为没有上升沿跳变,绿色部分被认为有上升沿跳变!但是由于这个边沿信号抖动太厉害,N=2的滤波没能有效滤波,误认为有两次跳变!因此,对不同的跳变信号,要选用合适的滤波长度,滤波长度要能覆盖最长的边沿信号抖动! 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 输出模式 这三位定义了输出参考信号OC1REF的动作,而OC1REF决定了OC1的值。OC1REF是高电平有效,而OC1的有效电平取决于捕获/比较使能寄存器TIMx_CCER的CC1P位。 共可以配置成 7 种模式,为110或111时为PWM模式。这两种 PWM 模式的区别就是输出电平的极性相反。其中有效电平可以设置为高电平有效或者低电平有效。 电路中的极性就是电压的方向,两个PWM的一个周期的电平正好相反(0和非0)就是极性相反。 输入捕获相关寄存器 需要用到的寄存器有:TIMx_ARR、TIMx_PSC、TIMx_CCMR1、TIMx_CCER、TIMx_DIER、TIMx_CR1、TIMx_CCR1等 TIMx_ARR 和 TIMx_PSC用来设定时器x的自动重装载值和 TIMx 的时钟分频,在《STM32-定时器系统原理》中已经说到,TIMx_CCMR1和TIMx_CCMR2前文已经说到,不再赘述。 捕获/比较使能寄存器 (TIMx_CCER) 这个寄存器包含了4个通道,每个通道两个(CCxE和CCxP)的使能位。 以第一个通道为例 要使能输入捕获,必须设置 CC1E=0,而 CC1P 则根据自己的需要来配置。 DMA/中断使能寄存器 (TIMx_DIER) CCxIE:允许捕获/比较x中断 (Capture/Compare 1 interrupt enable) 0:禁止捕获/比较x中断; 1:允许捕获/比较x中断。 如果用到中断来处理捕获数据,必须开启通道 1 的捕获比较中断,即 CC1IE 设置为 1。 控制寄存器 1 (TIMx_CR1) 前文《STM32-定时器系统原理》介绍过这个寄存器,所有与定时器相关的应用都要通过置位它的最低位来使能定时器。 捕获/比较寄存器 1~4 (TIMx_CCR1~4) 这四个寄存器分别是四个通道的,功能相似!这里仅以通道1的为例。 若CC1通道配置为输出: CCR1包含了装入当前捕获/比较1寄存器的值(预装载值)。 如果在TIMx_CCMR1寄存器(OC1PE位)中未选择预装载特性,写入的数值会被立即传输至当前寄存器中。否则只有当更新事件发生时,此预装载值才传输至当前捕获/比较1寄存器中。当前捕获/比较寄存器参与同计数器TIMx_CNT的比较,并在OC1端口上产生输出信号。 若CC1通道配置为输入: CCR1包含了由上一次输入捕获1事件(IC1)传输的计数器值。 PWM输出相关的寄存器 所有PWM相关寄存器都在上文提到,PWM输出一般不需要触发中断,因此用不到DMA/中断使能寄存器 (TIMx_DIER)。
上一篇:STM32-快速上手PWM输出
下一篇:STM32-定时器系统原理
推荐阅读最新更新时间:2024-11-12 20:22
推荐帖子
- 设计软件软件打不开是什么原因
- WIN1064位软件,安装了KEIL5后KEIL5运行正常,这后再安装KEIL4,安装完毕后,以管理员权限运行KEIL4,没有任何反应,根本就不运行,请问如何解决?是KEIL4在WIN1064位下根本就不能用,还是KEIL4和KEIL5有冲突?设计软件软件打不开是什么原因不要安装到同一个目录 非常感谢。但是,并没有安装在同一个目录呀。 那估计是下载的软件有问题,重新下一个。
- 深圳小花 单片机
- 【颁奖礼】我用“ADI实验室电路“讲故事
- 经过为期两周的放飞创意,最终选出本期活动的”故事大王“为tiankai001,将获得价值500元的购物机会一次。感谢大家对本次活动及ADI实验室电路的支持,希望通过这个小小的活动,使得大家的设计工作中充满开心、快乐、趣味。其中参与网友常见泽1、欣之、莫妮卡、ddllxxrr、jjkwz、taburiss001、yujiyuan1984、785180572、eeleader、llllll111、jishuaihu可获赠10元手机
- EEWORLD社区 ADI参考电路
- Q2全球计算机销售增长11% 拉丁美洲增长速度最快
- Felix 移动便携
- LPC1768资料大放送
- 此内容由EEWORLD论坛网友cxmdz原创,如需转载或用于商业用途需征得作者同意并注明出处LPC1768资料大放送这么多资料应该上传到下载中心线 主要是太麻烦了,而且这些文件都不大,下载速度很快。谢谢共享,学习了
- cxmdz NXP MCU
- 利用MSP430F149对光电码盘进行计数
- 求助该电路图和软件设计程序利用MSP430F149对光电码盘进行计数有啥问题,说明白点 现在要利用这种单片机对光电码盘送来的脉冲进行计数,我是新手,不太懂,所以想问问可不可以帮忙把这个电路图弄出来,还有编程的程序,谢谢脉冲直接用定时器捕获即可,电路简单,可以直接接到捕获引脚 好的,谢谢可以搜索找找现成的例子学习一下 没搜到电路图:Cry:直接使用计数器就好了,16位的定式/计数器可以计数到六万五千多
- luhao19920818 微控制器 MCU
- 上下拉电阻的作用?
- 上下拉电阻的作用是什么?不仅仅是在集电极或者射击输出这样的输出电路结构上,在串口通信电路中和外围电路到芯片之间的电路之间也有上下拉电阻,这个上下拉电阻究竟是起到一个什么作用?能否具体介绍。上下拉电阻的作用?上拉电阻:把一个信号引脚拉高到逻辑高电平,以确保信号始终处于逻辑高电平状态。在未连接设备或传感器时,保持信号稳定。为晶体管提供基极偏置电压。提高输出高电平值,例如TTL电路驱动CMOS电路时,或OC门电路应用中。加大输出引脚的驱动能力及提高芯片输入信号的噪声容限,增强抗干扰能力
- 乱世煮酒论天下 模拟电子
设计资源 培训 开发板 精华推荐
- NCP301HSN09T1 0.9V 电压检测器的典型应用,用于具有附加迟滞的微处理器复位电路
- IRAC1152-350W、IR1152 演示板设计用于连续传导模式升压转换器应用,用于功率因数校正和谐波电流降低
- 【涂鸦智能】温湿度计@ART-Pi_by_RT-Theard
- LT3091ER 并联器件使用 IMONN 消除镇流电阻压降的典型应用
- STEVAL-ISA080V1,基于 L6585DE 组合 IC 的 90 W-HB LLC 谐振转换器
- 使用 MCP73871 的锂离子 / 锂聚合物电池充电和系统负载分配管理设计指南
- DI-57 - 60W DC-DC 转换器
- 5v蜂鸣器模块
- 【训练营】绵宝物联智能时钟
- AD8009-EB,使用 AD8009 的评估板,1 GHz,高速,低失真放大器