编码器接口模式
选择编码器接口模式时,
如果计数器仅在 ⑩TI2 边沿处计数,在 TIMx_SMCR 寄存器中写入 ④SMS=“001”;
如果计数器仅在 ①TI1 边沿处计数,写入 ④SMS=“010”;
如果计数器在 ①TI1 和 ⑩TI2 边沿处均计数,则写入 ④SMS=“011”。
通过编程 TIMx_CCER 寄存器的 ⑧CC1P 和 ⑬CC2P 位,选择 ①TI1 和 ⑩TI2 极性。如果需要,还可对输入滤波器进行编程。⑧CC1NP 和 ⑬CC2NP 必须保持低电平。
①TI1 和 ⑩TI2 两个输入用于连接增量编码器。请参见表 71。如果使能计数器(在 TIMx_CR1 寄存器的 ⑩CEN 位中写入“1”),则计数器的时钟由 ⑤TI1FP1 或 ⑥TI2FP2 上的每次有效信号转换提供。⑤TI1FP1 和 ⑥TI2FP2 是进行输入滤波器和极性选择后 ①TI1 和 ⑩TI2 的信号,如果不进行滤波和反相,则 ⑤TI1FP1=TI1①,⑥TI2FP2=TI2⑩。将根据两个输入的信号转换序列,产生计数脉冲和方向信号。根据该信号转换序列,计数器相应递增或递减计数,同时硬件对 TIMx_CR1 寄存器的 ⑦DIR 位进行相应修改。任何输入(①TI1 或 ⑩TI2)发生信号转换时,都会计算 ⑦DIR 位,无论计数器是仅在 ①TI1 或 ⑩TI2 边沿处计数,还是同时在 ①TI1 和 ⑩TI2 处计数。
编码器接口模式就相当于带有方向选择的外部时钟。这意味着,计数器仅在 0 到 TIMx_ARR⑨ 寄存器中的自动重载值之间进行连续计数(根据具体方向,从 0 递增计数到 ARR,或从 ARR 递减计数到 0)。因此,在启动前必须先配置 TIMx_ARR⑨。同样,捕获、比较、预分频器、重复计数器及触发输出功能继续正常工作。编码器模式和外部时钟模式 2 不兼容,因此不能同时选择。
在此模式下,计数器会根据增量编码器的速度和方向自动进行修改,因此,其内容始终表示编码器的位置。计数方向对应于所连传感器的旋转方向。下表汇总了可能的组合(假设 ①TI1 和 ⑩TI2 不同时切换)。
外部增量编码器可直接与 MCU 相连,无需外部接口逻辑。不过,通常使用比较器将编码器的差分输出转换为数字信号。这样大幅提高了抗噪声性能。用于指示机械零位的第三个编码器输出可与外部中断输入相连,用以触发计数器复位。
图 112 以计数器工作为例,说明了计数信号的生成和方向控制。同时也说明了选择双边沿时 如何对输入抖动进行补偿。将传感器靠近其中一个切换点放置时可能出现这种情况。本例中假设配置如下:
● CC1S=“01”②(TIMx_CCMR1 寄存器,TI1FP1 映射到 ①TI1 上)。
● CC2S=“01”⑪(TIMx_CCMR2 寄存器,TI1FP2 映射到 ⑩TI2 上)。
● CC1P=“0”⑧,CC1NP=“0”⑧,且 IC1F =“0000”③(TIMx_CCER 寄存器,⑤TI1FP1 未反 相,⑤TI1FP1=TI1①)。
● CC2P=“0”⑬,CC2NP=“0”⑬,且 IC2F =“0000”⑫(TIMx_CCER 寄存器,⑥TI1FP2 未反 相,⑥TI1FP2= TI2⑩)。
● SMS=“011”④(TIMx_SMCR 寄存器,两个输入在上升沿和下降沿均有效)。
● CEN=“1”⑭(TIMx_CR1 寄存器,使能计数器)。
--------------------------------------------------------------------------------------------------------
图 113 举例说明 ⑤TI1FP1 极性反相时计数器的行为(除 CC1P=“1”⑧ 外,其它配置与上例 相同)。
定时器配置为编码器接口模式时,会提供传感器当前位置的相关信息。使用另一个配置为捕获模式的定时器测量两个编码器事件之间的周期,可获得动态信息(速度、加速度和减速度)。指示机械零位的编码器输出即可用于此目的。根据两个事件之间的时间间隔,还可定期读取计数器。如果可能,可以将计数器值锁存到第三个输入捕获寄存器来实现此目的(捕获信号必须为周期性信号,可以由另一个定时器产生);还可以通过由实时时钟生成的 DMA 请求读取计数器值。