当前位置:首页 > 单片机 > 单片机
[导读]OCx与OCxREF和CCxP之间的关系初学STM32,我这个地方卡了很久,现在终于有些明白了,现在把我的理解写下与大家共享,如果有不对的地方,还请指出。OCxREF就是一个参考信号,并且约定:OCxREF=1,称OCxREF有效。反之,

OCx与OCxREF和CCxP之间的关系

初学STM32,我这个地方卡了很久,现在终于有些明白了,现在把我的理解写下与大家共享,如果有不对的地方,还请指出。

OCxREF就是一个参考信号,并且约定:

OCxREF=1,称OCxREF有效。反之,OCxREF=0,称OCxREF无效;

‘1’电平(高电平)称为OCxREF的有效电平,‘0’ 电平(低电平)称为OCxREF的无效电平。

——依据参考手册:The output stage generates an intermediate waveform which is then used for reference:OCxRef (active high). The polarity acts at the end of the chain.

(翻译)输出阶段产生一个中间波形OCxRef(高有效)作为参考。输出信号的极性体现在信号链的末端。

现在解释几个名词之间的关系:

然后来理解输出比较的几个模式(PWM模式是输出比较模式的特例)

查看TIMx_CCMR1寄存器的OC1M域,有如下定义(摘自最新版的参考手册)

翻译如下:

000:冻结——输出比较寄存器TIMx_CCR1中的内容与计数器TIMx_CNT中的内容之间的比较对输出无影响。(此模式用于时基的生成)

001:当匹配时,设置通道1为有效电平。当计数器TIMx_CNT中的内容与捕捉/比较寄存器1(TIMx_CCR1)中的内容相匹配时,强行拉高OC1REF信号。

010:当匹配时,设置通道1为无效电平。当计数器TIMx_CNT中的内容与捕捉/比较寄存器1(TIMx_CCR1)中的内容相匹配时,强行拉低OC1REF信号。

011:翻转——当TIMx_CNT= TIMx_CCR1时,OC1REF信号取反。

100:强制无效电平——强行拉低OC1REF信号。

101:强制有效电平——强行拉高OC1REF信号。

110:PWM模式1——向上计数模式中,只要TIMx_CNT< TIMx_CCR1,通道1有效,反之无效。向下计数模式中,只要TIMx_CNT> TIMx_CCR1,通道1无效(OC1REF=0),反之有效(OC1REF=1)。

110:PWM模式2——向上计数模式中,只要TIMx_CNT< TIMx_CCR1,通道1无效,反之有效。向下计数模式中,只要TIMx_CNT> TIMx_CCR1,通道1有效,反之无效。

我用红色标出了提到有效、无效的地方。不难发现,有效与无效分别对应OC1REF=1和OC1REF=0。这正是我们先前约定的结果。

到此,不同模式下输出比较的结果对OC1REF信号的影响已经很清楚了,但是最终的输出信号是OC1,并不是OC1REF。而且前面有一句话(输出信号的极性体现在信号链的末端)还未做解释。

到底OC1REF与OC1之间有何秘密呢?我们来看下面这个图:

显然,我们只关心红色圈内的信号与方框内的寄存器位以及信号在它们之间是如何传播的。

oc1ref从输出模式控制器(Output mode controller)开始,分为两路,上面一路至主模式控制器(To the master mode controller),这里我们不关心它的去向,我们关心的是下面一路,下面一路在进入双路开关之前又被分成了两路——一路是原信号,一路是原信号的非。显然TIMx_CCER中的CC1P位用来控制这个开关,CC1E位控制着整条信号链的通断。

当CC1P=0时(CC1E=1):






当CC1P=1时(CC1E=1):

很显然,OC1与OC1REF的关系只受CC1P的影响(CC1E=1)


然而参考手册上对CC1P位是这么描述的:

CC1P=0时:OC1高电平有效

CC1P=1时:OC1低电平有效

根据本文开篇的名词解释,可以这么理解:

CC1P=0时:OC1有效电平是高电平

CC1P=1时:OC1有效电平是低电平

这时就迷惑了,这个高电平有效和低电平有效是啥意思呢?

我们从头分析(整个过程CC1E=1,OC1的输出是允许的):

1假定OC1REF有效(OC1REF=1),那么从OC1REF到OC1的整条信号链上的信号都是有效信号,我们称OC1输出了有效信号。

那这个有效信号是高电平还是低电平呢?

这就是由CC1P决定的:

2假定OC1REF无效(OC1REF=0),那么从OC1REF到OC1的整条信号链上的信号都是无效信号,我们称OC1输出了无效信号。

无效信号的高电平和低电平也是由CC1P决定:

用一张表来总结上述过程:

OC1REF

CC1P

功能

OC1

描述

0

0

OC1高电平有效

0(低电平)

无效

1

OC1低电平有效

1(高电平)

无效

1

0

OC1高电平有效

1(高电平)

有效

1

OC1低电平有效

0(低电平)

有效

显然,OC1REF决定了OC1输出电平是否有效,而CC1P决定了有效电平的极性。

我们抽出上表的后四列:

CC1P

功能

OC1

描述

0

OC1高电平有效

0(低电平)

无效

1

OC1低电平有效

1(高电平)

无效

0

OC1高电平有效

1(高电平)

有效

1

OC1低电平有效

0(低电平)

有效

我们将表按1、2列合并

CC1P

功能

OC1

描述

0

OC1高电平有效

0(低电平)

无效

OC1高电平有效

1(高电平)

有效

1

OC1低电平有效

0(低电平)

有效

OC1低电平有效

1(高电平)

无效

现在很清楚了,从上表中可以清楚地看到CC1P对OC1有效极性的控制。即,OC1的极性只有与CC1P指定的有效极性一致,OC1才能是有效的(绿色部分)。这样就解释了“输出信号的极性体现在信号链的末端”这句话。

然而这条链还未结束,还有个CC1E呢。当然,它就是一个OC1输出使能位而已。

但细心的你可能会发现,参考手册上对CC1E位有这样的描述:

OCx = OCxREF + Polarity

这个式子告诉我们OCx与OCxREF和Polarity(极性,即CCxP位)的关系。

我们上面提到了它们的关系,是分了两种情况(CC1P=0和CC1P=1)表示的,这个式子帮我们将上面关系归纳成了一个。这个式子怎么得来的?

回忆一下数字电路里面的半加器(就是不进位的加法),真值表如下:

OCxREF

Polarity

OCx

0(无效)

0(高有效)

0(无效)

0(无效)

1(低有效)

1(无效)

1(有效)

0(高有效)

1(有效)

1(有效)

1(低有效)

0(有效)

我们写逻辑函数(按黄色部分写):

注意:前面的“+”号表示半加运算(不进位加法),其实是逻辑上的“异或”。

其实就是OCx = OCxREF^ Polarity,^为异或。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭