1800 lines
58 KiB
C
1800 lines
58 KiB
C
|
#include "ptz_type_select.h"
|
|||
|
#include "ptz_struct.h"
|
|||
|
#include "ptz_default_value.h"
|
|||
|
#include "tmc2160.h"
|
|||
|
#include "w25q128.h"
|
|||
|
|
|||
|
|
|||
|
#ifdef TMC2160
|
|||
|
TMC2160Parameter tmc2160_parameter;
|
|||
|
TMC2160Regis hori_regis;
|
|||
|
TMC2160Regis vert_regis;
|
|||
|
unsigned long int version_hori=0;
|
|||
|
unsigned long int version_vert=0;
|
|||
|
|
|||
|
static BSP_OS_SEM ptz_tmc2160_mutex;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
|||
|
static void delay_time(int time)
|
|||
|
{
|
|||
|
for(int i = 0; i < time; i ++)
|
|||
|
{//<2F><>Ƶ200MHZ
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
asm("nop");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>λ<EFBFBD><CEBB>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void h_tmc2160_power_on()
|
|||
|
{
|
|||
|
//<2F><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
|
|||
|
TMC2160_H_POWER_ON;
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
//====<3D><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
tmc2160_data_init();
|
|||
|
|
|||
|
TMC2160_HORI_CSN_DISABLE;
|
|||
|
TMC2160_HORI_DISABLE;
|
|||
|
|
|||
|
//====<3D>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>״̬<D7B4><CCAC>־
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_GSTAT, 0);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 2u);
|
|||
|
//====<3D>Ĵ<EFBFBD><C4B4><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//ˮƽ
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_GLOBAL_SCALER, tmc2160_parameter.hori_global_scaler);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_GCONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_PWMCONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_DRV_CONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_TPOWERDOWN, 0);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_CHOPCONF, TMC2160_1_16_STEP);//ϸ<><CFB8>Ĭ<EFBFBD><C4AC>16
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_IHOLD_IRUN, tmc2160_parameter.hori_work_torque);//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ=20/32*2.3A
|
|||
|
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_TPWMTHRS, 0);
|
|||
|
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_SHORT_CONF, 0);
|
|||
|
#endif
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>λ<EFBFBD><CEBB>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void v_tmc2160_power_on()
|
|||
|
{
|
|||
|
//<2F><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
|
|||
|
TMC2160_V_POWER_ON;
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
//====<3D><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
tmc2160_data_init();
|
|||
|
|
|||
|
TMC2160_VERT_CSN_DISABLE;
|
|||
|
TMC2160_VERT_DISABLE;
|
|||
|
|
|||
|
//====<3D>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>״̬<D7B4><CCAC>־
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_GSTAT, 0);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 2u);
|
|||
|
//====<3D>Ĵ<EFBFBD><C4B4><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><>ֱ
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_GLOBAL_SCALER, tmc2160_parameter.vert_global_scaler);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_GCONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_PWMCONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_DRV_CONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_TPOWERDOWN, 0);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_CHOPCONF, TMC2160_1_16_STEP);//ϸ<><CFB8>Ĭ<EFBFBD><C4AC>16
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_IHOLD_IRUN, tmc2160_parameter.vert_work_torque);//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ=20/32*2.3A
|
|||
|
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_TPWMTHRS, 0);
|
|||
|
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_SHORT_CONF, 0);
|
|||
|
#endif
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
///===== <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====
|
|||
|
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>λ<EFBFBD><CEBB>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void tmc2160_init()
|
|||
|
{
|
|||
|
BSP_OS_SemCreate(&ptz_tmc2160_mutex,1u,"ptz_tmc2160_mutex");
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
rcu_periph_clock_enable(RCU_GPIOA);
|
|||
|
rcu_periph_clock_enable(RCU_GPIOC);
|
|||
|
rcu_periph_clock_enable(RCU_GPIOD);
|
|||
|
rcu_periph_clock_enable(RCU_GPIOE);
|
|||
|
|
|||
|
//GD<47>İ<EFBFBD><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<DEB8><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķϵ縴λ<E7B8B4><CEBB>
|
|||
|
gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_0);//ˮƽ<CBAE><C6BD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_1);//<2F><>ֱ<EFBFBD><D6B1>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0| GPIO_PIN_1);
|
|||
|
//<2F><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>
|
|||
|
TMC2160_H_POWER_ON;
|
|||
|
TMC2160_V_POWER_ON;
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 100u);
|
|||
|
|
|||
|
//====<3D><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
tmc2160_data_init();
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
//SPI
|
|||
|
gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_13);//CLK
|
|||
|
gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_14);//SDI<44><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
gpio_mode_set(GPIOE, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_15);//SDO<44><4F><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>
|
|||
|
gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13| GPIO_PIN_14);
|
|||
|
//====ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_15);//H_CSN
|
|||
|
gpio_mode_set(GPIOD, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_14);//DIAG1
|
|||
|
gpio_mode_set(GPIOD, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_13);//DIAG0
|
|||
|
gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, GPIO_PIN_10);//DRVEN
|
|||
|
gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);//DIR
|
|||
|
gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10| GPIO_PIN_11| GPIO_PIN_5);
|
|||
|
//====<3D><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);//V_CSN
|
|||
|
gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_8);//DIAG1
|
|||
|
gpio_mode_set(GPIOC, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, GPIO_PIN_9);//DIAG0
|
|||
|
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLDOWN, GPIO_PIN_7);//DRVEN
|
|||
|
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_8);//DIR
|
|||
|
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7| GPIO_PIN_8);
|
|||
|
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
|
|||
|
|
|||
|
TMC2160_HORI_CSN_DISABLE;
|
|||
|
TMC2160_HORI_DISABLE;
|
|||
|
TMC2160_VERT_CSN_DISABLE;
|
|||
|
TMC2160_VERT_DISABLE;
|
|||
|
|
|||
|
//====<3D>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>״̬<D7B4><CCAC>־
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_GSTAT, 0);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_GSTAT, 0);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
|||
|
//====<3D>Ĵ<EFBFBD><C4B4><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//ˮƽ
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_GLOBAL_SCALER, tmc2160_parameter.hori_global_scaler);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_GCONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_PWMCONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_DRV_CONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_TPOWERDOWN, 0);
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_CHOPCONF, TMC2160_1_16_STEP);//ϸ<><CFB8>Ĭ<EFBFBD><C4AC>16
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_IHOLD_IRUN, tmc2160_parameter.hori_work_torque);//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ=20/32*2.3A
|
|||
|
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_TPWMTHRS, 0);
|
|||
|
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_SHORT_CONF, 0);
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_COOLCONF, 0);
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
//<2F><>ֱ
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_GLOBAL_SCALER, tmc2160_parameter.vert_global_scaler);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_GCONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_PWMCONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_DRV_CONF, 0);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_TPOWERDOWN, 0);
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_CHOPCONF, TMC2160_1_16_STEP);//ϸ<><CFB8>Ĭ<EFBFBD><C4AC>16
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_IHOLD_IRUN, tmc2160_parameter.vert_work_torque);//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ=20/32*2.3A
|
|||
|
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_TPWMTHRS, 0);
|
|||
|
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_SHORT_CONF, 0);
|
|||
|
#endif
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_COOLCONF, 0);
|
|||
|
|
|||
|
// vert_regis.g_conf = tmc2160_write_hori_data(TMC2160_HORI,TMC2160_DRV_STATUS,0,0,0,0);
|
|||
|
}
|
|||
|
|
|||
|
///===== <20><>д<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>SPIλ40λ<30><CEBB>8λ<38><CEBB>ַ<EFBFBD><D6B7>32λ<32><CEBB><EFBFBD><EFBFBD>
|
|||
|
unsigned long int tmc2160_write_hori_data(char choice, unsigned char x1, unsigned char x2, unsigned char x3,unsigned char x4,unsigned char x5)
|
|||
|
{//choice<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>x2/x3/x4/x5<78><35><EFBFBD><EFBFBD>д<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SPIpacka packa;
|
|||
|
unsigned long int dat=0;
|
|||
|
unsigned char datak[5] = {0};
|
|||
|
char i,j,k;
|
|||
|
unsigned char temp=0;
|
|||
|
packa.data[0] = x1;//<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַλ
|
|||
|
packa.data[1] = x2;//<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
packa.data[2] = x3;//<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
packa.data[3] = x4;//<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
packa.data[4] = x5;//<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
for(k = 0; k < 2; k++)
|
|||
|
{//<2F><><EFBFBD><EFBFBD>2<EFBFBD><32>д<EFBFBD>룬һ<EBA3AC><D2BB><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>ǰSPIд<49><D0B4>ʱ<EFBFBD><CAB1>ͬʱ<CDAC>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>᷵<EFBFBD><E1B7B5><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ɴ<EFBFBD>ʵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ǰд<C7B0><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
TMC2160_VERT_CSN_DISABLE;
|
|||
|
TMC2160_HORI_CSN_ENABLE;
|
|||
|
delay_time(2);
|
|||
|
TMC2160_SCLK_HIGH;
|
|||
|
delay_time(2);
|
|||
|
// //Ƭѡ
|
|||
|
// if(choice == TMC2160_HORI)
|
|||
|
// {
|
|||
|
// TMC2160_HORI_CSN_ENABLE;
|
|||
|
// }else{//TMC2160_VERT
|
|||
|
// TMC2160_VERT_CSN_ENABLE;
|
|||
|
// }
|
|||
|
delay_time(2);
|
|||
|
TMC2160_SCLK_LOW;
|
|||
|
|
|||
|
delay_time(10);
|
|||
|
|
|||
|
for(j = 0; j < 5; j++)
|
|||
|
{
|
|||
|
for(i = 0; i < 8; i++)
|
|||
|
{
|
|||
|
TMC2160_SCLK_LOW;
|
|||
|
if((packa.data[j] & 0x80) != 0)
|
|||
|
{
|
|||
|
TMC2160_SDATI_1;
|
|||
|
}else{
|
|||
|
TMC2160_SDATI_0;
|
|||
|
}
|
|||
|
packa.data[j] = packa.data[j] << 1;
|
|||
|
delay_time(2);
|
|||
|
TMC2160_SCLK_HIGH;
|
|||
|
temp = TMC2160_SDATO_READ;
|
|||
|
datak[j] = datak[j] | (temp << (7-i));
|
|||
|
delay_time(2);
|
|||
|
}
|
|||
|
}
|
|||
|
TMC2160_SCLK_HIGH;
|
|||
|
delay_time(2);
|
|||
|
//Ƭѡʧ<D1A1><CAA7>
|
|||
|
TMC2160_HORI_CSN_DISABLE;
|
|||
|
|
|||
|
dat = datak[0];
|
|||
|
dat = (dat << 8) | datak[1];
|
|||
|
dat = (dat << 8) | datak[2];
|
|||
|
dat = (dat << 8) | datak[3];
|
|||
|
dat = (dat << 8) | datak[4];
|
|||
|
// dat = datak[4];
|
|||
|
|
|||
|
}
|
|||
|
return dat;
|
|||
|
}
|
|||
|
|
|||
|
///===== SPIλ40λ<30><CEBB>8λ<38><CEBB>ַ<EFBFBD><D6B7>32λ<32><CEBB><EFBFBD><EFBFBD>
|
|||
|
unsigned long int tmc2160_write_vert_data(char choice, unsigned char x1, unsigned char x2, unsigned char x3,unsigned char x4,unsigned char x5)
|
|||
|
{//choice<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>x2/x3/x4/x5<78><35><EFBFBD><EFBFBD>д<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
SPIpacka packa;
|
|||
|
unsigned long int dat=0;
|
|||
|
unsigned char datak[5] = {0};
|
|||
|
char i,j,k;
|
|||
|
unsigned char temp=0;
|
|||
|
packa.data[0] = x1;//0x90;
|
|||
|
packa.data[1] = x2;//0xAB;
|
|||
|
packa.data[2] = x3;//0xef;
|
|||
|
packa.data[3] = x4;//0xCD;
|
|||
|
packa.data[4] = x5;//0xbc;
|
|||
|
for(k = 0; k < 2; k++)
|
|||
|
{//<2F><><EFBFBD><EFBFBD>3<EFBFBD><33>д<EFBFBD><D0B4>
|
|||
|
TMC2160_HORI_CSN_DISABLE;
|
|||
|
TMC2160_VERT_CSN_ENABLE;
|
|||
|
delay_time(2);
|
|||
|
TMC2160_SCLK_HIGH;
|
|||
|
delay_time(2);
|
|||
|
// //Ƭѡ
|
|||
|
// if(choice == TMC2160_HORI)
|
|||
|
// {
|
|||
|
// TMC2160_HORI_CSN_ENABLE;
|
|||
|
// }else{//TMC2160_VERT
|
|||
|
// TMC2160_VERT_CSN_ENABLE;
|
|||
|
// }
|
|||
|
delay_time(2);
|
|||
|
TMC2160_SCLK_LOW;
|
|||
|
|
|||
|
delay_time(10);
|
|||
|
|
|||
|
for(j = 0; j < 5; j++)
|
|||
|
{
|
|||
|
for(i = 0; i < 8; i++)
|
|||
|
{
|
|||
|
TMC2160_SCLK_LOW;
|
|||
|
if((packa.data[j] & 0x80) != 0)
|
|||
|
{
|
|||
|
TMC2160_SDATI_1;
|
|||
|
}else{
|
|||
|
TMC2160_SDATI_0;
|
|||
|
}
|
|||
|
packa.data[j] = packa.data[j] << 1;
|
|||
|
delay_time(2);
|
|||
|
TMC2160_SCLK_HIGH;
|
|||
|
temp = TMC2160_SDATO_READ;
|
|||
|
datak[j] = datak[j] | (temp << (7-i));
|
|||
|
delay_time(2);
|
|||
|
}
|
|||
|
}
|
|||
|
TMC2160_SCLK_HIGH;
|
|||
|
delay_time(2);
|
|||
|
//Ƭѡʧ<D1A1><CAA7>
|
|||
|
TMC2160_VERT_CSN_DISABLE;
|
|||
|
|
|||
|
dat = datak[0];
|
|||
|
dat = (dat << 8) | datak[1];
|
|||
|
dat = (dat << 8) | datak[2];
|
|||
|
dat = (dat << 8) | datak[3];
|
|||
|
dat = (dat << 8) | datak[4];
|
|||
|
// dat = datak[4];
|
|||
|
|
|||
|
}
|
|||
|
return dat;
|
|||
|
}
|
|||
|
|
|||
|
///===== ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
char tmc2160_set_hori_dir(char dir)
|
|||
|
{
|
|||
|
if (dir == TMC2160_MOTOR_DIR_FWD)
|
|||
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|||
|
TMC2160_HORI_DIR_F; return 1;
|
|||
|
}
|
|||
|
if (dir == TMC2160_MOTOR_DIR_REV)
|
|||
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|||
|
TMC2160_HORI_DIR_R; return 1;
|
|||
|
}
|
|||
|
delay_time(2);
|
|||
|
return 0;
|
|||
|
}
|
|||
|
///===== <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
char tmc2160_set_vert_dir(char dir)
|
|||
|
{
|
|||
|
if (dir == TMC2160_MOTOR_DIR_FWD)
|
|||
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|||
|
TMC2160_VERT_DIR_F; return 1;
|
|||
|
}
|
|||
|
if (dir == TMC2160_MOTOR_DIR_REV)
|
|||
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|||
|
TMC2160_VERT_DIR_R; return 1;
|
|||
|
}
|
|||
|
delay_time(2);
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
///===== ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
char tmc2160_hori_motor_enable(char state)
|
|||
|
{
|
|||
|
if (state == TMC2160_MOTOR_ENABLE)
|
|||
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
TMC2160_HORI_ENABLE; return 1;
|
|||
|
}
|
|||
|
if (state == TMC2160_MOTOR_DISABLE)
|
|||
|
{//<2F>رյ<D8B1><D5B5><EFBFBD>
|
|||
|
TMC2160_HORI_DISABLE; return 1;
|
|||
|
}
|
|||
|
delay_time(2);
|
|||
|
return 0;
|
|||
|
}
|
|||
|
///===== <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
char tmc2160_vert_motor_enable(char state)
|
|||
|
{
|
|||
|
if (state == TMC2160_MOTOR_ENABLE)
|
|||
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
TMC2160_VERT_ENABLE; return 1;
|
|||
|
}
|
|||
|
if (state == TMC2160_MOTOR_DISABLE)
|
|||
|
{//<2F>رյ<D8B1><D5B5><EFBFBD>
|
|||
|
TMC2160_VERT_DISABLE; return 1;
|
|||
|
}
|
|||
|
delay_time(2);
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
///===== д<>Ĵ<EFBFBD><C4B4><EFBFBD>,modeΪ<65>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ,dataΪ<61><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD>ֵȼ<D6B5><C8BC><EFBFBD>choiceΪƬѡ
|
|||
|
char tmc2160_write_register(char choice, unsigned char mode, unsigned char data)
|
|||
|
{
|
|||
|
u_int8_t buff[5] = {0x00,0x00,0x00,0x00,0x00};
|
|||
|
BSP_OS_SemWait(&ptz_tmc2160_mutex, 0u);
|
|||
|
|
|||
|
switch (mode)
|
|||
|
{
|
|||
|
case TMC2160_GCONF:
|
|||
|
buff[0] = TMC2160_GCONF + 0x80;
|
|||
|
buff[1] = 0x00;
|
|||
|
buff[2] = 0x00;
|
|||
|
#ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
buff[3] = 0x01;//01<30><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1/16
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
buff[3] = 0x41;//41<34><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1/32
|
|||
|
#endif
|
|||
|
buff[4] = 0x4c;//DIAG0<47><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>DIAG1<47><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>źţ<C5BA><C5A3>͵<EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7>Ԥ<EFBFBD><D4A4>ʱָʾ<D6B8><CABE><EFBFBD><EFBFBD>48
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{//<2F><><EFBFBD><EFBFBD>д
|
|||
|
hori_regis.g_conf = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.g_conf = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_GSTAT://ȫ<><C8AB>״̬<D7B4><CCAC>־<EFBFBD><D6BE>д1<D0B4><31><EFBFBD><EFBFBD>
|
|||
|
buff[0] = TMC2160_GSTAT +0x80;
|
|||
|
buff[1] = 0xff;
|
|||
|
buff[2] = 0xff;
|
|||
|
buff[3] = 0xff;
|
|||
|
buff[4] = 0xff;
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.gstae = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.gstae = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_DRV_CONF://<2F><><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶ȵ<C2B6>
|
|||
|
buff[0] = TMC2160_DRV_CONF +0x80;
|
|||
|
buff[1] = 0x00;
|
|||
|
#ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
buff[2] = 0x0c;//3c;//0x24;//0x24;//28,08
|
|||
|
buff[3] = 0x04;//04
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
buff[2] = 0x38;//0x24;//38,
|
|||
|
buff[3] = 0x02;//0x04;//02
|
|||
|
#endif
|
|||
|
buff[4] = 0x00;//0x10;//0x10;//00
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.drv_conf = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.drv_conf = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_GLOBAL_SCALER://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
|||
|
buff[0] = TMC2160_GLOBAL_SCALER +0x80;
|
|||
|
buff[1] = 0x00;
|
|||
|
buff[2] = 0x00;
|
|||
|
buff[3] = 0x00;
|
|||
|
buff[4] = data;//ȡֵ255
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.global_scaler = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.global_scaler = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_IHOLD_IRUN://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buff[0] = TMC2160_IHOLD_IRUN +0x80;
|
|||
|
buff[1] = 0x00;
|
|||
|
buff[2] = 0x06;//0x04;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>ʱ<EFBFBD>ϵ磬<CFB5>ɷ<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ת
|
|||
|
buff[3] = data;//<2F><><EFBFBD>е<EFBFBD><D0B5><EFBFBD>=data/32*4.7A<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.05ŷ
|
|||
|
buff[4] = (data>>1);//<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>0x00,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.i_run = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.i_run = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_TPOWERDOWN://<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1>䣬2
|
|||
|
buff[0] = TMC2160_TPOWERDOWN +0x80;
|
|||
|
buff[1] = 0x00;
|
|||
|
buff[2] = 0x00;
|
|||
|
buff[3] = 0x00;
|
|||
|
buff[4] = 0x0a;
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.tpowerdown = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.tpowerdown = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_TPWMTHRS: //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,,<2C>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buff[0] = TMC2160_TPWMTHRS +0x80;
|
|||
|
buff[1] = 0x00;
|
|||
|
buff[2] = 0x00;
|
|||
|
buff[3] = 0x00;
|
|||
|
buff[4] = 0xf4;
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.tpwmthrs = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.tpwmthrs = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_CHOPCONF: //0x00010083,24-27λ<37><CEBB><EFBFBD><EFBFBD>ϸ<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>24λ
|
|||
|
buff[0] = TMC2160_CHOPCONF +0x80;
|
|||
|
buff[1] = tmc2160_chopconf_data(data);
|
|||
|
#ifdef PTZ_SUPER_LIGHT_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
buff[2] = 0xe1;//e1,,<2C><>4Ϊ<34><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><CBA5>ʱ<EFBFBD>䣬<EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD><EFBFBD>г̹<D0B3><CCB9><EFBFBD>
|
|||
|
buff[3] = 0x03;//03
|
|||
|
buff[4] = 0x34;//C3
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
buff[2] = 0xf1;//e1,,<2C><>4Ϊ<34><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><CBA5>ʱ<EFBFBD>䣬<EFBFBD>ɽ<EFBFBD><C9BD><EFBFBD><EFBFBD>г̹<D0B3><CCB9><EFBFBD>
|
|||
|
buff[3] = 0x03;//03<30><33>00
|
|||
|
buff[4] = 0x04;//04<30><34>64<36><34><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD>TOFFȡ3<C8A1><33>4<EFBFBD><34><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD>hstrt<72><74><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#endif
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.chop_conf = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.chop_conf = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_COOLCONF: ///<2F><>ʱ<EFBFBD><CAB1>д...<2E><><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buff[0] = TMC2160_COOLCONF +0x80;
|
|||
|
buff[1] = 0x00;
|
|||
|
buff[2] = 0x00;
|
|||
|
buff[3] = 0xA8;
|
|||
|
buff[4] = 0x28;
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.coolconf = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.coolconf = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_PWMCONF: //0xc401321e<31><65>ʱ<EFBFBD><CAB1>35.1KHZ
|
|||
|
buff[0] = TMC2160_PWMCONF +0x80;
|
|||
|
buff[1] = 0xd2;//c4
|
|||
|
buff[2] = 0x0d;//0x0E;//09,0D
|
|||
|
buff[3] = 0x32;
|
|||
|
buff[4] = 0x1e;
|
|||
|
#ifdef PTZ_MEDIUM_WORM_STEP_TMC2160_AS5047D_24V
|
|||
|
buff[3] = 0x32;
|
|||
|
buff[4] = 0x24;//0x6e
|
|||
|
#endif
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
tmc2160_write_hori_data(choice, buff[0],buff[1],0x09,buff[3],buff[4]);
|
|||
|
|
|||
|
hori_regis.pwmconf = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
tmc2160_write_vert_data(choice, buff[0],buff[1],0x09,buff[3],buff[4]);
|
|||
|
|
|||
|
vert_regis.pwmconf = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_SHORT_CONF:
|
|||
|
buff[0] = TMC2160_SHORT_CONF +0x80;
|
|||
|
buff[1] = 0x00;
|
|||
|
buff[2] = 0x06;
|
|||
|
buff[3] = 0x0c;
|
|||
|
buff[4] = 0x0c;
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
hori_regis.short_conf = tmc2160_write_hori_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}else{
|
|||
|
vert_regis.short_conf = tmc2160_write_vert_data(choice, buff[0],buff[1],buff[2],buff[3],buff[4]);
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
BSP_OS_SemPost(&ptz_tmc2160_mutex);
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
unsigned long int tmc2160_ihold_irun_data(unsigned char data)
|
|||
|
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD>5λ<35><CEBB><EFBFBD><EFBFBD>8-12λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>8λ
|
|||
|
unsigned long int write_data = 0;
|
|||
|
write_data = write_data | data << 8;
|
|||
|
return write_data;
|
|||
|
}
|
|||
|
|
|||
|
unsigned long int tmc2160_chopconf_data(unsigned char data)
|
|||
|
{//<2F><><EFBFBD><EFBFBD>ϸ<EFBFBD>ֹ<EFBFBD>4λ<34><CEBB><EFBFBD><EFBFBD>24-27λ
|
|||
|
//Ĭ<><C4AC>ֵд0x00010083,256ϸ<36><CFB8>
|
|||
|
unsigned char write_data = 0x10;//0x10;
|
|||
|
// write_data = 0x00010083;
|
|||
|
switch (data)//<2F><>ʱdata<74><61>Ϊϸ<CEAA>ֵȼ<D6B5>
|
|||
|
{
|
|||
|
case TMC2160_1_8_STEP: //3<><33><EFBFBD><EFBFBD>8<EFBFBD><38>Ƶ
|
|||
|
write_data = write_data | 0x05;// << 24;
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_1_16_STEP: //4<><34><EFBFBD><EFBFBD>16<31><36>Ƶ
|
|||
|
write_data = write_data | 0x04;// << 24;
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_1_32_STEP: //5<><35><EFBFBD><EFBFBD>32<33><32>Ƶ
|
|||
|
write_data = write_data | 0x03;// << 24;
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_1_64_STEP: //6<><36><EFBFBD><EFBFBD>64<36><34>Ƶ
|
|||
|
write_data = write_data | 0x02;// << 24;
|
|||
|
break;
|
|||
|
|
|||
|
case TMC2160_1_128_STEP: //7<><37><EFBFBD><EFBFBD>128<32><38>Ƶ
|
|||
|
write_data = write_data | 0x01;// << 24;
|
|||
|
break;
|
|||
|
}
|
|||
|
return write_data;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
///===== <20><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
unsigned int tmc2160_parameter_crc(TMC2160Parameter data)
|
|||
|
{
|
|||
|
float crc = 0;
|
|||
|
unsigned int crc1 = 0;
|
|||
|
crc = crc + data.hori_step_1_8_en;
|
|||
|
crc = crc + data.hori_step_1_8_v_max;
|
|||
|
crc = crc + data.hori_step_1_8_v_min;
|
|||
|
|
|||
|
crc = crc + data.hori_step_1_16_en;
|
|||
|
crc = crc + data.hori_step_1_16_v_max;
|
|||
|
crc = crc + data.hori_step_1_16_v_min;
|
|||
|
|
|||
|
crc = crc + data.hori_step_1_32_en;
|
|||
|
crc = crc + data.hori_step_1_32_v_max;
|
|||
|
crc = crc + data.hori_step_1_32_v_min;
|
|||
|
|
|||
|
crc = crc + data.hori_step_1_64_en;
|
|||
|
crc = crc + data.hori_step_1_64_v_max;
|
|||
|
crc = crc + data.hori_step_1_64_v_min;
|
|||
|
|
|||
|
crc = crc + data.hori_step_1_128_en;
|
|||
|
crc = crc + data.hori_step_1_128_v_max;
|
|||
|
crc = crc + data.hori_step_1_128_v_min;
|
|||
|
|
|||
|
crc = crc + data.hori_work_torque;
|
|||
|
crc = crc + data.hori_global_scaler;
|
|||
|
|
|||
|
crc = crc + data.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>
|
|||
|
crc = crc + data.hori_dec_time_max;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC>ٵ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|||
|
|
|||
|
crc = crc + data.vert_step_1_8_en;
|
|||
|
crc = crc + data.vert_step_1_8_v_max;
|
|||
|
crc = crc + data.vert_step_1_8_v_min;
|
|||
|
|
|||
|
crc = crc + data.vert_step_1_16_en;
|
|||
|
crc = crc + data.vert_step_1_16_v_max;
|
|||
|
crc = crc + data.vert_step_1_16_v_min;
|
|||
|
|
|||
|
crc = crc + data.vert_step_1_32_en;
|
|||
|
crc = crc + data.vert_step_1_32_v_max;
|
|||
|
crc = crc + data.vert_step_1_32_v_min;
|
|||
|
|
|||
|
crc = crc + data.vert_step_1_64_en;
|
|||
|
crc = crc + data.vert_step_1_64_v_max;
|
|||
|
crc = crc + data.vert_step_1_64_v_min;
|
|||
|
|
|||
|
crc = crc + data.vert_step_1_128_en;
|
|||
|
crc = crc + data.vert_step_1_128_v_max;
|
|||
|
crc = crc + data.vert_step_1_128_v_min;
|
|||
|
|
|||
|
crc = crc + data.vert_work_torque;
|
|||
|
crc = crc + data.vert_global_scaler;
|
|||
|
|
|||
|
crc = crc + data.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>
|
|||
|
crc = crc + data.vert_dec_time_max;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC>ٵ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|||
|
crc1 = (unsigned int)crc;
|
|||
|
return crc1;
|
|||
|
}
|
|||
|
|
|||
|
///===== <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢
|
|||
|
char tmc2160_parameter_save()
|
|||
|
{
|
|||
|
TMC2160Parameter tmc2160_parameter_a;
|
|||
|
char i,j;
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
tmc2160_parameter.crc = tmc2160_parameter_crc(tmc2160_parameter);
|
|||
|
|
|||
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2>
|
|||
|
for(i = 0; i < TMC2160_PARAMETER_SAVE_FLASH_NUM; i++)
|
|||
|
{
|
|||
|
memset(&tmc2160_parameter_a, 0, sizeof(tmc2160_parameter_a));
|
|||
|
write_many_data(sizeof(tmc2160_parameter),(unsigned char *)(&tmc2160_parameter),TMC2160_PARAMETER_FLASH_ADD);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
Flash_Read((unsigned char *)(&tmc2160_parameter_a),TMC2160_PARAMETER_FLASH_ADD,sizeof(tmc2160_parameter_a));
|
|||
|
if(memcmp(&tmc2160_parameter, &tmc2160_parameter_a, sizeof(tmc2160_parameter)) == 0)//<2F>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
}
|
|||
|
//д<>뱸<EFBFBD>ݴ洢<DDB4><E6B4A2>
|
|||
|
for(j = 0; j < TMC2160_PARAMETER_SAVE_FLASH_NUM; j++)
|
|||
|
{
|
|||
|
memset(&tmc2160_parameter_a, 0, sizeof(tmc2160_parameter_a));
|
|||
|
write_many_data(sizeof(tmc2160_parameter),(unsigned char *)(&tmc2160_parameter),TMC2160_PARAMETER_BACKUP_FLASH_ADD);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
Flash_Read((unsigned char *)(&tmc2160_parameter_a),TMC2160_PARAMETER_BACKUP_FLASH_ADD,sizeof(tmc2160_parameter_a));
|
|||
|
if(memcmp(&tmc2160_parameter, &tmc2160_parameter_a, sizeof(tmc2160_parameter)) == 0)//<2F>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
}
|
|||
|
|
|||
|
if(i < TMC2160_PARAMETER_SAVE_FLASH_NUM || j < TMC2160_PARAMETER_SAVE_FLASH_NUM)//<2F>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
|
|||
|
{
|
|||
|
//д<><D0B4><EFBFBD>ɹ<EFBFBD>
|
|||
|
return 1;
|
|||
|
}
|
|||
|
//д<><D0B4>ʧ<EFBFBD><CAA7>
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
///===== <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ
|
|||
|
char tmc2160_parameter_read()
|
|||
|
{
|
|||
|
char i;
|
|||
|
//<2F><><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
for(i = 0; i < TMC2160_PARAMETER_READ_FLASH_NUM; i++)
|
|||
|
{
|
|||
|
memset(&tmc2160_parameter, 0, sizeof(tmc2160_parameter));
|
|||
|
Flash_Read((unsigned char *)(&tmc2160_parameter),TMC2160_PARAMETER_FLASH_ADD,sizeof(tmc2160_parameter));
|
|||
|
if(tmc2160_parameter.crc == tmc2160_parameter_crc(tmc2160_parameter) && tmc2160_parameter.crc > 0)
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 2u);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD><C7B4><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1>ݴ洢<DDB4><E6B4A2><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
for(i = 0; i < TMC2160_PARAMETER_READ_FLASH_NUM; i++)
|
|||
|
{
|
|||
|
memset(&tmc2160_parameter, 0, sizeof(tmc2160_parameter));
|
|||
|
Flash_Read((unsigned char *)(&tmc2160_parameter),TMC2160_PARAMETER_BACKUP_FLASH_ADD,sizeof(tmc2160_parameter));
|
|||
|
if(tmc2160_parameter.crc == tmc2160_parameter_crc(tmc2160_parameter) && tmc2160_parameter.crc > 0)
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 2u);
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
///===== <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
char tmc2160_parameter_erase()
|
|||
|
{
|
|||
|
TMC2160Parameter tmc2160_parameter_a;
|
|||
|
TMC2160Parameter tmc2160_parameter_b;
|
|||
|
char i, j;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2>
|
|||
|
for(i = 0; i < TMC2160_PARAMETER_SAVE_FLASH_NUM; i++)
|
|||
|
{
|
|||
|
memset(&tmc2160_parameter_a, 0, sizeof(tmc2160_parameter_a));
|
|||
|
write_many_data(sizeof(tmc2160_parameter_a),(unsigned char *)(&tmc2160_parameter_a),TMC2160_PARAMETER_FLASH_ADD);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
Flash_Read((unsigned char *)(&tmc2160_parameter_b),TMC2160_PARAMETER_FLASH_ADD,sizeof(tmc2160_parameter_b));
|
|||
|
if(memcmp(&tmc2160_parameter_a, &tmc2160_parameter_b, sizeof(tmc2160_parameter_a)) == 0)//<2F>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>
|
|||
|
for(j = 0; j < TMC2160_PARAMETER_SAVE_FLASH_NUM; j++)
|
|||
|
{
|
|||
|
memset(&tmc2160_parameter_a, 0, sizeof(tmc2160_parameter_a));
|
|||
|
write_many_data(sizeof(tmc2160_parameter_a),(unsigned char *)(&tmc2160_parameter_a),TMC2160_PARAMETER_BACKUP_FLASH_ADD);
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
Flash_Read((unsigned char *)(&tmc2160_parameter_b),TMC2160_PARAMETER_BACKUP_FLASH_ADD,sizeof(tmc2160_parameter_b));
|
|||
|
if(memcmp(&tmc2160_parameter_a, &tmc2160_parameter_b, sizeof(tmc2160_parameter_a)) == 0)//<2F>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
|
|||
|
}
|
|||
|
|
|||
|
if(i < TMC2160_PARAMETER_SAVE_FLASH_NUM || j < TMC2160_PARAMETER_SAVE_FLASH_NUM)//<2F>жϲ<D0B6><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
return 1;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
///===== <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
char tmc2160_data_reset()
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_8_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.hori_step_1_8_v_max = PTZ_HORI_1_8_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.hori_step_1_8_v_min = PTZ_HORI_1_8_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.hori_step_1_16_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.hori_step_1_16_v_max = PTZ_HORI_1_16_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.hori_step_1_16_v_min = PTZ_HORI_1_16_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.hori_step_1_32_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.hori_step_1_32_v_max = PTZ_HORI_1_32_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.hori_step_1_32_v_min = PTZ_HORI_1_32_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.hori_step_1_64_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.hori_step_1_64_v_max = PTZ_HORI_1_64_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.hori_step_1_64_v_min = PTZ_HORI_1_64_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.hori_step_1_128_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.hori_step_1_128_v_max = PTZ_HORI_1_128_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.hori_step_1_128_v_min = PTZ_HORI_1_128_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.hori_work_torque = TMC2160_HORI_TORQUE_VALUE;//<2F><><EFBFBD><EFBFBD>ʱtorque<75><65>ֵ
|
|||
|
tmc2160_parameter.hori_global_scaler = CURR_GLOBAL_SCALER;//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
tmc2160_parameter.hori_acc_time_max = PTZ_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>
|
|||
|
tmc2160_parameter.hori_dec_time_max = PTZ_HORI_DEC_TIME_MAX;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC>ٵ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
tmc2160_parameter.vert_step_1_8_en = 0;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.vert_step_1_8_v_max = 0;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.vert_step_1_8_v_min = 0;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.vert_step_1_16_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.vert_step_1_16_v_max = PTZ_VERT_1_16_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.vert_step_1_16_v_min = PTZ_VERT_1_16_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.vert_step_1_32_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.vert_step_1_32_v_max = PTZ_VERT_1_32_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.vert_step_1_32_v_min = PTZ_VERT_1_32_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.vert_step_1_64_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.vert_step_1_64_v_max = PTZ_VERT_1_64_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.vert_step_1_64_v_min = PTZ_VERT_1_64_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.vert_step_1_128_en = 1;//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>0<EFBFBD><30>Ч<EFBFBD><D0A7>1<EFBFBD><31>Ч
|
|||
|
tmc2160_parameter.vert_step_1_128_v_max = PTZ_VERT_1_128_STEP_V_MAX;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
|
|||
|
tmc2160_parameter.vert_step_1_128_v_min = PTZ_VERT_1_128_STEP_V_MIN;//<2F><>ϸ<EFBFBD>̶ֳ<D6B3><CCB6>¶<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Сת<D0A1><D7AA>
|
|||
|
|
|||
|
tmc2160_parameter.vert_work_torque = TMC2160_VERT_TORQUE_VALUE;//<2F><><EFBFBD><EFBFBD>ʱtorque<75><65>ֵ
|
|||
|
tmc2160_parameter.vert_global_scaler = CURR_GLOBAL_SCALER;//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
tmc2160_parameter.vert_acc_time_max = PTZ_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>
|
|||
|
tmc2160_parameter.vert_dec_time_max = PTZ_VERT_DEC_TIME_MAX;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶȼ<D9B6><C8BC>ٵ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
|||
|
tmc2160_parameter.crc = tmc2160_parameter_crc(tmc2160_parameter);//Ч<><D0A7><EFBFBD><EFBFBD>
|
|||
|
return 1;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
///===== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
char tmc2160_reset()
|
|||
|
{
|
|||
|
tmc2160_data_reset();
|
|||
|
|
|||
|
//ˮƽ
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_IHOLD_IRUN, TMC2160_HORI_TORQUE_VALUE);//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ=20/32*2.3A
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_CHOPCONF, TMC2160_1_16_STEP);//ϸ<><CFB8>Ĭ<EFBFBD><C4AC>16
|
|||
|
//<2F><>ֱ
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_IHOLD_IRUN, TMC2160_VERT_TORQUE_VALUE);//<2F><><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ=20/32*2.3A
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_CHOPCONF, TMC2160_1_16_STEP);//ϸ<><CFB8>Ĭ<EFBFBD><C4AC>16
|
|||
|
if (tmc2160_parameter_save() == 1)
|
|||
|
{//<2F><>λ<EFBFBD>ɹ<EFBFBD>
|
|||
|
return 1;
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
///===== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
char tmc2160_data_init()
|
|||
|
{
|
|||
|
tmc2160_parameter_read();
|
|||
|
if (tmc2160_parameter_read() == 1)
|
|||
|
{//<2F><>ȡ<EFBFBD>ɹ<EFBFBD>
|
|||
|
return 1;
|
|||
|
}else{//<2F><>ȡʧ<C8A1><CAA7>
|
|||
|
tmc2160_data_reset();
|
|||
|
tmc2160_parameter_save();
|
|||
|
return 0;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///===== <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>
|
|||
|
void tmc2160_parameter_upload(char dev)
|
|||
|
{
|
|||
|
unsigned char data[7] = {0};
|
|||
|
//*****************************<2A><><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>**********************************//
|
|||
|
/*********************************1_8*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x09;
|
|||
|
data[4] = tmc2160_parameter.hori_step_1_8_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0a;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_8_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_8_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0b;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_8_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_8_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/*********************************1_16*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0c;
|
|||
|
data[4] = tmc2160_parameter.hori_step_1_16_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0d;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_16_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_16_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0e;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_16_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_16_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
|
|||
|
/*********************************1_32*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0f;
|
|||
|
data[4] = tmc2160_parameter.hori_step_1_32_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x10;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_32_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_32_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x11;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_32_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_32_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
|
|||
|
/*********************************1_64*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x12;
|
|||
|
data[4] = tmc2160_parameter.hori_step_1_64_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x13;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_64_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_64_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x14;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_64_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_64_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
|
|||
|
/*********************************1_128*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x15;
|
|||
|
data[4] = tmc2160_parameter.hori_step_1_128_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x16;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_128_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_128_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x17;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.hori_step_1_128_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.hori_step_1_128_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/*********************************work_torque*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x20;
|
|||
|
data[4] = tmc2160_parameter.hori_work_torque;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/********************************global_scaler***********************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x21;
|
|||
|
data[4] = tmc2160_parameter.hori_global_scaler;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/*********************************acc_time*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x23;
|
|||
|
data[4] = tmc2160_parameter.hori_acc_time_max >> 8;
|
|||
|
data[5] = tmc2160_parameter.hori_acc_time_max & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/*********************************dec_time*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x51;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x24;
|
|||
|
data[4] = tmc2160_parameter.hori_dec_time_max >> 8;
|
|||
|
data[5] = tmc2160_parameter.hori_dec_time_max & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
//************************************************************************************************************************/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
//****************************<2A><><EFBFBD>ʹ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>************************************//
|
|||
|
/*********************************1_8*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x09;
|
|||
|
data[4] = tmc2160_parameter.vert_step_1_8_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0a;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_8_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_8_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0b;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_8_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_8_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/*********************************1_16*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0c;
|
|||
|
data[4] = tmc2160_parameter.vert_step_1_16_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0d;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_16_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_16_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0e;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_16_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_16_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
|
|||
|
/*********************************1_32*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x0f;
|
|||
|
data[4] = tmc2160_parameter.vert_step_1_32_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x10;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_32_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_32_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x11;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_32_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_32_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
|
|||
|
/*********************************1_64*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x12;
|
|||
|
data[4] = tmc2160_parameter.vert_step_1_64_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x13;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_64_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_64_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x14;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_64_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_64_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
|
|||
|
/**********************************1_128**************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x15;
|
|||
|
data[4] = tmc2160_parameter.vert_step_1_128_en;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x16;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_128_v_min * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_128_v_min * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x17;
|
|||
|
data[4] = ((unsigned short int)(tmc2160_parameter.vert_step_1_128_v_max * 10)) >> 8;
|
|||
|
data[5] = ((unsigned short int)(tmc2160_parameter.vert_step_1_128_v_max * 10)) & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/*********************************work_torque**********************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x20;
|
|||
|
data[4] = tmc2160_parameter.vert_work_torque;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/********************************global_scaler*********************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x21;
|
|||
|
data[4] = tmc2160_parameter.vert_global_scaler;
|
|||
|
data[5] = 0;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/*********************************acc_time*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x23;
|
|||
|
data[4] = tmc2160_parameter.vert_acc_time_max >> 8;
|
|||
|
data[5] = tmc2160_parameter.vert_acc_time_max & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
|
|||
|
/*********************************dec_time*************************************/
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = 0x52;//0X51<35><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD>ˮƽ,0X52<35><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5>Ǵ<EFBFBD>ֱ
|
|||
|
data[3] = 0x24;
|
|||
|
data[4] = tmc2160_parameter.vert_dec_time_max >> 8;
|
|||
|
data[5] = tmc2160_parameter.vert_dec_time_max & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
//************************************************************************************************************************/
|
|||
|
}
|
|||
|
|
|||
|
///===== tmc2160<36><30><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
|||
|
void tmc2160_parameter_process(char dev, PTZ_DATA_PACK *pack)
|
|||
|
{
|
|||
|
float speed;
|
|||
|
if(pack->command[0] == 0x51)//ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
speed = (float)((pack->data[0] << 8) | pack->data[1]) / 10.0;
|
|||
|
if(speed > PTZ_HORI_MOTOR_MAX_SPEED)
|
|||
|
{
|
|||
|
speed = PTZ_HORI_MOTOR_MAX_SPEED;
|
|||
|
}
|
|||
|
if(speed < 0)
|
|||
|
{
|
|||
|
speed = 0;
|
|||
|
}
|
|||
|
|
|||
|
switch(pack->command[1])
|
|||
|
{
|
|||
|
case 0x09:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_8_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_8_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x0a:
|
|||
|
tmc2160_parameter.hori_step_1_8_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x0b:
|
|||
|
tmc2160_parameter.hori_step_1_8_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x0c:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_16_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_16_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x0d:
|
|||
|
tmc2160_parameter.hori_step_1_16_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x0e:
|
|||
|
tmc2160_parameter.hori_step_1_16_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x0f:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_32_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_32_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x10:
|
|||
|
tmc2160_parameter.hori_step_1_32_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x11:
|
|||
|
tmc2160_parameter.hori_step_1_32_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x12:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_64_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_64_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x13:
|
|||
|
tmc2160_parameter.hori_step_1_64_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x14:
|
|||
|
tmc2160_parameter.hori_step_1_64_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x15:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_128_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_step_1_128_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x16:
|
|||
|
tmc2160_parameter.hori_step_1_128_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x17:
|
|||
|
tmc2160_parameter.hori_step_1_128_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
|
|||
|
case 0x20:
|
|||
|
tmc2160_parameter.hori_work_torque = pack->data[0];
|
|||
|
if(tmc2160_parameter.hori_work_torque > TMC2160_WORK_TORQUE_MAX)
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_work_torque = TMC2160_WORK_TORQUE_MAX;
|
|||
|
}
|
|||
|
if(tmc2160_parameter.hori_work_torque < TMC2160_WORK_TORQUE_MIN)
|
|||
|
{
|
|||
|
tmc2160_parameter.hori_work_torque = TMC2160_WORK_TORQUE_MIN;
|
|||
|
}
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_IHOLD_IRUN, tmc2160_parameter.hori_work_torque);
|
|||
|
break;
|
|||
|
|
|||
|
case 0x21:
|
|||
|
tmc2160_parameter.hori_global_scaler = pack->data[0];
|
|||
|
tmc2160_write_register(TMC2160_HORI, TMC2160_GLOBAL_SCALER, tmc2160_parameter.hori_global_scaler);
|
|||
|
break;
|
|||
|
|
|||
|
case 0x23:
|
|||
|
tmc2160_parameter.hori_acc_time_max = (pack->data[0] << 8) | pack->data[1];
|
|||
|
break;
|
|||
|
|
|||
|
case 0x24:
|
|||
|
tmc2160_parameter.hori_dec_time_max = (pack->data[0] << 8) | pack->data[1];
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if(pack->command[0] == 0x52)//<2F><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
speed = (float)((pack->data[0] << 8) | pack->data[1]) / 10.0;
|
|||
|
if(speed > PTZ_VERT_MOTOR_MAX_SPEED)
|
|||
|
{
|
|||
|
speed = PTZ_VERT_MOTOR_MAX_SPEED;
|
|||
|
}
|
|||
|
if(speed < 0)
|
|||
|
{
|
|||
|
speed = 0;
|
|||
|
}
|
|||
|
|
|||
|
switch(pack->command[1])
|
|||
|
{
|
|||
|
case 0x09:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_8_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_8_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x0a:
|
|||
|
tmc2160_parameter.vert_step_1_8_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x0b:
|
|||
|
tmc2160_parameter.vert_step_1_8_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x0c:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_16_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_16_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x0d:
|
|||
|
tmc2160_parameter.vert_step_1_16_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x0e:
|
|||
|
tmc2160_parameter.vert_step_1_16_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x0f:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_32_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_32_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x10:
|
|||
|
tmc2160_parameter.vert_step_1_32_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x11:
|
|||
|
tmc2160_parameter.vert_step_1_32_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x12:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_64_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_64_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x13:
|
|||
|
tmc2160_parameter.vert_step_1_64_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x14:
|
|||
|
tmc2160_parameter.vert_step_1_64_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x15:
|
|||
|
if(pack->data[0] == 1)
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_128_en = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_step_1_128_en = 0;
|
|||
|
}
|
|||
|
break;
|
|||
|
|
|||
|
case 0x16:
|
|||
|
tmc2160_parameter.vert_step_1_128_v_min = speed;
|
|||
|
break;
|
|||
|
|
|||
|
case 0x17:
|
|||
|
tmc2160_parameter.vert_step_1_128_v_max = speed;
|
|||
|
break;
|
|||
|
|
|||
|
/*******************************************************************************************/
|
|||
|
|
|||
|
case 0x20:
|
|||
|
tmc2160_parameter.vert_work_torque = pack->data[0];
|
|||
|
if(tmc2160_parameter.vert_work_torque > TMC2160_WORK_TORQUE_MAX)
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_work_torque = TMC2160_WORK_TORQUE_MAX;
|
|||
|
}
|
|||
|
if(tmc2160_parameter.vert_work_torque < TMC2160_WORK_TORQUE_MIN)
|
|||
|
{
|
|||
|
tmc2160_parameter.vert_work_torque = TMC2160_WORK_TORQUE_MIN;
|
|||
|
}
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_IHOLD_IRUN, tmc2160_parameter.vert_work_torque);
|
|||
|
break;
|
|||
|
|
|||
|
case 0x21:
|
|||
|
tmc2160_parameter.vert_global_scaler = pack->data[0];
|
|||
|
tmc2160_write_register(TMC2160_VERT, TMC2160_GLOBAL_SCALER, tmc2160_parameter.vert_global_scaler);
|
|||
|
break;
|
|||
|
|
|||
|
case 0x23:
|
|||
|
tmc2160_parameter.vert_acc_time_max = (pack->data[0] << 8) | pack->data[1];
|
|||
|
break;
|
|||
|
|
|||
|
case 0x24:
|
|||
|
tmc2160_parameter.vert_dec_time_max = (pack->data[0] << 8) | pack->data[1];
|
|||
|
break;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
if(pack->command[0] == 0x53)//<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
|||
|
{
|
|||
|
switch(pack->command[1])
|
|||
|
{
|
|||
|
case 0x00://<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ش<EFBFBD>DRV8711<31><31><EFBFBD><EFBFBD>
|
|||
|
//<2F><>ȡ
|
|||
|
tmc2160_parameter_read();
|
|||
|
//<2F>ش<EFBFBD>
|
|||
|
tmc2160_parameter_upload(dev);
|
|||
|
break;
|
|||
|
|
|||
|
case 0x01://<2F><><EFBFBD><EFBFBD>DRV8711<31><31><EFBFBD><EFBFBD>
|
|||
|
tmc2160_parameter_save();
|
|||
|
break;
|
|||
|
|
|||
|
case 0x02://ɾ<><C9BE>DRV8711<31><31>FLASH<53>еIJ<D0B5><C4B2><EFBFBD>
|
|||
|
tmc2160_parameter_erase();
|
|||
|
break;
|
|||
|
|
|||
|
case 0x03://<2F><>λDRV8711<31><31>FLASH<53>б<EFBFBD><D0B1><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
|
|||
|
// tmc2160_write_register(TMC2160_HORI, TMC2160_GSTAT, 0);
|
|||
|
// OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
|||
|
// tmc2160_write_register(TMC2160_VERT, TMC2160_GSTAT, 0);
|
|||
|
// OSTimeDlyHMSM(0u, 0u, 0u, 1u);
|
|||
|
tmc2160_reset();
|
|||
|
|
|||
|
break;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
///===== <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ȡ
|
|||
|
unsigned int tmc2160_state_read(char choice, char regis)
|
|||
|
{
|
|||
|
unsigned long int status;
|
|||
|
if(choice == TMC2160_HORI)
|
|||
|
{
|
|||
|
status = tmc2160_write_hori_data(choice, regis,0xff,0xff,0xff,0xff);//choice<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>x2/x3/x4/x5<78><35><EFBFBD><EFBFBD>д<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
if(choice == TMC2160_VERT)
|
|||
|
{
|
|||
|
status = tmc2160_write_vert_data(choice, regis,0xff,0xff,0xff,0xff);//choice<63><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>x2/x3/x4/x5<78><35><EFBFBD><EFBFBD>д<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
return status;
|
|||
|
}
|
|||
|
|
|||
|
void tmc2160_state_return(char dev)
|
|||
|
{
|
|||
|
unsigned char data[7] = {0};
|
|||
|
unsigned long int status;
|
|||
|
//****************************<2A><><EFBFBD><EFBFBD>ˮƽ״̬******************//
|
|||
|
status = tmc2160_state_read(TMC2160_HORI,TMC2160_DRV_STATUS);
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = (status >> 24) & 0x00ff;//ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>·<EFBFBD><C2B7><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><C2BE>桢<EFBFBD><E6A1A2><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת״̬,<2C><><EFBFBD><EFBFBD>8λ
|
|||
|
data[3] = (status >> 16) & 0x00ff;
|
|||
|
data[4] = (status >> 8) & 0x00ff;
|
|||
|
data[5] = status & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
//****************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬******************//
|
|||
|
status = tmc2160_state_read(TMC2160_HORI,TMC2160_IOIN);
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = (status >> 24) & 0x00ff;//<2F><>8λΪ<CEBB>汾<EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>8λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
data[3] = 0x00ff;
|
|||
|
data[4] = 0x00ff;
|
|||
|
data[5] = status & 0x00ff;//<2F>˵<EFBFBD>8λΪ<CEBB><CEAA><EFBFBD><EFBFBD>״̬<D7B4><CCAC>0λ<30><CEBB><EFBFBD><EFBFBD><EFBFBD>źš<C5BA>1λת<CEBB><D7AA><EFBFBD>źš<C5BA>4λ<34><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>źš<C5BA>
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 20u);
|
|||
|
//**************************<2A><><EFBFBD>ʹ<EFBFBD>ֱ״̬******************//
|
|||
|
status = tmc2160_state_read(TMC2160_VERT,TMC2160_DRV_STATUS);
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = (status >> 24) & 0x00ff;//ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>·<EFBFBD><C2B7><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><C2BE>桢<EFBFBD><E6A1A2><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת״̬,<2C><><EFBFBD><EFBFBD>8λ
|
|||
|
data[3] = (status >> 16) & 0x00ff;
|
|||
|
data[4] = (status >> 8) & 0x00ff;
|
|||
|
data[5] = status & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
OSTimeDlyHMSM(0u, 0u, 0u, 10u);
|
|||
|
//****************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬******************//
|
|||
|
status = tmc2160_state_read(TMC2160_VERT,TMC2160_IOIN);
|
|||
|
data[0] = 0xff;
|
|||
|
data[1] = g_ptz.address;
|
|||
|
data[2] = (status >> 24) & 0x00ff;//<2F><>8λΪ<CEBB>汾<EFBFBD>ţ<EFBFBD><C5A3><EFBFBD>8λΪ<CEBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
data[3] = 0x00ff;
|
|||
|
data[4] = 0x00ff;
|
|||
|
data[5] = status & 0x00ff;
|
|||
|
data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
ptz_send_data(dev, data, sizeof(data));
|
|||
|
|
|||
|
/**********************<2A><><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>stealthchop<6F><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*********************/
|
|||
|
|
|||
|
// OSTimeDlyHMSM(0u, 0u, 0u, 20u);
|
|||
|
// //****************************<2A><><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ******************//
|
|||
|
// status = tmc2160_state_read(TMC2160_HORI,TMC2160_PWM_AUTO);
|
|||
|
// data[0] = 0xff;
|
|||
|
// data[1] = g_ptz.address;
|
|||
|
// data[2] = (status >> 24) & 0x00ff;
|
|||
|
// data[3] = (status >> 16) & 0x00ff;
|
|||
|
// data[4] = (status >> 8) & 0x00ff;
|
|||
|
// data[5] = status & 0x00ff;
|
|||
|
// data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
// ptz_send_data(dev, data, sizeof(data));
|
|||
|
//
|
|||
|
// OSTimeDlyHMSM(0u, 0u, 0u, 20u);
|
|||
|
// //****************************<2A><><EFBFBD>ʹ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ******************//
|
|||
|
// status = tmc2160_state_read(TMC2160_VERT,TMC2160_PWM_AUTO);
|
|||
|
// data[0] = 0xff;
|
|||
|
// data[1] = g_ptz.address;
|
|||
|
// data[2] = (status >> 24) & 0x00ff;
|
|||
|
// data[3] = (status >> 16) & 0x00ff;
|
|||
|
// data[4] = (status >> 8) & 0x00ff;
|
|||
|
// data[5] = status & 0x00ff;
|
|||
|
// data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
// ptz_send_data(dev, data, sizeof(data));
|
|||
|
//
|
|||
|
// OSTimeDlyHMSM(0u, 0u, 0u, 20u);
|
|||
|
// //*****************************<2A><><EFBFBD><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>******************//
|
|||
|
// status = tmc2160_state_read(TMC2160_HORI,TMC2160_PWM_SCALE);
|
|||
|
// data[0] = 0xff;
|
|||
|
// data[1] = g_ptz.address;
|
|||
|
// data[2] = (status >> 24) & 0x00ff;
|
|||
|
// data[3] = (status >> 16) & 0x00ff;
|
|||
|
// data[4] = (status >> 8) & 0x00ff;
|
|||
|
// data[5] = status & 0x00ff;
|
|||
|
// data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
// ptz_send_data(dev, data, sizeof(data));
|
|||
|
//
|
|||
|
// OSTimeDlyHMSM(0u, 0u, 0u, 20u);
|
|||
|
// //*****************************<2A><><EFBFBD>ʹ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>******************//
|
|||
|
// status = tmc2160_state_read(TMC2160_VERT,TMC2160_PWM_SCALE);
|
|||
|
// data[0] = 0xff;
|
|||
|
// data[1] = g_ptz.address;
|
|||
|
// data[2] = (status >> 24) & 0x00ff;
|
|||
|
// data[3] = (status >> 16) & 0x00ff;
|
|||
|
// data[4] = (status >> 8) & 0x00ff;
|
|||
|
// data[5] = status & 0x00ff;
|
|||
|
// data[6] = MotorCalPelcoDSUM(data,sizeof(data));
|
|||
|
// ptz_send_data(dev, data, sizeof(data));
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#endif
|