前言:本节主要讲互补输出的步长设定问题,同时引入了一个重要的参数COM,这个再诸多STM32的手册里面都过于分散,在本文有一个比较完备的小结:


When complementary outputs are used on a channel, preload bits are available on the OCxM, CCxE and CCxNE bits.

互补输出主要由以下三个可以预设的设定决定:

1 OC1M,

OC1通道的输出模式,首先有OC1REF的模式决定,OC1REF会接到OC1 、OC1N


然后,在OC1这里进行第二次设置,这里的设置又包括比较复杂的一组设定,有一个表:



COM:(COM COMMUTATION交换 EVENT)or (Capture/Compare control update

COM的引入:


提到COM之前,我们先看:定时器的控制寄存器2,里面的CCPC,CCUS控制位

TIM1 and TIM8 control register 2 (TIMx_CR2)

这里控制寄存器的CCPC位,决定了CCP 的 Preloaded的使能,这里定义了COM的2种出现的形式:

(COMG bit set or rising edge detected on TRGI, depending on the CCUS bit).

而CCUS里面的定义,则是对上述使能做更新的选择:


事件产生寄存器

TIM1 and TIM8 event generation register (TIMx_EGR)

也就是COMG

Bit 5 COMG: Capture/Compare control update generation

1: When CCPC bit is set, it allows to update CCxE, CCxNE and OCxM bits

CCPC预设值使能后,COM的相关使能位可以通过预设先设定好,而这三个通道恰恰就是决定了互补的输出波形,这些预设值在COM的EVENT的时候给到实际的shadow寄存器。

The preload bits are transferred to the shadow bits at the COM commutation event. The user can thus program in advance (提前预设)the configuration for the next step and change the configuration of all the channels at the same time.

COM can be generated by software by setting the COM bit in the TIMx_EGR register or by hardware (on TRGI rising edge).

COM 的EVENT设定值可以是软件设定TIMx_EGR来实现,也可以 由硬件上升沿触发决定。


EVENT发生的时候,会更新状态寄存器

A flag is set when the COM event occurs (COMIF bit in the TIMx_SR register),

Bit 5 COMIF: COM interrupt flag

This flag is set by hardware on COM event (when Capture/compare Control bits - CCxE, CCxNE, OCxM - have been updated). It is cleared by software.

0: No COM event occurred.

1: COM interrupt pending.


同时也可以产生中断:

which can generate an interrupt (if the COMIE bit is set in the TIMx_DIER register) or a DMA request

(if the COMDE bit is set in the TIMx_DIER register).

Bit 5 COMIE: COM interrupt enable

0: COM interrupt disabled

1: COM interrupt enabled


Figure 91 describes the behavior of the OCx and OCxN outputs when a COM event occurs,

in 3 different examples of programmed configurations.


Example 1:

1 CO1M = 100 : OC1REF 为低电平 预设值

2 CC1NE = 0, 那么 OCXN 的互补输出被关闭了

3 CC1E = 1,OC1 的输出依据OCXREF的输出,再结合MIX的Table组合:

当COM = 1 ,也就是,TIMx_EGR 的 COMG 更新的时候

COM EVENT 事件产生,同时更新设置,那么OC1REF force low,OC1的输出被拉倒低电平


Example 2:

和例子1不同的是,CC1NE的值设为1,这样互补通道打开,同时OC1M设为1,那么OC1REF 被Force to High 给到OC1

如果之前OC1REF就是高,那么他是不变的,互补输出通道则由原来的LOW改为和OC1REF一致为高,

所有的这些变动,都是在COM TO 1的时候生效,这个和SAMPLE1 一致,


仔细看这个例子,前面互补输出的通道都是正常的,到COM TO 1 触发之后,OC1N的通道就一直未低电平了,DISABLE。

该例子给出了OC1REF的两个互补波形,而且还带死区的Delay


参考:

STM32 - 定时器的设定 - 基础- 02 - Capture/compare channels 和相关设置寄存器

https://mp.csdn.net/postedit/102083981

STM32 - 定时器的设定 - 基础- 07 - 6-step PWM generation - 6步长PWM的产生 - COM Event的解释相关推荐

  1. STM32 - 定时器的设定 - 基础- 06 - OCxREF signal - Clearing the OCxREF signal on an external event

    OCxREF signal 作为捕捉比较的定制化参考波形在对输出波形的配置上占有巨大的影响.如何将这个信号和外部输入的事件联系起来,能给系统的设计带来更多的可选择性. The OCxREF signa ...

  2. STM32 - 定时器的设定 - 基础-04 - 输出波形控制 - PWM 模式

    PWM为诸多应用的基本波形,如何实现和如何定制,首先要了解STM32中PWM的实现方法. 在STM32中,PWM的实现主要通过控制 OCxRef (active high).:output compa ...

  3. STM32 - 定时器的设定 - 基础 01 - Timer Base - Prescaler description - Upcounting mode

    前言:时基是定时器的最基本的功能: 本节详细叙述STM32的时基的功能. 1 Time-base unit The main block of the programmable advanced-co ...

  4. STM32 - 定时器的设定 - 基础 01.1 - Repetition counter

    前言:Repetition counter是一个STM32增强的计数器功能,有很多用途,本文尝试进行简单阐述: 我们理解为,就是定时器溢出再增加一个倍率rate 的控制.注意是倍率,也就是如果是定时1 ...

  5. STM32 - 定时器的设定 - 基础- 0A - Timers and external trigger synchronization - 定时器和外部触发的同步

    四种同步方式: The TIMx Timers can be synchronized with an external trigger in several modes: Reset mode, G ...

  6. STM32 - 定时器的设定 - 基础 - 05 - Arbitrary waveform generation using timer DMAburst feature - 任意波形的序列产生

    DMA的功能不说了,如何产生任意序列的波形,我们仔细看看: 本节叙述了同DMA的方法,在不占用MCU资源的情况下,通过提前编辑一组任意定制的波形参数,实现复杂的波形输出. STM32 DMA-burs ...

  7. STM32 - 定时器的设定 - 基础-03 - 输出波形控制 - Output compare mode

    1 简介: This function is used to control an output waveform or indicating when a period of time has el ...

  8. STM32 - 定时器的设定 - 基础- 02 - Capture/compare channels 和相关设置寄存器 - 和STM32缩写词条解释

    前言:捕捉比较通道: STM32丰富的定时器的变化,就在这个模式,所以,复杂是必然的:当然,也可以简单来理解,就是通过选择定时器的输入的配置同时配置定时器的输出来获取我们需要的各种波形: 几个重要的缩 ...

  9. STM32 - 定时器的设定 - 基础- 0D - Timer synchronization chaining - 主从模式下 - 定时器同步和级联控制 - 级联启动定时器

    和前面两次举例不同的是,前面两次是用CC通道的输出波形来做触发,这个例子,用UEV的发生做触发: In this example, we set the enable of Timer 2 with ...

最新文章

  1. 网站应分析哪些方面来提升网站优化的效果呢?
  2. Winfrom中设置ZedGraph显示多个标题(一个标题换行显示)效果
  3. sql server charindex函数和patindex函数详解(转)
  4. 开源cms系统:We7 CMS 2.5版内测版发布啦!
  5. 安卓应用安全指南 六、困难问题
  6. 10打开没有反应_【专利】表面施胶剂的反应装置
  7. SQL Server中的联合主键、聚集索引、非聚集索引、mysql 联合索引
  8. 公式冒号是什么意思_excel函数公式中的:号是什么意思
  9. ThinkPHP 汉字转成多种形式拼音
  10. java去除空格的函数_JAVA中去掉空格--trim函数
  11. sonar (default-cli) on project webgoat-parent: Not inside a Git work tree 错误以及解决方案
  12. java BIO tcp服务端向客户端消息群发代码教程实战
  13. 最大公约数(Java)
  14. 艾永亮:超级产品战略实现企业超级增长,五个案例给出最佳答案!
  15. 按键精灵实用案例1:地址转换成经纬度——快速完成多个地址转换
  16. 电厂时钟同步设备(卫星同步时钟)应用方案
  17. android 实现发送彩信方法 (MMS),非调用系统彩信界面
  18. 星星点灯(点亮LED灯)
  19. IO 口的位操作实现
  20. MeshLab相关纹理贴图

热门文章

  1. java方法、方法重载
  2. 【nginx】【小记】泛解析大量域名的情况下 将不带www的域名,301到与之对应的www前缀的域名
  3. 宝塔面板 nginx+apache共存 之 KVS服务器运行环境搭建过程记录
  4. 【Java】兔子问题
  5. 【安卓开发】AndroidStudio项目提交到github最详细步骤
  6. mysql不能做端点测试吗_端点测试的分步介绍
  7. lynda ux_举办UX午餐并学习并成为UX英雄
  8. -ms-flexbox_Flexbox的工作原理-用大尺寸,彩色动画gif进行解释
  9. 136_Power BI 自定义矩阵热力图
  10. 消息传递的图神经网络