pstd2/User/App/motor.h

117 lines
3.9 KiB
C

/*
* @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