9.3 输出比较-嵌入式铁头山羊STM32笔记

目录

1.输出比较简介

https://www.bilibili.com/video/BV11X4y1j7si?t=35.6&p=42

上图下方为定时器的四个通道,四个通道结构基本一样。

CCRx,x=1,2,3,4

输入捕获:可测量外部信号的时间参数(周期、占空比,,,)

输出比较:通过定时器产生精确定时的方波信号,然后通过引脚把方波输出出去。

2.基本工作原理(PWM)

https://www.bilibili.com/video/BV11X4y1j7si?t=182.8&p=42

通过输出比较,产生一个 PWM 信号的示例

PWM:脉宽调制信号

占空比:高电压/整个周期

单片机可输出 0V 和 3.3V,如果没 DAC 没法直接输出 2V 信号,所以可以通过调节 PWM 的不同占空比,近似输出 2V 电压

上图右边为不同占空比下的等效输出电压

Q:为什么调节占空比就能输出 0-3.3V 之间的电压?高电平不就是 3.3V,低电平不就是 0V 吗?

A:LED 的亮度由 "单位时间内的总能量" 决定,而不是 "某一时刻的电压"

如何通过定时器输出比较模块,产生 PWM 信号?

启动时基单元,每来一个脉冲, CNT 会++,到 ARR +1 会溢出重装。上图右为实际波形示意图。绿线为 CCR 值,红线为 ARR 值。

输出比较会把 CNT 的值,和 CCR 比较。

CNT<CCR,输出高电平,

CNT>CCR,输出低电平,这样就输出了我们要的 PWM 方波信号。

ARR +1 为一个周期

所以,CCR 决定高电平时间;ARR 决定周期时间

这个输出比较输出 PWM 的工作原理讲的确实不错:

https://www.bilibili.com/video/BV11X4y1j7si?t=358.5&p=42

3.8 种工作模式

https://www.bilibili.com/video/BV11X4y1j7si?t=481.1&p=42

CCRx:捕获/比较寄存器、CCR 左边为输入捕获,右边为输出比较

OCxRef:x=1,2,3,4,通道 x 的参考信号

上图为输出比较 8 种模式,常用 PWM1 模式,剩下七个简单了解下。

都是通过 CNT 和 CCR 的比较关系来产生结果的。

冻结:顾名思义,输出固定值,不管 CNT 和 CCR。

相等有效:CNT=CCR,OCxRef 输出高电压

相等无效:CNT=CCR,OCxRef 输出低电压

翻转:CNT=CCR,电平翻转一下

强制无效:强制输出低电压

强制有效:强制输出高电压(无效则低,有效则高)

PWM1 模式:CNT<CCR,输出高(最常用)

PWM2 模式:与 PWM1 相反。

4.互补输出

https://www.bilibili.com/video/BV11X4y1j7si?t=888.5&p=42

从图中可以看出,前三个通道都有两个引脚输出。这两个引脚输出的代表什么信号呢?

CHx 表示正常输出,CHxN 表示互补输出。

正常输出:模式选择产生的 OCxRef 参考信号直接输出 出来。

互补输出:给正常输出取反的信号(正常输出高,互补输出低)

所以互补信号的作用在哪?

把 12V 降压成 3.3V

SW1 闭合,SW2 断开:电源给电感 L1 和电容 C1 充电

SW1 断开,SW2 闭合:L1、C1、SW2 回路放电。

通过充放电比例,可以调节右边输出电压(类似 PWM 高低电平得出等效输出电压)。

可以得出 SW1 和 SW2 的状态是完全相反的,所以这里可以用到输出比较的正常输出和互补输出。

5.极性选择

https://www.bilibili.com/video/BV11X4y1j7si?t=1152.0&p=42

模式选择产生参考信号 OCxRef,通过正常输出、互补输出两路输出。

紫色圈的结构为极性选择

极性选择:决定是否对输出信号进行取反(反相器)

总结

先简单了解了输出比较和工作原理(CNT 和 CCR 比较),然后通过 8 种工作模式(主要 PWM1 模式)、互补输出(与正常输出相反)、极性选择(信号取反),深入了解了下输出比较内部结构 。

相关推荐
魔芋红茶19 分钟前
Spring Security 学习笔记 2:架构
笔记·学习·spring
Lips6111 小时前
2026.1.20力扣刷题笔记
笔记·算法·leetcode
小郭团队2 小时前
1_6_五段式SVPWM (传统算法反正切+DPWM2)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·matlab·dsp开发
Hammer_Hans2 小时前
DFT笔记20
笔记
小郭团队2 小时前
1_7_五段式SVPWM (传统算法反正切+DPWM3)算法理论与 MATLAB 实现详解
开发语言·嵌入式硬件·算法·matlab·dsp开发
爱潜水的小L2 小时前
自学嵌入式day49,arm led、蜂鸣器和bsp
arm开发·单片机·嵌入式硬件
jane_xing2 小时前
【Hello-Agents】学习笔记(一)
笔记·ai agent
物联网牛七七3 小时前
stm32内核寄存器和外设寄存器
stm32·单片机·嵌入式硬件
嗯嗯=4 小时前
STM32单片机学习篇3
stm32·单片机·学习
梁洪飞4 小时前
通过链接文件和Start.S学习armv7
linux·arm开发·嵌入式硬件·学习·arm