单脉冲模式
单脉冲模式 (OPM) 是上述模式的一个特例。在这种模式下,计数器可以在一个激励信号的触发下启动,并可在一段可编程的延时后产生一个脉宽可编程的脉冲。
可以通过从模式控制器启动计数器。可以在输出比较模式或 PWM 模式下生成波形。将 TIMx_CR1 寄存器中的 OPM⑳ 位置 1,即可选择单脉冲模式。这样,发生下一更新事件 UEV 时,计数器将自动停止。
只有当比较值与计数器初始值不同时,才能正确产生一个脉冲。启动前(定时器等待触发时),必须进行如下配置:
● 递增计数模式下:⑦CNT < CCRx⑧ £ ARR⑨(特别注意,0 < CCRx)
● 递减计数模式下:⑦CNT > CCRx⑧
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
例如,用户希望达到这样的效果:在 TI2⑮ 输入引脚检测到正沿时,经过 tDELAY 的延迟,在 OC1⑭ 上产生一个长度为 tPULSE 的正脉冲。
使用 TI2FP2③ 作为触发 1:
● 在 TIMx_CCMR1 寄存器中写入 ⑯CC2S=“01”,以将 TI2FP2③ 映射到 ⑮TI2。
● 在 TIMx_CCER 寄存器中写入 ⑱CC2P=“0”和 ⑰CC2NP=“0”,使 ③TI2FP2 能够检测上升沿。
● 在 TIMx_SMCR 寄存器中写入 ①TS=“110”,以将 ③TI2FP2 配置为从模式控制器的触发 (④TRGI)。
● 在 TIMx_SMCR 寄存器中写入 ②SMS=“110”(触发模式),以使用 ③TI2FP2 启动计数器。
OPM 波形通过对比较寄存器执行写操作来定义(考虑时钟频率和计数器预分频器)。
● tDELAY 由写入 TIMx_CCR1⑧ 寄存器的值定义。
● tPULSE 由自动重载值与比较值 (⑨TIMx_ARR - TIMx_CCR1⑧) 之差来定义。
● 假设希望产生这样的波形:信号在发生比较匹配时从“0”变为“1”,在计数器达到自动重载值时由“1”变为“0”。为此,应在 TIMx_CCMR1 寄存器中写入 ⑪OC1M=111, 以使能 PWM 模式 2。如果需要,可选择在 TIMx_CCMR1 寄存器的 ⑩OC1PE 和 TIMx_CR1 寄存器的 ARPE⑥ 中写入“1”,以使能预装载寄存器。这种情况下,必须在 TIMx_CCR1⑦ 寄存器中写入比较值并在 TIMx_ARR⑨ 寄存器中写入自动重载值,通过将 ⑤UG 位置 1 来产生更新,然后等待 ⑮TI2 上的外部触发事件。本例中,⑬CC1P 的值为“0”。
在本例中,TIMx_CR1 寄存器中的 ⑳DIR 和 ⑳CMS 位应为低。
由于仅需要 1 个脉冲(单脉冲模式),因此应向 TIMx_CR1 寄存器的 ⑳OPM 位写入“1”, 以便在发生下一更新事件(计数器从自动重载值返回到 0)时使计数器停止计数。TIMx_CR1 寄存器中的 ⑳OPM 位置“0”时,即选择重复模式。
特例:OCx 快速使能:
在单脉冲模式下,⑮TIx 输入的边沿检测会将 ⑳CEN 位置 1,表示使能计数器。然后,在计数器值与比较值之间发生比较时,将切换输出。但是,完成这些操作需要多个时钟周期,这会限制可能的最小延迟(tDELAY 最小值)。
如果要输出延迟时间最短的波形,可以将 TIMx_CCMRx 寄存器中的 ⑳OCxFE 位置 1。这样会强制 ⑫OCxRef(和 ⑭OCx)对激励信号做出响应,而不再考虑比较的结果。其新电平与发生比较匹配时相同。仅当通道配置为 ⑪PWM1 或 PWM2 模式时,⑳OCxFE 才会起作用。
---------------------------------------------------------------------------------------------