最近项目用到了一些单片机的编码器功能,有以下几种:
协议模式(串口,485-RTU,IIC等);
脉冲模式(2相,3相等);
而这两种模式的编码器分别具有不同的优劣点。
优点:
协议模式:
在经过实际测试后,发现协议模式的编码器,操作比较简单,通常只需要通过对应的通
信接口接收对应的数据即可。
脉冲模式:
精准度比较高,数据可靠,不会丢失数据。
缺点:
协议模式:
当使用速度比较快的时候,协议模式的编码器容易掉帧;
脉冲模式:
需要单独设计接口,需要考虑电气性能影响,操作复杂。
在结合我的应用场景,经过综合考虑后,还是决定使用脉冲模式,具有ABZ三相的编码器。
在STM32上使用这种编码器还是比较简单的,STM32的高级定时器一般都会有encoder模式。关键词可以搜索 STM32cube encoder。
而当前STM32供货仍然不很稳定,使用国产芯片替代是常见的操作。
我使用了国民技术的N32G452RCL7型号芯片,基于RT-Thread实现了2、3相的编码器接口。
上代码:
drv_pluse_encoder.c
/** Cop