Finish init sequence
parent
e9046eed42
commit
5f83667b22
|
|
@ -52,9 +52,21 @@ void TMC2130::Init(const MotorParams ¶ms) {
|
||||||
|
|
||||||
///Write stealth mode config and setup diag0 output
|
///Write stealth mode config and setup diag0 output
|
||||||
uint32_t gconf = 0;
|
uint32_t gconf = 0;
|
||||||
gconf |= (uint32_t)((uint8_t)mode & 0x01) << 2; //en_pwm_mode
|
gconf |= (uint32_t)(1 & 0x01) << 2; //en_pwm_mode - always enabled since we can control it's effect with TPWMTHRS (0=only stealthchop, 0xFFFFF=only spreadcycle)
|
||||||
gconf |= (uint32_t)(1 & 0x01) << 7; //diag0_stall
|
gconf |= (uint32_t)(1 & 0x01) << 7; //diag0_stall - diag0 is open collector => active low with external pullups
|
||||||
WriteRegister(params, Registers::GCONF, gconf);
|
WriteRegister(params, Registers::GCONF, gconf);
|
||||||
|
|
||||||
|
///stealthChop parameters
|
||||||
|
uint32_t pwmconf = 0; /// @todo All of these parameters should be configurable
|
||||||
|
pwmconf |= (uint32_t)(240 & 0xFF) << 0; //PWM_AMPL
|
||||||
|
pwmconf |= (uint32_t)(4 & 0xFF) << 8; //PWM_GRAD
|
||||||
|
pwmconf |= (uint32_t)(2 & 0x03) << 16; //pwm_freq
|
||||||
|
pwmconf |= (uint32_t)(1 & 0x01) << 18; //pwm_autoscale
|
||||||
|
WriteRegister(params, Registers::PWMCONF, pwmconf);
|
||||||
|
|
||||||
|
///TPWMTHRS: switching velocity between stealthChop and spreadCycle. Stallguard is also disabled if the velocity falls below this. Should be set to 0 when homing.
|
||||||
|
///0xFFF00 is used as a "Normal" mode threshold since stealthchop will be used at standstill.
|
||||||
|
WriteRegister(params, Registers::TPWMTHRS, (mode == Stealth) ? 70 : 0xFFF00); // @todo should be configurable
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t TMC2130::ReadRegister(const MotorParams ¶ms, Registers reg) {
|
uint32_t TMC2130::ReadRegister(const MotorParams ¶ms, Registers reg) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue