|
|
@ -30,6 +30,7 @@ void TMC51X0::initialize(cfg_t *cfg) { |
|
|
|
// m_port = config->m_port;
|
|
|
|
m_registerAccessTable = &tmc5130_defaultRegisterAccess[0]; |
|
|
|
m_defaultRegisterResetState = &tmc5130_defaultRegisterResetState[0]; |
|
|
|
|
|
|
|
if (cfg->csgpio != PinNull) { |
|
|
|
m_csnpin = new ZGPIO(); |
|
|
|
m_csnpin->initAsOutput(cfg->csgpio, ZGPIO::kMode_nopull, false, true); |
|
|
@ -101,6 +102,22 @@ uint8_t TMC51X0::reset() { |
|
|
|
// zchip_clock_early_delayus(1000);
|
|
|
|
SET_PIN(m_csnpin, true); |
|
|
|
|
|
|
|
int icVersion = 0; |
|
|
|
for (size_t i = 0; i < 50; i++) { |
|
|
|
icVersion = readICVersion(); |
|
|
|
if (icVersion == kTMC2160AndTMC5160 || icVersion == kTMC5130) { |
|
|
|
motorICInitOk = true; |
|
|
|
break; |
|
|
|
} |
|
|
|
HAL_Delay(100); |
|
|
|
ZLOGI("TMC5130", "WAITING FOR MOTOR POWER UP"); |
|
|
|
} |
|
|
|
|
|
|
|
if (!motorICInitOk) { |
|
|
|
ZLOGE("TMC5130", "MOTOR INIT FAIL, DRIVER_IC_IS_OFFLINE"); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
stop(); |
|
|
|
enable(false); |
|
|
|
for (uint32_t add = 0; add < TMC5130_REGISTER_COUNT; add++) { |
|
|
@ -132,7 +149,6 @@ uint8_t TMC51X0::reset() { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int32_t TMC51X0::getXACTUAL() { return to_user_pos(readInt(TMC5130_XACTUAL)); } |
|
|
|
void TMC51X0::setXACTUAL(int32_t value) { |
|
|
|
/**
|
|
|
@ -148,6 +164,14 @@ void TMC51X0::setDeceleration(float accelerationpps2) { writeInt(TMC5130_DMAX |
|
|
|
void TMC51X0::setMotorShaft(bool reverse) { PRV_FIELD_WRITE(TMC5130_GCONF, TMC5130_SHAFT_MASK, TMC5130_SHAFT_SHIFT, reverse); } |
|
|
|
void TMC51X0::setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay) { writeInt(TMC5130_IHOLD_IRUN, (iholddelay << TMC5130_IHOLDDELAY_SHIFT) | (irun << TMC5130_IRUN_SHIFT) | (ihold << TMC5130_IHOLD_SHIFT)); } |
|
|
|
|
|
|
|
bool TMC51X0::isOnline() { |
|
|
|
uint32_t chipId = readICVersion(); |
|
|
|
if (chipId == kTMC5130 || chipId == kTMC2160AndTMC5160) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
#define TMC5160_GLOBAL_SCALER 0x0B
|
|
|
|
#define TMC5160_GLOBAL_SCALER_MASK 0xFF
|
|
|
|
#define TMC5160_GLOBAL_SCALER_SHIFT 0
|
|
|
|