@@ -73,8 +73,16 @@ enum class TMC_PwmMode : uint8_t {off = 0,HSlow_LShigh = 1, HShigh_LSlow = 2, re
7373
7474enum class TMC_StartupType {NONE,coldStart,warmStart};
7575
76- enum class TMC_GpioMode {DebugSpi,DSAdcClkOut,DSAdcClkIn,Aout_Bin,Ain_Bout,Aout_Bout,Ain_Bin};
76+ enum class CoggingState : uint8_t { Init, ForwardWait, ForwardMeasure, BackwardWait, BackwardMeasure, Compute };
77+
78+ struct CoggingCalibData {
79+ int32_t temp_fw[CALIB_MAP_SIZE] = {0 };
80+ int32_t temp_bw[CALIB_MAP_SIZE] = {0 };
81+ uint16_t counts_fw[CALIB_MAP_SIZE] = {0 };
82+ uint16_t counts_bw[CALIB_MAP_SIZE] = {0 };
83+ };
7784
85+ enum class TMC_GpioMode {DebugSpi,DSAdcClkOut,DSAdcClkIn,Aout_Bin,Ain_Bout,Aout_Bout,Ain_Bin};
7886enum class MotorType : uint8_t {NONE=0 ,DC=1 ,STEPPER=2 ,BLDC=3 };
7987enum class PhiE : uint8_t {ext=1 ,openloop=2 ,abn=3 ,hall=5 ,aenc=6 ,aencE=7 ,NONE,extEncoder};
8088enum class MotionMode : uint8_t {stop=0 ,torque=1 ,velocity=2 ,position=3 ,prbsflux=4 ,prbstorque=5 ,prbsvelocity=6 ,uqudext=8 ,encminimove=9 ,NONE};
@@ -725,11 +733,27 @@ friend class TMCDebugBridge;
725733 bool cogging_enabled = false ;
726734 void saveCoggingTable ();
727735 void clearCoggingTable ();
736+
737+ CoggingState coggingCalibState = CoggingState::Init;
738+ std::unique_ptr<CoggingCalibData> coggingData = nullptr ;
739+ uint32_t calibStartTime = 0 ;
740+ MotionMode prevCalibMode = MotionMode::stop;
741+ void handleStateCoggingCalibration ();
728742#endif
729743
730744 uint16_t maxSlewRate = MAX_SLEW_RATE; // in mA/ms
731745 void measureMaxSlewRate ();
732746
747+ enum class PidTuneState : uint8_t { Init, RampFluxP, TuneFluxI_Pulse, TuneFluxI_Measure, Done };
748+ PidTuneState pidTuneState = PidTuneState::Init;
749+ uint32_t pidTuneStartTime = 0 ;
750+ uint16_t tuneFluxI = 0 , tuneFluxP = 100 ;
751+ int32_t tuneMeasurePeak = 0 ;
752+ PhiE lastPidTunePhiE = PhiE::NONE;
753+ MotionMode lastPidTuneMode = MotionMode::stop;
754+ TMC4671PIDConf pidTuneNewPids;
755+ void handleStatePidAutoTune ();
756+
733757 void initAdc (uint16_t mdecA, uint16_t mdecB,uint32_t mclkA,uint32_t mclkB);
734758 void setPwm (uint8_t val,uint16_t maxcnt,uint8_t bbmL,uint8_t bbmH);// 100MHz/maxcnt+1
735759 void setPwm (TMC_PwmMode val);// pwm mode
0 commit comments