| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #ifndef _ENC_INTF_H__
- #define _ENC_INTF_H__
- #include "os/os_types.h"
- #include "bsp/bsp.h"
- #define PWM_TIME_CLK 10000000U
- #ifdef GD32_FOC_DEMO
- #define ENC_A_GROUP GPIOA
- #define ENC_A_PIN GPIO_PIN_6
- #define ENC_A_RCU RCU_GPIOA
- #define ENC_A_MODE GPIO_MODE_IN_FLOATING
- #define ENC_B_GROUP GPIOA
- #define ENC_B_PIN GPIO_PIN_7
- #define ENC_B_RCU RCU_GPIOA
- #define ENC_B_MODE GPIO_MODE_IN_FLOATING
- #define ENC_PWM_GROUP GPIOB
- #define ENC_PWM_PIN GPIO_PIN_6
- #define ENC_PWM_RCU RCU_GPIOB
- #define ENC_PWM_MODE GPIO_MODE_IN_FLOATING
- #define ENC_I_GROUP GPIOB /*测量编码器的ABI的I信号,360度同步一次*/
- #define ENC_I_PIN GPIO_PIN_0
- #define ENC_I_RCU RCU_GPIOB
- #define ENC_I_MODE GPIO_MODE_IPU
- #define ENC_I_IRQ EXTI0_IRQn
- #define ENC_I_EXTI EXTI_0
- #define ENC_I_EXIT_SRC_GROUP GPIO_PORT_SOURCE_GPIOB
- #define ENC_I_EXIT_SRC_PIN GPIO_PIN_SOURCE_0
- #define ENC_TIMER TIMER2 /* 测量编码器的ABI信号的AB信号 */
- #define ENC_TIMER_RCU RCU_TIMER2
- #define ENC_TIMER_IRQ TIMER2_IRQn
- #define ENC_TIMER_IRQHandler TIMER2_IRQHandler
- #define ENC_PWM_TIMER TIMER3 /* 测量绝对编码器PWM输出的占空比,获取转子angle*/
- #define ENC_PWM_TIMER_RCU RCU_TIMER3
- #define ENC_PWM_TIMER_IRQ TIMER3_IRQn
- #define ENC_PWM_TIMER_CHAN TIMER_CH_0
- #define ENC_PWM_TIMER_IRQ_CH TIMER_INT_CH0
- #define ENC_PWM_TIMER_INT_FLG TIMER_INT_FLAG_CH0
- #define ENC_PWM_IRQHandler TIMER3_IRQHandler
- #else
- #define ENC_A_GROUP GPIOB
- #define ENC_A_PIN GPIO_PIN_8
- #define ENC_B_GROUP GPIOB
- #define ENC_B_PIN GPIO_PIN_7
- #define ENC_PWM_GROUP GPIOB
- #define ENC_PWM_PIN GPIO_PIN_6
- #endif
- #define ENC_DIR_UP 1
- #define ENC_DIR_DOWN 2
- #define ENC_PWM_Calc_P(t) ((float)t / (float)PWM_TIME_CLK)
- #define ENC_COUNT TIMER_CNT(ENC_TIMER)
- #define ENC_Direction() ((TIMER_CTL0(ENC_TIMER) & TIMER_CTL0_DIR)?ENC_DIR_DOWN:ENC_DIR_UP)
- #define ENC_OverFlow() ((TIMER_INTF(ENC_TIMER) & TIMER_FLAG_UP)?true:false)
- #define ENC_ClearUpFlags() (TIMER_INTF(ENC_TIMER) = (~(uint32_t)TIMER_FLAG_UP))
- void enc_intf_quadrature_init(u32 rate);
- void enc_intf_pwm_counter(void);
- void enc_intf_init(u32 rate);
- #endif /*_ENC_INTF_H__*/
|