当前位置: 首页 > article >正文

STM32F1学习——PWMI模式(IC输入捕获)

一、输入捕获测频率

        在STM32中输入捕获和输出比较共用一套电路,既然STM32能够使用OC来输出PWM波,他同样也能使用IC来测量PWM的频率和占空比。测量频率和占空比有两种方式,一种是测频法,一种是测周法,两种方法分别适用于高频信号和低频信号,且在输入捕获过程中可以硬件自动化的清零CNT的值,而不需要CPU的参与。

二、测量PWM信号频率方法

1、测频法

        测频法的核心是通过定时器设定一个时间T,测量在这段时间内外部的PWM信号的上升沿次数N,通过 N / T 则为频率。

2、测周法

        测周法的核心思想是测量在一个周期中,STM内部的的主频Fc 可以有多少个上升沿N , 则测量的频率为Fc / N 。

三、输入捕获的硬件设计

        虽然输入捕获的硬件电路和OC是类似的,但是仍然有一些特殊设计是为了IC输入捕获而设计的。

1、PWMI模式

        同时测量频率和占空比而设计的。当PWM信号从CH1引脚进入时,经过滤波器和边沿检测器选择TI1FP1到IC1,同时可以让他也进入TI1FP2进入IC2,上面这一路可以用来测量频率,下面用来测量占空比。

2、主从触发模式 

      在捕获的CH1通道如下图所示,信号通过滤波器和边沿检测电路选择上升或下降沿至TI1FP1,这里有至从模式控制器 他可以用来自动清零CCR的值。接着继续到预分频器,最后到IC1PS,这里会触发更新事件,同时ARR计数器的值自动转运到CCR自动重装器。

        主模式就是这里的IC1将它映射到TRGO端口,选择触发源TI1FP1,通过TRGI选择从模式Reset实现复位。

四、输入捕获结构

        在输入捕获中,我们从CH1引脚输入外部PWM波,经过滤波器和边沿检测至TI1FP1,同时为了实现硬件自动清零CNT的值,我们将TI1FP1当做从模式触发源。在TI1FP1中,我们读取上升沿,当读取到上升沿的时候我们硬件自动转运CNT的值到CCR中,用fc / CCR 就是外部PWM频率,同时从模式将CNT清零。在TI1FP2中我们读取下降沿,当下降沿到达,CCR2 = CNT,用CCR2 / CCR1 = 占空比。

五、代码

        在本次实验过程中,我们准备一边用单片机输出PWM波(OC输出比较),一边用IC输入捕获PWM的频率和占空比。那么本次实验中我们配置的顺序应该为,①打开两个定时器的时钟和GPIO的时钟 ②配置时基单元 ③配置OC和IC。

        为了节省文章篇幅,代码已经放在github仓库里了。hal库的暂未更新,请耐心等待。

STM32F103c8t6_learning/GPIO_std/STM32f1_PWMI at main · Jiang-kun02/STM32F103c8t6_learning · GitHub

参考

[6-5] TIM输入捕获_哔哩哔哩_bilibili

[6-3] TIM输出比较_哔哩哔哩_bilibili


http://www.kler.cn/a/468128.html

相关文章:

  • 前端学习DAY31(子元素溢出父元素)
  • 感知器的那些事
  • CODESYS MODBUS TCP通信(AM400PLC作为主站通信)
  • 【视觉SLAM:六、视觉里程计Ⅰ:特征点法】
  • pip error: microsoft visual c++ 14.0 or greater is required
  • 《Opencv》基础操作详解(5)
  • uniapp H5页面实现懒加载
  • Fireworks AI:图像/PDF非文本内容转LLM可读文本
  • pytorch torch.scatter_reduce函数介绍
  • 使用Java Selenium修改打开页面窗口大小
  • 线程-8-日志_线程池
  • 比较 FreeSWITCH 的 asr 事件和回调函数
  • docker 转移文件到容器内部 以修改nextcloud添加域名信任 为例子
  • 【面试】后端开发面试中常见数据结构及应用场景、原理总结
  • 深入解析桥接模式、NAT模式与仅主机模式
  • 大模型微调技术: 从基于Stable Diffusion的绘画谈起
  • ceph文件系统
  • 自主可控,体验跃升丨恒拓高科亮相“HDD·广东鸿蒙生态伙伴论坛”
  • Postgresql 命令还原数据库
  • [C#]C# random.Next(0,1)包含0和1吗
  • Java 性能调优实战
  • 串口发送数据,SysTick定时器的实现
  • BUUCTF sqli-labs 1
  • 不只是mini-react第一节:实现最简单mini-react
  • C#—SynchronizationContext类详解 (同步上下文)
  • hashMap追问