/* * @Author: DaMing zxm5337@163.com * @Date: 2024-03-28 09:58:33 * @LastEditors: 张小明 zxm5337@163.com * @LastEditTime: 2024-05-27 19:13:36 * @FilePath: \Proxi_CheckBoard\User\App\motor.h * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ #ifndef __MOTO_H__ #define __MOTO_H__ #include "data_type_def.h" #include "tim.h" #define PWM_DEFAULT 50 //#define FREQ_DEFAULT 80000 //#define FREQ_DEFAULT 60000 #define FREQ_DEFAULT 20000 #define LOAD_DEFAULT 8 #define MOTOR_A 0XF0 #define MOTOR_B 0X0F #define DIR_FORWARD 0 #define DIR_REVERSED 1 #define TMC2240A_TIMEOUT_VALUE 100 #define TMC2240A_A_NSS_H() HAL_GPIO_WritePin(MOTOR_SPI_CS_A_GPIO_Port, MOTOR_SPI_CS_A_Pin, GPIO_PIN_SET) #define TMC2240A_A_NSS_L() HAL_GPIO_WritePin(MOTOR_SPI_CS_A_GPIO_Port, MOTOR_SPI_CS_A_Pin, GPIO_PIN_RESET) #define TMC2240A_B_NSS_H() HAL_GPIO_WritePin(MOTOR_SPI_CS_B_GPIO_Port, MOTOR_SPI_CS_B_Pin, GPIO_PIN_SET) #define TMC2240A_B_NSS_L() HAL_GPIO_WritePin(MOTOR_SPI_CS_B_GPIO_Port, MOTOR_SPI_CS_B_Pin, GPIO_PIN_RESET) #define TMC2240A_A_EN_H() HAL_GPIO_WritePin(MOTOR_A_EN_GPIO_Port, MOTOR_A_EN_Pin, GPIO_PIN_SET) #define TMC2240A_A_EN_L() HAL_GPIO_WritePin(MOTOR_A_EN_GPIO_Port, MOTOR_A_EN_Pin, GPIO_PIN_RESET) #define TMC2240A_B_EN_H() HAL_GPIO_WritePin(MOTOR_B_EN_GPIO_Port, MOTOR_B_EN_Pin, GPIO_PIN_SET) #define TMC2240A_B_EN_L() HAL_GPIO_WritePin(MOTOR_B_EN_GPIO_Port, MOTOR_B_EN_Pin, GPIO_PIN_RESET) #define TMC2240A_A_DIR_H() HAL_GPIO_WritePin(MOTOR_A_DIR_GPIO_Port, MOTOR_A_DIR_Pin, GPIO_PIN_SET) #define TMC2240A_A_DIR_L() HAL_GPIO_WritePin(MOTOR_A_DIR_GPIO_Port, MOTOR_A_DIR_Pin, GPIO_PIN_RESET) #define TMC2240A_B_DIR_H() HAL_GPIO_WritePin(MOTOR_B_DIR_GPIO_Port, MOTOR_B_DIR_Pin, GPIO_PIN_SET) #define TMC2240A_B_DIR_L() HAL_GPIO_WritePin(MOTOR_B_DIR_GPIO_Port, MOTOR_B_DIR_Pin, GPIO_PIN_RESET) #define TMC2240A_RST_H() HAL_GPIO_WritePin(MOTOR_NRST_GPIO_Port, MOTOR_NRST_Pin, GPIO_PIN_SET) #define TMC2240A_RST_L() HAL_GPIO_WritePin(MOTOR_NRST_GPIO_Port, MOTOR_NRST_Pin, GPIO_PIN_RESET) #define TMC2240A_A_PUL_H() HAL_GPIO_WritePin(MOTOR_A_PUL_GPIO_Port, MOTOR_A_PUL_Pin, GPIO_PIN_SET) #define TMC2240A_A_PUL_L() HAL_GPIO_WritePin(MOTOR_A_PUL_GPIO_Port, MOTOR_A_PUL_Pin, GPIO_PIN_RESET) #define TMC2240A_B_PUL_H() HAL_GPIO_WritePin(MOTOR_B_PUL_GPIO_Port, MOTOR_B_PUL_Pin, GPIO_PIN_SET) #define TMC2240A_B_PUL_L() HAL_GPIO_WritePin(MOTOR_B_PUL_GPIO_Port, MOTOR_B_PUL_Pin, GPIO_PIN_RESET) #define TMC2240A_SCK_H() HAL_GPIO_WritePin(MOTOR_SPI2_SCK_GPIO_Port, MOTOR_SPI2_SCK_Pin, GPIO_PIN_SET) #define TMC2240A_SCK_L() HAL_GPIO_WritePin(MOTOR_SPI2_SCK_GPIO_Port, MOTOR_SPI2_SCK_Pin, GPIO_PIN_RESET) typedef struct { uint8_t index; uint8_t direction; uint16_t enc1; uint16_t enc1_old; int16_t enc2; int32_t enc; int32_t enc_old; int32_t enc_sub; uint32_t timer; } encoder_t; typedef struct { BOOL en; BOOL force_near_flag; BOOL force_far_flag; BOOL limit_near_flag; BOOL limit_far_flag; BOOL limit_flag; BOOL stall_flag; BOOL lvdt_flag; BOOL end_flag; BOOL zero_flag; BOOL zero_ack; uint8_t ctr_cmd; uint8_t index; uint8_t direction; float32 Sn; uint32_t step; uint32_t step_count; float32 pre_position; float32 position_pv; float32 position_sv; float32 position_sub; float32 position_zero; uint32_t freq; uint32_t pwm; uint32_t load_pv; uint32_t load_sv; } motor_t; extern uint8_t motor_X; extern encoder_t encoder_A; extern encoder_t encoder_B; extern motor_t motor_A; extern motor_t motor_B; void fun_ini_encoder(TIM_HandleTypeDef *htim, encoder_t *encoder); void fun_ini_tmc2240a(motor_t *motor); void fun_get_encoder(TIM_HandleTypeDef *htim, encoder_t *encoder); void fun_set_motor(motor_t *motor); void fun_pwm_it_callback(motor_t *motor); // void tmc2240a_read_Write(uint8_t index, uint8_t *pTxData, uint8_t *pRxData, uint16_t size); #endif