MW22-02A/BSP/Driver/tmc2160/tmc2160.h

394 lines
16 KiB
C
Raw Normal View History

2025-05-21 01:55:40 +00:00
#ifndef _TMC2160_H_
#define _TMC2160_H_
#include "ptz_type_select.h"
#include "gd32f4xx_gpio.h"
#include "agent_hyt.h"
#ifdef TMC2160
#define ADD 0x80
#define TMC2160_GCONF 0x00 //((ADD | TMC2160_GCONF)<<32) | 0x314c,,ʹ<><CAB9>DIAG0<47><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>DIAG1<47><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>ź<EFBFBD>
#define TMC2160_GSTAT 0x01 //((ADD | TMC2160_GSTAT)<<32) | 0x07,<2C><>д1<D0B4><31><EFBFBD>㣬״̬<D7B4><CCAC>־
#define TMC2160_IOIN 0x04 //ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
#define TMC2160_SHORT_CONF 0x09 //<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
#define TMC2160_DRV_CONF 0x0A //((ADD | TMC2160_DRV_CONF)<<32) | 0x0820
#define TMC2160_GLOBAL_SCALER 0x0B //д0
#define TMC2160_IHOLD_IRUN 0x10 //8-12Ϊ<32><CEAA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>0x14:((ADD | TMC2160_IHOLD_IRUN)<<32)|(0x14<<8)
#define TMC2160_TPOWERDOWN 0x11 //((ADD | TMC2160_TPOWERDOWN)<<32) | 0x02
#define TMC2160_TSTEP 0x12 //ֻ<><D6BB>
#define TMC2160_TPWMTHRS 0x13
#define TMC2160_TCOOLTHRS 0x14
#define TMC2160_THIGH 0x15
#define TMC2160_XDIRECT 0x2D
#define TMC2160_VDCMIN 0x33
#define TMC2160_MSLUT0 0x60
#define TMC2160_MSLUT1 0x61
#define TMC2160_MSLUT2 0x62
#define TMC2160_MSLUT3 0x63
#define TMC2160_MSLUT4 0x64
#define TMC2160_MSLUT5 0x65
#define TMC2160_MSLUT6 0x66
#define TMC2160_MSLUT7 0x67
#define TMC2160_MSLUTSEL 0x68
#define TMC2160_MSLUTSTART 0x69
#define TMC2160_MSCNT 0x6A
#define TMC2160_MSCURACT 0x6B
#define TMC2160_CHOPCONF 0x6C //((ADD | TMC2160_CHOPCONF)<<32) | 0x5110083,24-27λ<37><CEBB><EFBFBD><EFBFBD>ϸ<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>24λ
#define TMC2160_COOLCONF 0x6D //<2F><><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TMC2160_DCCTRL 0x6E //<2F><><EFBFBD><EFBFBD>
#define TMC2160_DRV_STATUS 0x6F //ֻ<><D6BB>
#define TMC2160_PWMCONF 0x70 //((ADD | TMC2160_PWMCONF)<<32) | 0xc401321e<31><65>ʱ<EFBFBD><CAB1>35.1KHZ
#define TMC2160_PWM_SCALE 0x71 //ֻ<><D6BB><><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TMC2160_PWM_AUTO 0x72 //ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EAB6A8>ƫ<EFBFBD><C6AB>ֵ
#define TMC2160_LOST_STEPS 0x73 //ֻ<><D6BB><EFBFBD><EFBFBD>
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
#define TMC2160_H_POWER_OFF gpio_bit_reset(GPIOE,GPIO_PIN_0)
#define TMC2160_H_POWER_ON gpio_bit_set(GPIOE,GPIO_PIN_0)
#define TMC2160_V_POWER_OFF gpio_bit_reset(GPIOE,GPIO_PIN_1)
#define TMC2160_V_POWER_ON gpio_bit_set(GPIOE,GPIO_PIN_1)
/// ===== SPI<50><49><EFBFBD><EFBFBD> =====
#define TMC2160_SCLK_LOW gpio_bit_reset(GPIOE,GPIO_PIN_13)
#define TMC2160_SCLK_HIGH gpio_bit_set(GPIOE,GPIO_PIN_13)
#define TMC2160_SDATI_0 gpio_bit_reset(GPIOE,GPIO_PIN_14)
#define TMC2160_SDATI_1 gpio_bit_set(GPIOE,GPIO_PIN_14)
#define TMC2160_SDATO_READ gpio_input_bit_get(GPIOE, GPIO_PIN_15)
// #define TMC2160_SDATO_0 drv_gpio_clrbit(TMC2160_SDATO_PORT,TMC2160_SDATO_PIN)
// #define TMC2160_SDATO_1 drv_gpio_setbit(TMC2160_SDATO_PORT,TMC2160_SDATO_PIN)
/// ===== ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====
/// ===== <20><><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD> =====
/// ===== IOģʽ =====
//SPIƬѡ<C6AC><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TMC2160_HORI_CSN_ENABLE gpio_bit_reset(GPIOD,GPIO_PIN_15) //<2F>͵<EFBFBD>ƽʹ<C6BD><CAB9>SPI
#define TMC2160_HORI_CSN_DISABLE gpio_bit_set(GPIOD,GPIO_PIN_15)
//<2F><><EFBFBD>Ͻ<EFBFBD><CFBD>գ<EFBFBD><D5A3>͵<EFBFBD>ƽΪ<C6BD><CEAA><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><DAB9>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD>ȡ
#define TMC2160_HORI_DIAG1_READ gpio_input_bit_get(GPIOD, GPIO_PIN_13)
#define TMC2160_HORI_DIAG0_READ gpio_input_bit_get(GPIOD, GPIO_PIN_14)
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>R<EFBFBD><52>ת<EFBFBD><D7AA>F<EFBFBD><46>ת
#define TMC2160_HORI_DIR_R gpio_bit_reset(GPIOD,GPIO_PIN_11) //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
#define TMC2160_HORI_DIR_F gpio_bit_set(GPIOD,GPIO_PIN_11)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʼ<EFBFBD><CABC>Ϊ<EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TMC2160_HORI_DISABLE gpio_bit_set(GPIOD,GPIO_PIN_10) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽʹ<C6BD><CAB9>
#define TMC2160_HORI_ENABLE gpio_bit_reset(GPIOD,GPIO_PIN_10)
/// ===== <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====
/// ===== <20><><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD> =====
/// ===== IOģʽ =====
//SPIƬѡ<C6AC><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TMC2160_VERT_CSN_ENABLE gpio_bit_reset(GPIOA,GPIO_PIN_11) //<2F>͵<EFBFBD>ƽʹ<C6BD><CAB9>SPI
#define TMC2160_VERT_CSN_DISABLE gpio_bit_set(GPIOA,GPIO_PIN_11)
//<2F><><EFBFBD>Ͻ<EFBFBD><CFBD>գ<EFBFBD><D5A3>͵<EFBFBD>ƽΪ<C6BD><CEAA><EFBFBD><EFBFBD>״̬
#define TMC2160_VERT_DIAG1_READ gpio_input_bit_get(GPIOA, GPIO_PIN_8)
#define TMC2160_VERT_DIAG0_READ gpio_input_bit_get(GPIOC, GPIO_PIN_9)
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>R<EFBFBD><52>ת<EFBFBD><D7AA>F<EFBFBD><46>ת
#define TMC2160_VERT_DIR_R gpio_bit_reset(GPIOC,GPIO_PIN_8) //<2F><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
#define TMC2160_VERT_DIR_F gpio_bit_set(GPIOC,GPIO_PIN_8)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʼ<EFBFBD><CABC>Ϊ<EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TMC2160_VERT_DISABLE gpio_bit_set(GPIOC,GPIO_PIN_7) //<2F>͵<EFBFBD>ƽʹ<C6BD><CAB9>
#define TMC2160_VERT_ENABLE gpio_bit_reset(GPIOC,GPIO_PIN_7)
/// ===== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ =====
#define TMC2160_1_1_STEP 0
#define TMC2160_1_2_STEP 1
#define TMC2160_1_4_STEP 2
#define TMC2160_1_8_STEP 3
#define TMC2160_1_16_STEP 4
#define TMC2160_1_32_STEP 5
#define TMC2160_1_64_STEP 6
#define TMC2160_1_128_STEP 7
#define TMC2160_1_256_STEP 8
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
/// ===== ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> =====
// 1/8ϸ<38><CFB8>
#define PTZ_HORI_1_8_STEP_V_MAX 0.0//750.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/minPTZ_HORI_MOTOR_MAX_SPEED
#define PTZ_HORI_1_8_STEP_V_MIN 0.0//500.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/16ϸ<36><CFB8>
#define PTZ_HORI_1_16_STEP_V_MAX 500.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_HORI_1_16_STEP_V_MIN 250.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/32ϸ<32><CFB8>
#define PTZ_HORI_1_32_STEP_V_MAX 250.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_HORI_1_32_STEP_V_MIN 100.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/64ϸ<34><CFB8>
#define PTZ_HORI_1_64_STEP_V_MAX 100.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_HORI_1_64_STEP_V_MIN 1.0//50.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/128ϸ<38><CFB8>
#define PTZ_HORI_1_128_STEP_V_MAX 0.0//50.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_HORI_1_128_STEP_V_MIN 0.0//1.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
/// ===== <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> =====
// 1/8ϸ<38><CFB8>
//#define PTZ_VERT_1_8_STEP_V_MAX PTZ_VERT_MOTOR_MAX_SPEED//210.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
//#define PTZ_VERT_1_8_STEP_V_MIN 50.0//128.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/16ϸ<36><CFB8>
#define PTZ_VERT_1_16_STEP_V_MAX 0.0//500.0//128.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_VERT_1_16_STEP_V_MIN 0.0//250.0//37.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/32ϸ<32><CFB8>
#define PTZ_VERT_1_32_STEP_V_MAX 300.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_VERT_1_32_STEP_V_MIN 100.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/64ϸ<34><CFB8>
#define PTZ_VERT_1_64_STEP_V_MAX 100.0//18.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_VERT_1_64_STEP_V_MIN 50.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/128ϸ<38><CFB8>
#define PTZ_VERT_1_128_STEP_V_MAX 50.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_VERT_1_128_STEP_V_MIN 1.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
#endif
#ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V
/// ===== ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> =====
// 1/8ϸ<38><CFB8>
#define PTZ_HORI_1_8_STEP_V_MAX 750.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/minPTZ_HORI_MOTOR_MAX_SPEED
#define PTZ_HORI_1_8_STEP_V_MIN 500.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/16ϸ<36><CFB8>
#define PTZ_HORI_1_16_STEP_V_MAX 500.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_HORI_1_16_STEP_V_MIN 250.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/32ϸ<32><CFB8>
#define PTZ_HORI_1_32_STEP_V_MAX 250.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_HORI_1_32_STEP_V_MIN 100.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/64ϸ<34><CFB8>
#define PTZ_HORI_1_64_STEP_V_MAX 100.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_HORI_1_64_STEP_V_MIN 1.0//50.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/128ϸ<38><CFB8>
#define PTZ_HORI_1_128_STEP_V_MAX 0.0//50.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_HORI_1_128_STEP_V_MIN 0.0//1.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
/// ===== <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> =====
// 1/8ϸ<38><CFB8>
//#define PTZ_VERT_1_8_STEP_V_MAX PTZ_VERT_MOTOR_MAX_SPEED//210.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
//#define PTZ_VERT_1_8_STEP_V_MIN 50.0//128.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/16ϸ<36><CFB8>
#define PTZ_VERT_1_16_STEP_V_MAX 500.0//128.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_VERT_1_16_STEP_V_MIN 250.0//37.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/32ϸ<32><CFB8>
#define PTZ_VERT_1_32_STEP_V_MAX 250.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_VERT_1_32_STEP_V_MIN 100.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/64ϸ<34><CFB8>
#define PTZ_VERT_1_64_STEP_V_MAX 100.0//18.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_VERT_1_64_STEP_V_MIN 50.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
// 1/128ϸ<38><CFB8>
#define PTZ_VERT_1_128_STEP_V_MAX 50.0//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>r/min
#define PTZ_VERT_1_128_STEP_V_MIN 1.0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сת<D0A1><D7AA>r/min
#endif
/// ===== <20>Ӽ<EFBFBD><D3BC><EFBFBD>Ĭ<EFBFBD><C4AC>ʱ<EFBFBD><CAB1> =====
#define PTZ_HORI_ACC_TIME_MAX 3000.0 //<2F><>0<EFBFBD><30><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1>,<2C><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
#define PTZ_HORI_DEC_TIME_MAX 1000.0 //<2F><>0<EFBFBD><30><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1> <20><EFBFBD><E8B6A8><EFBFBD><EFBFBD>
#define PTZ_HORI_DEC_TIME_DEF 1000.0 //<2F><>0<EFBFBD><30><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1> <20><><EFBFBD>ټ<EFBFBD><D9BC><EFBFBD>
#define PTZ_VERT_ACC_TIME_MAX 3000.0//<2F><>0<EFBFBD><30><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1>
#define PTZ_VERT_DEC_TIME_MAX 1000.0 //<2F><>0<EFBFBD><30><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1> <20><EFBFBD><E8B6A8><EFBFBD><EFBFBD>
#define PTZ_VERT_DEC_TIME_DEF 1000.0 //<2F><>0<EFBFBD><30><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD>ɲ<EFBFBD><C9B2><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ʱ<EFBFBD><CAB1> <20><><EFBFBD>ټ<EFBFBD><D9BC><EFBFBD>
/// ===== <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
#define TMC2160_MOTOR_DIR_FWD 1
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
#define TMC2160_MOTOR_DIR_REV 3//0
/// ===== <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ɲ<EFBFBD><C9B2> =====
///<2F><><EFBFBD><EFBFBD>ɲ<EFBFBD><C9B2>
#define TMC2160_MOTOR_DISABLE 0
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TMC2160_MOTOR_ENABLE 1
/// ===== 24V<34><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>TORQUEֵ =====
#define TMC2160_HORI_TORQUE_VALUE 16//Ĭ<><C4AC>ֵ0-31<33><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16-31<33><31>10<31><30><EFBFBD><EFBFBD>
#define TMC2160_VERT_TORQUE_VALUE 20//16//Ĭ<><C4AC>ֵ
#ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V
#define CURR_GLOBAL_SCALER 160//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>ȡ0ʱΪ<CAB1><CEAA><EFBFBD><EFBFBD>ֵ256,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ33<33><33>ŷ
#endif
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
#define CURR_GLOBAL_SCALER 200//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>ȡ0ʱΪ<CAB1><CEAA><EFBFBD><EFBFBD>ֵ256
#endif
#define TMC2160_WORK_TORQUE_MAX 31//<2F><><EFBFBD><EFBFBD>Ť<EFBFBD><C5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
#define TMC2160_WORK_TORQUE_MIN 5 //<2F><><EFBFBD><EFBFBD>Ť<EFBFBD><C5A4><EFBFBD><EFBFBD>Сֵ
/// ===== ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====
#define TMC2160_HORI 0
#define TMC2160_VERT 1
/// ===== <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢 =====
#define TMC2160_PARAMETER_FLASH_ADD 0X008A0000//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2>ַ
#define TMC2160_PARAMETER_BACKUP_FLASH_ADD 0X008B0000//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô洢<C3B4><E6B4A2>ַ
#define TMC2160_PARAMETER_SAVE_FLASH_NUM 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TMC2160_PARAMETER_READ_FLASH_NUM 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
/// ===== <20><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
typedef struct _TMC2160Regis_
{
unsigned long int gstae;
unsigned long int g_conf;
unsigned long int drv_conf;
unsigned long int global_scaler;
unsigned long int tpowerdown;
unsigned long int pwmconf;
unsigned long int tpwmthrs;
unsigned long int i_run;
unsigned long int chop_conf;
unsigned long int coolconf;
unsigned long int short_conf;
}TMC2160Regis;
/// ===== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
typedef struct _TMC2160Control_
{
float set_v;//<2F><EFBFBD><E8B6A8>ת<EFBFBD><D7AA>
unsigned int start_f;//<2F><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
float set_f;//<2F>趨Ƶ<E8B6A8><C6B5>
float f;//<2F><>ǰʵ<C7B0><CAB5>Ƶ<EFBFBD><C6B5>
unsigned char microstep;//ϸ<>ֵȼ<D6B5>Ϊ0,1,2,3,4,5,6,7,8
unsigned short int microstep_vlue;//ϸ<><CFB8>ֵ1,2,4,8,16,32,64,128,256
char off_on;//оƬ<D0BE><C6AC><EFBFBD><EFBFBD>״̬<D7B4><CCAC>0<EFBFBD>ر<EFBFBD>״̬<D7B4><CCAC>1<EFBFBD><31><EFBFBD><EFBFBD>״̬
unsigned char actual_microstep;//ʵ<><CAB5><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>õ<EFBFBD>оƬ<D0BE>ڵ<EFBFBD>ϸ<EFBFBD>ֵȼ<D6B5><C8BC><EFBFBD>0,1,2,3,4,5,6,7,8
float stop_angle;
}TMC2160Control;
typedef struct _SPIpacka_
{
unsigned char data[5];
}SPIpacka;
/// ===== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====
typedef struct _TMC2160Parameter_
{
char hori_step_1_1_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_1_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_1_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char hori_step_1_2_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_2_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_2_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char hori_step_1_4_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_4_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_4_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char hori_step_1_8_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_8_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_8_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char hori_step_1_16_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_16_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_16_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char hori_step_1_32_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_32_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_32_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char hori_step_1_64_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_64_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_64_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char hori_step_1_128_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_128_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_128_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char hori_step_1_256_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float hori_step_1_256_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float hori_step_1_256_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
unsigned char hori_work_torque;//<2F><><EFBFBD><EFBFBD>ʱtorque<75><65>ֵ
// unsigned char hori_self_lock_micr;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ϸ<EFBFBD>ֵȼ<D6B5><C8BC><EFBFBD>ֵΪ0<CEAA><30>1<EFBFBD><31>2<EFBFBD><32>3<EFBFBD><33>4<EFBFBD><34>5<EFBFBD><35>6<EFBFBD><36>7<EFBFBD><37>8
// unsigned char hori_self_lock_torque;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>torque<75><65>ֵ
unsigned char hori_global_scaler;//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned short int hori_acc_time_max;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
unsigned short int hori_dec_time_max;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC>ٵ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
char vert_step_1_1_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_1_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_1_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char vert_step_1_2_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_2_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_2_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char vert_step_1_4_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_4_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_4_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char vert_step_1_8_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_8_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_8_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char vert_step_1_16_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_16_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_16_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char vert_step_1_32_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_32_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_32_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char vert_step_1_64_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_64_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_64_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char vert_step_1_128_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_128_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_128_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
char vert_step_1_256_en;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
float vert_step_1_256_v_max;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
float vert_step_1_256_v_min;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
unsigned char vert_work_torque;//<2F><><EFBFBD><EFBFBD>ʱtorque<75><65>ֵ
// unsigned char vert_self_lock_micr;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ϸ<EFBFBD>ֵȼ<D6B5><C8BC><EFBFBD>ֵΪ0<CEAA><30>1<EFBFBD><31>2<EFBFBD><32>3<EFBFBD><33>4<EFBFBD><34>5<EFBFBD><35>6<EFBFBD><36>7<EFBFBD><37>8
// unsigned char vert_self_lock_torque;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>torque<75><65>ֵ
unsigned char vert_global_scaler;//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned short int vert_acc_time_max;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD>ٵ<EFBFBD><D9B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
unsigned short int vert_dec_time_max;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC>ٵ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
unsigned int crc;//Ч<><D0A7><EFBFBD><EFBFBD>
}TMC2160Parameter;
unsigned long int tmc2160_write_hori_data(char choice, unsigned char x1, unsigned char x2, unsigned char x3,unsigned char x4,unsigned char x5);
unsigned long int tmc2160_ihold_irun_data(unsigned char data);
unsigned long int tmc2160_write_vert_data(char choice, unsigned char x1, unsigned char x2, unsigned char x3,unsigned char x4,unsigned char x5);
unsigned long int tmc2160_chopconf_data(unsigned char data);
char tmc2160_write_register(char choice, unsigned char mode, unsigned char data);
char tmc2160_data_init();
char tmc2160_set_hori_dir(char dir);
char tmc2160_set_vert_dir(char dir);
char tmc2160_hori_motor_enable(char state);
char tmc2160_vert_motor_enable(char state);
void tmc2160_init();
void tmc2160_parameter_process(char dev, PTZ_DATA_PACK *pack);
void tmc2160_parameter_upload(char dev);
void tmc2160_state_return(char dev);
void read_regis();
void restart_tmc2160();
void h_tmc2160_power_on();
void v_tmc2160_power_on();
#endif
#endif