输入捕获模式

  

异或那块先不管他,好像跟编码器有关,输入有个特色就是可以把TI的输入搞到CC1上去,也可以把T2的输入搞到CC1上去,其实也可以把T1搞到CC1上去同时把T1搞到CC2上去,这样就有了后来的PWM输入。

 

输出上的特色是不直接输出,而是有个OC1REF,这样可以定义高有效还是低有效,输出自己需要的有效电平。

 

复位门控 触发

 

所谓从模式简单理解就是受控于别人了,包括何时启动、何时停止、何时复位。相关作用请看手册。提示一点就是进入这三种模式后时钟是谁的问题?肯定不是外部时钟1了,可以是内部时钟和外部时钟2.

 

接着看实验,PWM方式的原理是这样的,如前文提到过输入时可以把T1映射到CC1上去同时映射到CC2上,将CC1和CC2的捕获边沿搞成相反的,比如CC1捕获T1上升沿,CC2捕获T1下降沿,还要再设置T1为复位从模式,上升沿有效,这样T1上升沿后计数器开始计数。下降沿CC2捕获发生,此为PWM占空比,在来一个上升沿,CC1捕获发生此为PWM周期。注意CC1捕获的第一次无效。

 

这是从模式跟输入捕获的一种组合使用,从模式还可以跟输出比较组合使用。比如手册上的单脉冲实验。

 

先得说说主模式的问题。在CR2寄存器中的MMS位决定了定时器的主模式方式,即决定TRGO.几种方式可以参看手册。要说明一点就是一个定期器既可以是主模式同时它也是从模式,这就好像你是一个中层干部一样,既可以领导别人同时又被别人领导,这个不冲突的。

 

输入捕获模式

在输入捕获模式下,当检测到ICx信号上相应的边沿后,计数器的当前值被锁存到捕获/比较寄存器(TIMx_CCRx)中。

 

 

当发生捕获事件时,相应的CCxIF标志(TIMx_SR寄存器)被置1,

如果开放了中断或者DMA操作,则将产生中断或者DMA请求。

如果发生捕获事件时CCxIF标志已经为高,那么重复捕获标志CCxOF(TIMx_SR寄存器)被置1。

 

 

写CCxIF=0可清除CCxIF,或读取存储在TIMx_CCRx寄存器中的捕获数据也可清除CCxIF。写CCxOF=0可清除CCxOF。

 

以下例子说明如何在TI1输入的上升沿时捕获计数器的值到TIMx_CCR1寄存器中,

步骤如下:

●选择有效输入端:TIMx_CCR1必须连接到TI1输入,所以写入TIMx_CCR1寄存器中的

CC1S=01,只要CC1S不为’00’,通道被配置为输入,并且TIMx_CCR1寄存器变为只读。

 

 

●  根据输入信号的特点,配置输入滤波器为所需的带宽(即输入为TIx时,输入滤波器控制位是TIMx_CCMRx寄存器中的ICxF位)。

 

 

假设输入信号在最多5个内部时钟周期的时间内抖动,

我们须配置滤波器的带宽长于5个时钟周期;因此我们可以(以f DTS 频率)连续采样8次,以确认在TI1上一次真实的边沿变换,即在TIMx_CCMR1寄存器中写入IC1F=0011。

●选择TI1通道的有效转换边沿,在TIMx_CCER寄存器中写入CC1P=0(上升沿)。



●配置输入预分频器。在本例中,我们希望捕获发生在每一个有效的电平转换时刻,因此预分频器被禁止(写TIMx_CCMR1寄存器的IC1PS=00)。


●设置TIMx_CCER寄存器的CC1E=1,允许捕获计数器的值到捕获寄存器中。

 

●如果需要,通过设置TIMx_DIER寄存器中的CC1IE位允许相关中断请求,通过设置

TIMx_DIER寄存器中的CC1DE位允许DMA请求。

 

当发生一个输入捕获时:

 

●产生有效的电平转换时,计数器的值被传送到TIMx_CCR1寄存器。

 

● CC1IF标志被设置(中断标志)。当发生至少2个连续的捕获时,而CC1IF未曾被清除,

CC1OF也被置1。

 

●如设置了CC1IE位,则会产生一个中断。

 

 

●如设置了CC1DE位,则还会产生一个DMA请求。

为了处理捕获溢出,建议在读出捕获溢出标志之前读取数据,这是为了避免丢失在读出捕获溢出标志之后和读取数据之前可能产生的捕获溢出信息。

 

注:设置 TIMx_EGR 寄存器中相应的 CCxG 位,可以通过软件产生输入捕获中断和 / 或 DMA 请求。