在学习江科协的6-7TIM编码器接口内,突然GET到了正交编码器的执行逻辑所包含的意思
STM32定时器接口判断的时候 只需 判断边沿 和另一相的状态,通过判断这两个变量,就可以了解到 这个编码器是正转还是反转
比如A相上升沿 这时STM32芯片会判断B相的状态
对于B相 他的状态只有两种 高电平或者低电平
当B相是高电平时电机就是反转 当B相是低电平电机就是正转
当这种逻辑放到电路内的话流程图就是江科大学长说的这个
设置两个 GPIO 引脚口用来获取A B的信号
其中一个是 TI1FP1 另一个是TI2FP2 这个就是两个 GPIO 引脚口获取到的信号
这个时候STM32芯片通过判断 TI1FP1和TI2FP2 信号就可以了解到电机是正转还是反转了
具体方法如江科协的图
图中的有效边沿 意思是你是选择A相计数获取电平,还是选择B相计数获取电平,还是两个都要获取电平。
如果你只在A相计数的话,那么左上角的图中B相的下两行就消除,那么关于B相的边沿信号就获取不到,于是表中仅在TI1计数的那两行中,TI2FP2的全部不计数
当TI1FP1和TI2FP2都计数的时候 判断正反转会更加准确,这时通过左上角的表中我们会发现,A相上升对应的是TI1FP1上升,B相低电平 此时编码器的信号是向上计数 ,同样的在左上角的表中找到的全部都是向上计数。
于是当编码器正转的时候编码器会向上计数,CNT计数器会自增, 但是当编码器反转这时,CNT计算器会自减
正常来说由于CNT自减的话 0的后一项是65535,我们需要的是-1,-2,-3...所以我们需要增加一个补码,将65535这个16位的无符号数转化为一个16位的有符号数。