Browse Source

update

master
zhaohe 2 years ago
parent
commit
7b3f699042
  1. 2
      components/tmc/basic/tmc_ic_interface.hpp
  2. 22
      components/tmc/ic/ztmc5130.cpp
  3. 1
      components/tmc/ic/ztmc5130.hpp

2
components/tmc/basic/tmc_ic_interface.hpp

@ -59,6 +59,8 @@ class IStepperMotor {
virtual void setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay) = 0; virtual void setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay) = 0;
virtual void setGlobalScale(uint8_t globalscale) = 0;
virtual void setScale(int32_t scale) = 0; virtual void setScale(int32_t scale) = 0;
virtual void setScaleDenominator(int32_t scale) = 0; virtual void setScaleDenominator(int32_t scale) = 0;

22
components/tmc/ic/ztmc5130.cpp

@ -139,13 +139,17 @@ uint8_t TMC5130::reset() {
} }
return 0; return 0;
} }
int32_t TMC5130::getXACTUAL() { return to_user_pos(readInt(TMC5130_XACTUAL)); }
void TMC5130::setXACTUAL(int32_t value) { writeInt(TMC5130_XACTUAL, to_motor_pos(value)); }
int32_t TMC5130::getVACTUAL() { return to_user_pos(readInt(TMC5130_VACTUAL)); }
void TMC5130::setAcceleration(float accelerationpps2) { writeInt(TMC5130_AMAX, (int32_t)(to_motor_acc(accelerationpps2))); } // 设置最大加速度
void TMC5130::setDeceleration(float accelerationpps2) { writeInt(TMC5130_DMAX, (int32_t)(to_motor_acc(accelerationpps2))); } // 设置最大减速度
void TMC5130::setMotorShaft(bool reverse) { PRV_FIELD_WRITE(TMC5130_GCONF, TMC5130_SHAFT_MASK, TMC5130_SHAFT_SHIFT, reverse); }
void TMC5130::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)); }
int32_t TMC5130::getXACTUAL() { return to_user_pos(readInt(TMC5130_XACTUAL)); }
void TMC5130::setXACTUAL(int32_t value) { writeInt(TMC5130_XACTUAL, to_motor_pos(value)); }
int32_t TMC5130::getVACTUAL() { return to_user_pos(readInt(TMC5130_VACTUAL)); }
void TMC5130::setAcceleration(float accelerationpps2) { writeInt(TMC5130_AMAX, (int32_t)(to_motor_acc(accelerationpps2))); } // 设置最大加速度
void TMC5130::setDeceleration(float accelerationpps2) { writeInt(TMC5130_DMAX, (int32_t)(to_motor_acc(accelerationpps2))); } // 设置最大减速度
void TMC5130::setMotorShaft(bool reverse) { PRV_FIELD_WRITE(TMC5130_GCONF, TMC5130_SHAFT_MASK, TMC5130_SHAFT_SHIFT, reverse); }
void TMC5130::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)); }
void TMC5130::setGlobalScale(uint8_t globalscale) {
// writeInt(TMC5130_GCONF, (readInt(TMC5130_GCONF) & ~TMC5130_SCALE_MASK) | (globalscale << TMC5130_SCALE_SHIFT));
}
uint32_t TMC5130::readICVersion() { uint32_t TMC5130::readICVersion() {
uint32_t chipID = PRV_FIELD_READ(TMC5130_IOIN, TMC5130_VERSION_MASK, TMC5130_VERSION_SHIFT); uint32_t chipID = PRV_FIELD_READ(TMC5130_IOIN, TMC5130_VERSION_MASK, TMC5130_VERSION_SHIFT);
return chipID; return chipID;
@ -252,8 +256,8 @@ int32_t TMC5130::readInt(uint8_t address) {
return ((uint32_t)data[1] << 24) | ((uint32_t)data[2] << 16) | (data[3] << 8) | data[4]; return ((uint32_t)data[1] << 24) | ((uint32_t)data[2] << 16) | (data[3] << 8) | data[4];
} }
int32_t TMC5130::to_motor_acc(int32_t acc) { //
int32_t val = acc / 60.0 * m_onecirclepulse; // 65535
int32_t TMC5130::to_motor_acc(int32_t acc) { //
int32_t val = acc / 60.0 * m_onecirclepulse; // 65535
if (val > 65535) val = 65535; if (val > 65535) val = 65535;
return val; return val;
} }

1
components/tmc/ic/ztmc5130.hpp

@ -126,6 +126,7 @@ class TMC5130 : public IStepperMotor {
virtual void setDeceleration(float accelerationpps2); virtual void setDeceleration(float accelerationpps2);
void setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay); void setIHOLD_IRUN(uint8_t ihold, uint8_t irun, uint16_t iholddelay);
void setGlobalScale(uint8_t globalscale);
// void setSubdivision(uint8_t subdivision); // void setSubdivision(uint8_t subdivision);
void setMotorShaft(bool reverse); // 设置电机旋转方向 void setMotorShaft(bool reverse); // 设置电机旋转方向

Loading…
Cancel
Save