碰到一个问题,总感觉没有合适的办法,特来此请教。
使用STM32F103仿真编码器的输出,A,B,Z . 其中 A,B输出为对称方波,但是相位有90度的差别,可根据模拟转动方向调整+90度或-90度的相位差。编码器每转一周输出一个Z脉冲。要求最快的方波周期T=1us.
我采用了下列的方法:
1. 采用T/4周期的定时器中断,中断中对A,B,Z操作,并判断是否有转动方向的变化。
结果 T>5us
2. 采用T/2周期的定时器中断,中断中对A,B 预置TIMx的比较输出下操作,并判断是否有转动方向的变化。
结果 T>3us
3.使用T/4周期的定时器中断,触发DMA直接向端口送数据,但是DMA不支持IO端口位地址访问,一次传送会影响整个IO端口. 这样做T可小到1us
请问各位同行,还有什么好办法? |