以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!
STM8触发同步
计数器允许四种触发输入
-
ETR
- TI1
- TI2
- 来自TIM5/TIM6的TRGO
TIM1的计数器使用三种模式与外部的触发信号同步:标准触发模式,复位触发模式和门控触发模式。
标准触发模式
计数器的使能依赖于选中的输入端上的事件。
在下面的例子中,计数器在TI2输入的上升沿开始向上计数:
-
配置通道2检测TI2的上升沿。配置输入滤波器带宽(本例中,不需要任何滤波器,保持IC2F=0000)。触发操作中不使用捕获预分频器,不需要配置。TI2S位仅用于选择输入捕获源,也不需要配置。配置TIM1_CCER1寄存器的CC2P=0,选择上升沿做为触发条件。
- 配置TIM1_SMCR寄存器的SMS=110,选择计数器为触发模式;配置TIM1_SMCR寄存器的TS=110,选择TI2作为输入源。
当TI2出现一个上升沿时,计数器开始在内部时钟驱动下计数,同时置位TIF标志。
TI2上升沿和计数器启动计数之间的延时取决于TI2输入端的重同步电路。
(图46:STM8标准触发模式的控制电路)
复位触发模式
在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化;同时,如果TIM1_CR1寄存器的URS位为低,还产生一个更新事件UEV;然后STM8所有的预装载寄存器(TIM1_ARR,TIM1_CCRx)都被更新了。
在以下的例子中,TI1输入端的上升沿导致向上计数器被清零:
- 配置通道1用于检测TI1的上升沿。配置输入滤波器的带宽(在本例中,不需要任何滤波器,因此保持IC1F=0000)。触发操作中不使用捕获预分频器,所以不需要配置。CC1S位仅用于选择输入捕获源,也不需要配置。配置TIM1_CCER1寄存器的CC1P=0来选择极性(只检测上升沿)。
- 配置TIM1_SMCR寄存器的SMS=100,选择定时器为复位触发模式;配置TIM1_SMCR寄存器的TS=101,选择TI1作为输入源。
- 配置TIM1_CR1寄存器的CEN=1,启动计数器。
(图47:STM8复位触发模式下的控制电路)
门控触发模式
计数器由选中的输入端信号的电平使能。
在如下的例子中,计数器只在TI1为低时向上计数:
1.配置通道1用于检测TI1上的低电平。配置输入滤波器带宽(本例中,不需要滤波,所以保持IC1F=0000)。触发操作中不使用捕获预分频器,所以不需要配置。CC1S位用于选择输入捕获源,也不需要配置。配置TIM1_CCER1寄存器的CC1P=1来确定极性(只检测低电平)。
2.配置TIM1_SMCR寄存器的SMS=101,选择定时器为门控触发模式;配置TIM1_SMCR寄存器中TS=101,选择TI1作为输入源。
3.配置TIM1_CR1寄存器的CEN=1,启动计数器(在门控模式下,如果CEN=0,则计数器不能启动,不论触发输入电平如何)。
只要TI1为低,计数器开始依据内部时钟计数,一旦TI1变高则停止计数。当计数器开始或停止时TIF标志位都会被置位。
TI1上升沿和计数器实际停止之间的延时取决于TI1输入端的重同步电路。
(图48:STM8门控触发模式下的控制电路)
外部时钟模式2+触发模式
外部时钟模式2可以与另一个输入信号的触发模式一起使用。这时,ETR信号被用作外部时钟的输入,另一个输入信号可用作触发模式(支持标准触发模式,复位触发模式和门控触发模式)。请注意不能把ETR配置成TRGI(通过TIM1_SMCR寄存器的TS位)。
在下面的例子中,一旦在TI1上出现一个上升沿,计数器即在ETR的每一个上升沿向上计数一次:
-
通过TIM1_ETR寄存器配置外部触发输入电路。在这个例子中,由于不使用滤波,因此ETF=0000。配置ETPS=00禁止预分频,配置ETP=0监测ETR信号的上升沿,配置ECE=1使能外部时钟模式2。
- 使用通道1监测TI1的上升沿。配置输入滤波(由于本例不使用滤波,因此配置IC1F=0000)。由于触发操作不使用预分频,所以不配置预分频器,CC1S位仅用于选择输入捕获源,因此也不需要配置。配置TIM1_CCER1寄存器的CC1P=0来选择上升沿触发。
- 配置TIM1_SMCR寄存器的SMS=110来选择定时器为触发模式。配置TIM1_SMCR寄存器的TS=101来选择TI1作为输入源。
当TI1上出现一个上升沿时,TIF标志被设置,计数器开始在ETR的上升沿计数。
TI1信号的上升沿和计数器实际时钟之间的延时取决于TI1输入端的重同步电路。
ETR信号的上升沿和计数器实际时钟之间的延时取决于ETRP输入端的重同步电路。
(图49:STM8外部时钟模式2+触发模式下的控制电路)
|
STM8 触发同步
——