HF-TMC9660 Driver
Hardware Agnostic C++ Driver for the TMC9660
Loading...
Searching...
No Matches
tmc9660_param_mode_tmcl.hpp File Reference
#include <cstdint>
Include dependency graph for tmc9660_param_mode_tmcl.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  tmc9660
 
namespace  tmc9660::tmcl
 

Macros

#define OP_LIST(X)
 Operation codes accepted by the TMC9660 Parameter Mode (Table 18).
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case Op::NAME: return #NAME;
 
#define CALC_OPERATION_LIST(X)
 
#define X(NAME, VALUE, DOC)   NAME = VALUE,
 
#define X(NAME, VALUE, DOC)   case CalcOperation::NAME: return #NAME;
 
#define JUMP_CONDITION_LIST(X)
 
#define X(NAME, VALUE, DOC)   NAME = VALUE,
 
#define X(NAME, VALUE, DOC)   case JumpCondition::NAME: return #NAME;
 
#define WAIT_CONDITION_LIST(X)
 
#define X(NAME, VALUE, DOC)   NAME = VALUE,
 
#define X(NAME, VALUE, DOC)   case WaitCondition::NAME: return #NAME;
 
#define REPLY_CODE_LIST(X)
 Status codes returned in the status byte of every TMCL reply.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ReplyCode::NAME: return #NAME;
 
#define RAMDEBUG_TYPE_LIST(X)
 TYPE field values when Operation::RamDebug is issued.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case RamDebugType::NAME: return #NAME;
 
#define RAMDEBUG_STATE_LIST(X)
 Values returned by ::RamDebugType::GET_STATE.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case RamDebugState::NAME: return #NAME;
 
#define GLOBAL_PARAM_BANK0_LIST(X)
 Non-motion parameters in bank 0: communication, I/O, heartbeat, hibernation, loops, auto-start, etc.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GlobalParamBank0::NAME: return #NAME;
 
#define GLOBAL_PARAM_BANK2_LIST(X)
 User-script variables 0…15. RWE.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GlobalParamBank2::NAME: return #NAME;
 
#define GLOBAL_PARAM_BANK3_LIST(X)
 Timer periods and input-trigger transitions for scripting interrupts.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GlobalParamBank3::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case TriggerTransition::NAME: return #NAME;
 
#define GATE_DRIVER_LIST(X)
 Parameters for gate driver timer and current settings (Table 20).
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GateDriver::NAME: return #NAME;
 
#define PWM_OUTPUT_POLARITY_LIST(X)
 Table — PWM Output Polarity:
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case PwmOutputPolarity::NAME: return #NAME;
 
#define GATE_CURRENT_SINK_LIST(X)
 Enumerates possible values for UVW_SINK_CURRENT and Y2_SINK_CURRENT (50–2000mA).
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GateCurrentSink::NAME: return #NAME;
 
#define GATE_CURRENT_SOURCE_LIST(X)
 Enumerates possible values for UVW_SOURCE_CURRENT and Y2_SOURCE_CURRENT (25–1000mA).
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GateCurrentSource::NAME: return #NAME;
 
#define BOOTSTRAP_CURRENT_LIMIT_LIST(X)
 Enumerates possible values for BOOTSTRAP_CURRENT_LIMIT (45–391mA).
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case BootstrapCurrentLimit::NAME: return #NAME;
 
#define OVERCURRENT_PROTECTION_LIST(X)
 Parameters for configuring gate driver overcurrent protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case OvercurrentProtection::NAME: return #NAME;
 
#define OVERCURRENT_ENABLE_LIST(X)
 Enumerates options for enabling or disabling overcurrent protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case OvercurrentEnable::NAME: return #NAME;
 
#define OVERCURRENT_THRESHOLD_LIST(X)
 Enumerates possible threshold values for overcurrent protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case OvercurrentThreshold::NAME: return #NAME;
 
#define OVERCURRENT_TIMING_LIST(X)
 Enumerates possible blanking and deglitch times for overcurrent protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case OvercurrentTiming::NAME: return #NAME;
 
#define VDS_USAGE_LIST(X)
 Enumerates options for VDS measurement usage in overcurrent protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VdsUsage::NAME: return #NAME;
 
#define UNDERVOLTAGE_PROTECTION_LIST(X)
 Parameters for configuring undervoltage lockout (UVLO) protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case UndervoltageProtection::NAME: return #NAME;
 
#define UNDERVOLTAGE_LEVEL_LIST(X)
 Enumerates possible levels for undervoltage protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case UndervoltageLevel::NAME: return #NAME;
 
#define UNDERVOLTAGE_ENABLE_LIST(X)
 Enumerates options for enabling or disabling undervoltage protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case UndervoltageEnable::NAME: return #NAME;
 
#define VGS_SHORT_PROTECTION_LIST(X)
 Parameters for configuring gate-to-source (VGS) short circuit protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VgsShortProtection::NAME: return #NAME;
 
#define VGS_SHORT_ENABLE_LIST(X)
 Enumerates options for enabling or disabling VGS short protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VgsShortEnable::NAME: return #NAME;
 
#define VGS_BLANKING_TIME_LIST(X)
 Enumerates possible blanking times for VGS short protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VgsBlankingTime::NAME: return #NAME;
 
#define VGS_DEGLITCH_TIME_LIST(X)
 Enumerates possible deglitch times for VGS short protection.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VgsDeglitchTime::NAME: return #NAME;
 
#define MOTOR_CONFIG_LIST(X)
 Parameters for configuring motor characteristics and drive settings.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case MotorConfig::NAME: return #NAME;
 
#define MOTOR_TYPE_LIST(X)
 Enumerates supported motor types.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case MotorType::NAME: return #NAME;
 
#define MOTOR_DIRECTION_LIST(X)
 Enumerates motor rotation directions.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case MotorDirection::NAME: return #NAME;
 
#define PWM_SWITCHING_SCHEME_LIST(X)
 Enumerates PWM switching schemes.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case PwmSwitchingScheme::NAME: return #NAME;
 
#define COMMUTATION_MODE_LIST(X)
 Commutation modes define how the motor shaft angle is determined and the system's state.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case CommutationMode::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case IdleMotorPwmBehavior::NAME: return #NAME;
 
#define ADC_CONFIG_LIST(X)
 Parameters for configuring ADCs for motor current measurement.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AdcConfig::NAME: return #NAME;
 
#define ADC_SHUNT_TYPE_LIST(X)
 Enumerates shunt types for ADC measurements.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AdcShuntType::NAME: return #NAME;
 
#define CSA_GAIN_LIST(X)
 Enumerates current sense amplifier gain settings.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case CsaGain::NAME: return #NAME;
 
#define CSA_FILTER_LIST(X)
 Enumerates current sense amplifier filter settings.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case CsaFilter::NAME: return #NAME;
 
#define ADC_MAPPING_LIST(X)
 Enumerates ADC mapping options for motor phases.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AdcMapping::NAME: return #NAME;
 
#define ADC_INVERSION_LIST(X)
 Enumerates ADC inversion settings.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AdcInversion::NAME: return #NAME;
 
#define PWM_FREQUENCY_LIST(X)
 Enumerates recommended PWM frequencies for different motor types.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case PwmFrequency::NAME: return #NAME;
 
#define FEEDBACK_SENSOR_CONFIG_LIST(X)
 Parameters for configuring feedback sensors (ABN, Hall, SPI encoders).
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case FeedbackSensorConfig::NAME: return #NAME;
 
#define ABN_INIT_METHOD_LIST(X)
 Enumerates ABN encoder initialization methods.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AbnInitMethod::NAME: return #NAME;
 
#define ABN_INIT_STATE_LIST(X)
 Enumerates ABN encoder initialization states.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AbnInitState::NAME: return #NAME;
 
#define ABN_N_CHANNEL_FILTERING_LIST(X)
 Enumerates ABN N-channel filtering modes.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AbnNChannelFiltering::NAME: return #NAME;
 
#define HALL_SECTOR_OFFSET_LIST(X)
 Enumerates Hall sector offsets.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case HallSectorOffset::NAME: return #NAME;
 
#define SPI_ENCODER_TRANSFER_LIST(X)
 Enumerates SPI encoder transfer modes.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case SpiEncoderTransfer::NAME: return #NAME;
 
#define SPI_INIT_METHOD_LIST(X)
 Enumerates SPI encoder initialization methods.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case SpiInitMethod::NAME: return #NAME;
 
#define ENABLE_DISABLE_LIST(X)
 Generic enable/disable settings used by various parameters.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case EnableDisable::NAME: return #NAME;
 
#define DIRECTION_LIST(X)
 Direction settings used by various encoder parameters.
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case Direction::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case TorqueFluxControl::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case TorqueFluxPiSeparation::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case CurrentPiNormalization::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VelocityControl::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VelocitySensorSelection::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VelocityPiNorm::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case VelocityMeterMode::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AccelerationFFShift::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case PositionControl::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case PositionSensorSelection::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case PositionPiNorm::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case RamperStopConfig::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ReferenceSwitchEnable::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ReferenceSwitchPolaritySwap::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ReferenceSwitchLatchSettings::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case EventStopSettings::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case BiquadFilter::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case BiquadFilterEnable::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case FaultHandling::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GdrvRetryBehaviour::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case DriveFaultBehaviour::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case IitMonitor::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case TemperatureProtection::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case HeartbeatMonitoring::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case HeartbeatMonitoringConfig::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case BrakeChopper::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case MechanicalBrake::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ReferenceSearch::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ReferenceSwitchSearchMode::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ReferenceSearchCommand::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ReferenceSearchStatus::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case StepDir::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case StepDirStepDividerShift::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case HibernationWakeup::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case PowerDownTimeout::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case SystemStatusSupply::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case InternalMeasurement::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case CombinedDiagnosticValues::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case ErrorsAndFlags::NAME: return #NAME;
 
#define FLAG(bit)   (1u << (bit)) /** Bit flag macro */
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GeneralStatusFlags::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GeneralErrorFlags::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case GateDriverErrorFlags::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 
#define X(NAME, VALUE, DOC)   case AdcStatusFlags::NAME: return #NAME;
 
#define X(NAME, VALUE, DOC)   NAME = VALUE DOC,
 

Enumerations

enum class  tmc9660::tmcl::Op : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::CalcOperation : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::JumpCondition : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::WaitCondition : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::ReplyCode : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::RamDebugType : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::RamDebugState : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::GlobalParamBank0 : std::uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::GlobalParamBank2 : std::uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::GlobalParamBank3 : std::uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::GateDriver : uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::PwmOutputPolarity : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::GateCurrentSink : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::GateCurrentSource : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::BootstrapCurrentLimit : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::OvercurrentProtection : uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::OvercurrentEnable : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::OvercurrentThreshold : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::OvercurrentTiming : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::VdsUsage : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::UndervoltageProtection : uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::UndervoltageLevel : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::UndervoltageEnable : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::VgsShortProtection : uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::VgsShortEnable : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::VgsBlankingTime : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::VgsDeglitchTime : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::MotorConfig : uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::MotorType : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::MotorDirection : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::PwmSwitchingScheme : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::CommutationMode : std::uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::AdcConfig : uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::AdcShuntType : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::CsaGain : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::CsaFilter : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::AdcMapping : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::AdcInversion : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::PwmFrequency : uint32_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::FeedbackSensorConfig : uint16_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::AbnInitMethod : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::AbnInitState : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::AbnNChannelFiltering : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::HallSectorOffset : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::SpiEncoderTransfer : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::SpiInitMethod : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::EnableDisable : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::Direction : uint8_t { tmc9660::tmcl::X }
 
enum class  tmc9660::tmcl::Parameters : uint16_t { tmc9660::tmcl::X }
 

Functions

const char * tmc9660::tmcl::to_string (Op op)
 
const char * tmc9660::tmcl::to_string (CalcOperation op)
 
const char * tmc9660::tmcl::to_string (JumpCondition c)
 
const char * tmc9660::tmcl::to_string (WaitCondition w)
 
const char * tmc9660::tmcl::to_string (ReplyCode rc)
 
const char * tmc9660::tmcl::to_string (RamDebugType t)
 
const char * tmc9660::tmcl::to_string (RamDebugState s)
 
const char * tmc9660::tmcl::to_string (GlobalParamBank0 p)
 
const char * tmc9660::tmcl::to_string (GlobalParamBank2 p)
 
const char * tmc9660::tmcl::to_string (GlobalParamBank3 p)
 
const char * tmc9660::tmcl::to_string (GateDriver gd)
 
const char * tmc9660::tmcl::to_string (PwmOutputPolarity p)
 
const char * tmc9660::tmcl::to_string (GateCurrentSink s)
 
const char * tmc9660::tmcl::to_string (GateCurrentSource s)
 
const char * tmc9660::tmcl::to_string (BootstrapCurrentLimit s)
 
const char * tmc9660::tmcl::to_string (OvercurrentProtection p)
 
const char * tmc9660::tmcl::to_string (OvercurrentEnable e)
 
const char * tmc9660::tmcl::to_string (OvercurrentThreshold t)
 
const char * tmc9660::tmcl::to_string (OvercurrentTiming t)
 
const char * tmc9660::tmcl::to_string (VdsUsage v)
 
const char * tmc9660::tmcl::to_string (UndervoltageProtection p)
 
const char * tmc9660::tmcl::to_string (UndervoltageLevel level)
 
const char * tmc9660::tmcl::to_string (UndervoltageEnable enable)
 
const char * tmc9660::tmcl::to_string (VgsShortProtection p)
 
const char * tmc9660::tmcl::to_string (VgsShortEnable e)
 
const char * tmc9660::tmcl::to_string (VgsBlankingTime t)
 
const char * tmc9660::tmcl::to_string (VgsDeglitchTime t)
 
const char * tmc9660::tmcl::to_string (MotorConfig config)
 
const char * tmc9660::tmcl::to_string (MotorType type)
 
const char * tmc9660::tmcl::to_string (MotorDirection direction)
 
const char * tmc9660::tmcl::to_string (PwmSwitchingScheme scheme)
 
const char * tmc9660::tmcl::to_string (CommutationMode mode)
 
const char * tmc9660::tmcl::to_string (AdcConfig config)
 
const char * tmc9660::tmcl::to_string (AdcShuntType t)
 
const char * tmc9660::tmcl::to_string (CsaGain g)
 
const char * tmc9660::tmcl::to_string (CsaFilter f)
 
const char * tmc9660::tmcl::to_string (AdcMapping m)
 
const char * tmc9660::tmcl::to_string (AdcInversion i)
 
const char * tmc9660::tmcl::to_string (PwmFrequency f)
 
const char * tmc9660::tmcl::to_string (FeedbackSensorConfig config)
 
const char * tmc9660::tmcl::to_string (AbnInitMethod method)
 
const char * tmc9660::tmcl::to_string (AbnInitState state)
 
const char * tmc9660::tmcl::to_string (AbnNChannelFiltering filtering)
 
const char * tmc9660::tmcl::to_string (HallSectorOffset offset)
 
const char * tmc9660::tmcl::to_string (SpiEncoderTransfer transfer)
 
const char * tmc9660::tmcl::to_string (SpiInitMethod method)
 
const char * tmc9660::tmcl::to_string (EnableDisable setting)
 
const char * tmc9660::tmcl::to_string (Direction direction)
 

Trigger Transition Options

#define TRIGGER_TRANSITION_LIST(X)
 For all "_TRIGGER_TRANSITION" params: 0=OFF, 1=RISING, 2=FALLING, 3=BOTH.
 
enum class  tmc9660::tmcl::TriggerTransition : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (TriggerTransition e)
 

Idle Motor PWM Behavior

#define IDLE_MOTOR_PWM_BEHAVIOR_LIST(X)
 PWM behavior in commutation mode "System Off" (Parameter ID: 9).
 
enum class  tmc9660::tmcl::IdleMotorPwmBehavior : std::uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (IdleMotorPwmBehavior behavior)
 

Torque and Flux Control Parameters

#define TORQUE_FLUX_CONTROL_LIST(X)
 Parameters for configuring torque and flux control loops.
 
enum class  tmc9660::tmcl::TorqueFluxControl : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (TorqueFluxControl config)
 

Torque/Flux PI Separation

#define TORQUE_FLUX_PI_SEPARATION_LIST(X)
 Selects if torque and flux PI controllers use separate parameters.
 
enum class  tmc9660::tmcl::TorqueFluxPiSeparation : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (TorqueFluxPiSeparation separation)
 

Current PI Normalization Format

#define CURRENT_PI_NORMALIZATION_LIST(X)
 Normalization format for current PI controller output.
 
enum class  tmc9660::tmcl::CurrentPiNormalization : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (CurrentPiNormalization norm)
 

Velocity Mode Parameters

#define VELOCITY_CONTROL_LIST(X)
 Parameters for configuring velocity control and ramping.
 
enum class  tmc9660::tmcl::VelocityControl : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (VelocityControl config)
 

Velocity Sensor Selection

#define VELOCITY_SENSOR_SELECTION_LIST(X)
 Enumerates feedback sources for velocity PI regulator.
 
enum class  tmc9660::tmcl::VelocitySensorSelection : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (VelocitySensorSelection selection)
 

Velocity PI Normalization

#define VELOCITY_PI_NORM_LIST(X)
 Enumerates normalization formats for velocity PI controller.
 
enum class  tmc9660::tmcl::VelocityPiNorm : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (VelocityPiNorm norm)
 

Velocity Meter Modes

#define VELOCITY_METER_MODE_LIST(X)
 Enumerates velocity meter modes.
 
enum class  tmc9660::tmcl::VelocityMeterMode : std::uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (VelocityMeterMode mode)
 

Acceleration Feedforward Shift

#define ACCELERATION_FF_SHIFT_LIST(X)
 Enumerates shift values for acceleration feedforward.
 
enum class  tmc9660::tmcl::AccelerationFFShift : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (AccelerationFFShift shift)
 

Position Mode Parameters

#define POSITION_CONTROL_LIST(X)
 Parameters for configuring position control and ramping.
 
enum class  tmc9660::tmcl::PositionControl : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (PositionControl config)
 

Position Sensor Selection

#define POSITION_SENSOR_SELECTION_LIST(X)
 Enumerates feedback sources for position PI regulator.
 
enum class  tmc9660::tmcl::PositionSensorSelection : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (PositionSensorSelection selection)
 

Position PI Normalization

#define POSITION_PI_NORM_LIST(X)
 Enumerates normalization formats for position PI controller.
 
enum class  tmc9660::tmcl::PositionPiNorm : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (PositionPiNorm norm)
 

Ramper Stop Condition and Reference Switch Parameters

#define RAMPER_STOP_CONFIG_LIST(X)
 Parameters for configuring ramper stop conditions and reference switch behavior.
 
enum class  tmc9660::tmcl::RamperStopConfig : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (RamperStopConfig config)
 

Reference Switch Enable

#define REFERENCE_SWITCH_ENABLE_LIST(X)
 Bitwise enable for stopping when reference switch input is triggered.
 
enum class  tmc9660::tmcl::ReferenceSwitchEnable : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (ReferenceSwitchEnable enable)
 

Reference Switch Polarity and Swap

#define REFERENCE_SWITCH_POLARITY_SWAP_LIST(X)
 Bitwise configuration for reference switch polarity and swapping.
 
enum class  tmc9660::tmcl::ReferenceSwitchPolaritySwap : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (ReferenceSwitchPolaritySwap config)
 

Reference Switch Latch Settings

#define REFERENCE_SWITCH_LATCH_SETTINGS_LIST(X)
 Bitwise configuration for reference switch latch behavior.
 
enum class  tmc9660::tmcl::ReferenceSwitchLatchSettings : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (ReferenceSwitchLatchSettings setting)
 

Event Stop Settings

#define EVENT_STOP_SETTINGS_LIST(X)
 Bitwise configuration for stop conditions.
 
enum class  tmc9660::tmcl::EventStopSettings : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (EventStopSettings setting)
 

Biquad Filter Parameters

#define BIQUAD_FILTER_LIST(X)
 Parameters for configuring biquad filters for torque and velocity control loops.
 
enum class  tmc9660::tmcl::BiquadFilter : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (BiquadFilter e)
 

Biquad Filter Enable/Disable

#define BIQUAD_FILTER_ENABLE_LIST(X)
 Enumerates enable/disable options for biquad filters.
 
enum class  tmc9660::tmcl::BiquadFilterEnable : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (BiquadFilterEnable enable)
 

Fault Handling Parameters

#define FAULT_HANDLING_LIST(X)
 Parameters for configuring system behavior on fault conditions.
 
enum class  tmc9660::tmcl::FaultHandling : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (FaultHandling config)
 

Gate Driver Retry Behaviour

#define GDRV_RETRY_BEHAVIOUR_LIST(X)
 System state after a gate driver fault occurs.
 
enum class  tmc9660::tmcl::GdrvRetryBehaviour : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (GdrvRetryBehaviour behaviour)
 

Drive Fault Behaviour

#define DRIVE_FAULT_BEHAVIOUR_LIST(X)
 System state after all retries fail following a fault.
 
enum class  tmc9660::tmcl::DriveFaultBehaviour : std::uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (DriveFaultBehaviour behaviour)
 

IIT Monitor Parameters

#define IIT_MONITOR_LIST(X)
 Parameters for configuring IIT (I²t) monitoring and protection.
 
enum class  tmc9660::tmcl::IitMonitor : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (IitMonitor e)
 

Temperature Protection Parameters

#define TEMPERATURE_PROTECTION_LIST(X)
 Parameters for configuring temperature protection using external and internal sensors.
 
enum class  tmc9660::tmcl::TemperatureProtection : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (TemperatureProtection e)
 

Heartbeat Monitoring Parameters

#define HEARTBEAT_MONITORING_LIST(X)
 Parameters for configuring heartbeat monitoring.
 
enum class  tmc9660::tmcl::HeartbeatMonitoring : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (HeartbeatMonitoring e)
 

Heartbeat Monitoring Config

#define HEARTBEAT_MONITORING_CONFIG_LIST(X)
 Enumerates heartbeat monitoring interface selection.
 
enum class  tmc9660::tmcl::HeartbeatMonitoringConfig : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (HeartbeatMonitoringConfig e)
 

Brake Chopper Parameters

#define BRAKE_CHOPPER_LIST(X)
 Parameters for configuring the brake chopper functionality.
 
enum class  tmc9660::tmcl::BrakeChopper : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (BrakeChopper e)
 

Mechanical Brake Parameters

#define MECHANICAL_BRAKE_LIST(X)
 Parameters for controlling an external mechanical brake.
 
enum class  tmc9660::tmcl::MechanicalBrake : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (MechanicalBrake e)
 

Reference Search (Automatic Homing) Parameters

#define REFERENCE_SEARCH_LIST(X)
 Parameters for configuring automatic homing/reference search routines.
 
enum class  tmc9660::tmcl::ReferenceSearch : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (ReferenceSearch e)
 

Reference Search Modes

#define REFERENCE_SEARCH_MODE_LIST(X)
 Enumerates reference search (homing) patterns.
 
enum class  tmc9660::tmcl::ReferenceSwitchSearchMode : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (ReferenceSwitchSearchMode e)
 

Reference Search TMCL Command Types

#define REFERENCE_SEARCH_COMMAND_LIST(X)
 Enumerates TMCL RFS (13) command types for reference search.
 
enum class  tmc9660::tmcl::ReferenceSearchCommand : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (ReferenceSearchCommand e)
 

Reference Search Status Codes

#define REFERENCE_SEARCH_STATUS_LIST(X)
 Enumerates status codes for reference search state machine.
 
enum class  tmc9660::tmcl::ReferenceSearchStatus : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (ReferenceSearchStatus e)
 

Step/Dir Interface Parameters

#define STEP_DIR_LIST(X)
 Parameters for configuring the STEP/DIR target movement interface.
 
enum class  tmc9660::tmcl::StepDir : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (StepDir e)
 

Step/Dir Microstep Divider Shift

#define STEP_DIR_STEP_DIVIDER_SHIFT_LIST(X)
 Enumerates micro-step divider shift settings for STEP/DIR interface.
 
enum class  tmc9660::tmcl::StepDirStepDividerShift : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (StepDirStepDividerShift e)
 

Hibernation and Wakeup Parameters

#define HIBERNATION_WAKEUP_LIST(X)
 Parameters for configuring hibernation (low-power) and wakeup behavior.
 
enum class  tmc9660::tmcl::HibernationWakeup : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (HibernationWakeup e)
 

Power Down Timeout

#define POWER_DOWN_TIMEOUT_LIST(X)
 Enumerates timeout durations for power-down state.
 
enum class  tmc9660::tmcl::PowerDownTimeout : uint8_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (PowerDownTimeout e)
 

System Supply Parameters

@{

System Supply Parameters

#define SYSTEM_STATUS_SUPPLY_LIST(X)
 Parameters for supply voltage warnings.
 
enum class  tmc9660::tmcl::SystemStatusSupply : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (SystemStatusSupply e)
 

Internal Measurement Parameters

@{

Internal Measurement Parameters

#define INTERNAL_MEASUREMENT_LIST(X)
 Raw diagnostic values and FOC internal measurements.
 
enum class  tmc9660::tmcl::InternalMeasurement : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (InternalMeasurement e)
 

Combined Diagnostic Values

@{

Combined Diagnostic Values

#define COMBINED_DIAGNOSTIC_VALUES_LIST(X)
 Simplified combined measurement registers used during tuning.
 
enum class  tmc9660::tmcl::CombinedDiagnosticValues : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (CombinedDiagnosticValues e)
 

Temperature and Error Flags Parameters

#define ERRORS_AND_FLAGS_LIST(X)
 Parameters for temperature monitoring and error flags.
 
enum class  tmc9660::tmcl::ErrorsAndFlags : uint16_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (ErrorsAndFlags e)
 

General Status Flags

#define GENERAL_STATUS_FLAGS_LIST(X)
 General status flags indicating system state, events, and hardware availability.
 
enum class  tmc9660::tmcl::GeneralStatusFlags : uint32_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (GeneralStatusFlags e)
 

General Error Flags

#define GENERAL_ERROR_FLAGS_LIST(X)
 Enumerates general error flags for GENERAL_ERROR_FLAGS.
 
enum class  tmc9660::tmcl::GeneralErrorFlags : uint32_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (GeneralErrorFlags e)
 

Gate Driver Error Flags

#define GATE_DRIVER_ERROR_FLAGS_LIST(X)
 Enumerates gate driver error flags for GDRV_ERROR_FLAGS.
 
enum class  tmc9660::tmcl::GateDriverErrorFlags : uint32_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (GateDriverErrorFlags e)
 

ADC Status Flags

@{

#define ADC_STATUS_FLAGS_LIST(X)
 Bit flags reported via parameter ADC_STATUS_FLAGS.
 
enum class  tmc9660::tmcl::AdcStatusFlags : uint32_t { tmc9660::tmcl::X }
 
const char * tmc9660::tmcl::to_string (AdcStatusFlags e)
 

Macro Definition Documentation

◆ ABN_INIT_METHOD_LIST

#define ABN_INIT_METHOD_LIST (   X)
Value:
X(FORCED_PHI_E_ZERO_WITH_ACTIVE_SWING, 0, ) \
X(FORCED_PHI_E_90_ZERO, 1, ) \
X(USE_HALL, 2, ) \
X(USE_N_CHANNEL_OFFSET, 3, )
#define X(NAME, VALUE, DOC)
Definition tmc9660_param_mode_tmcl.hpp:154

Enumerates ABN encoder initialization methods.

Table — ABN Initialization Methods:

NUMBER NAME DESCRIPTION
0 FORCED_PHI_E_ZERO_WITH_ACTIVE_SWING Force phi_e zero with active swing.
1 FORCED_PHI_E_90_ZERO Force phi_e 90-degree then zero.
2 USE_HALL Use Hall sensor for alignment.
3 USE_N_CHANNEL_OFFSET Use N-channel offset for alignment.

◆ ABN_INIT_STATE_LIST

#define ABN_INIT_STATE_LIST (   X)
Value:
X(IDLE, 0, ) \
X(BUSY, 1, ) \
X(WAIT, 2, ) \
X(DONE, 3, )

Enumerates ABN encoder initialization states.

Table — ABN Initialization States:

NUMBER NAME DESCRIPTION
0 IDLE Initialization idle.
1 BUSY Initialization in progress.
2 WAIT Waiting for completion.
3 DONE Initialization completed.

◆ ABN_N_CHANNEL_FILTERING_LIST

#define ABN_N_CHANNEL_FILTERING_LIST (   X)
Value:
X(FILTERING_OFF, 0, ) \
X(N_EVENT_ON_A_HIGH_B_HIGH, 1, ) \
X(N_EVENT_ON_A_HIGH_B_LOW, 2, ) \
X(N_EVENT_ON_A_LOW_B_HIGH, 3, ) \
X(N_EVENT_ON_A_LOW_B_LOW, 4, )

Enumerates ABN N-channel filtering modes.

Table — ABN N-Channel Filtering Modes:

NUMBER NAME DESCRIPTION
0 FILTERING_OFF No filtering.
1 N_EVENT_ON_A_HIGH_B_HIGH Event on A high, B high.
2 N_EVENT_ON_A_HIGH_B_LOW Event on A high, B low.
3 N_EVENT_ON_A_LOW_B_HIGH Event on A low, B high.
4 N_EVENT_ON_A_LOW_B_LOW Event on A low, B low.

◆ ACCELERATION_FF_SHIFT_LIST

#define ACCELERATION_FF_SHIFT_LIST (   X)
Value:
X(NO_SHIFT, 0, ) \
X(SHIFT_4_BIT, 1, ) \
X(SHIFT_8_BIT, 2, ) \
X(SHIFT_12_BIT, 3, ) \
X(SHIFT_16_BIT, 4, ) \
X(SHIFT_20_BIT, 5, ) \
X(SHIFT_24_BIT, 6, )

Enumerates shift values for acceleration feedforward.

Table — Acceleration Feedforward Shift:

NUMBER NAME DESCRIPTION
0 NO_SHIFT No shift.
1 SHIFT_4_BIT Shift right by 4 bits.
2 SHIFT_8_BIT Shift right by 8 bits.
3 SHIFT_12_BIT Shift right by 12 bits.
4 SHIFT_16_BIT Shift right by 16 bits.
5 SHIFT_20_BIT Shift right by 20 bits.
6 SHIFT_24_BIT Shift right by 24 bits.

◆ ADC_CONFIG_LIST

#define ADC_CONFIG_LIST (   X)
Value:
X(ADC_SHUNT_TYPE, 12, ) \
X(ADC_I0_RAW, 13, ) \
X(ADC_I1_RAW, 14, ) \
X(ADC_I2_RAW, 15, ) \
X(ADC_I3_RAW, 16, ) \
X(CSA_GAIN_ADC_I0_TO_ADC_I2, 17, ) \
X(CSA_GAIN_ADC_I3, 18, ) \
X(CSA_FILTER_ADC_I0_TO_ADC_I2,19, ) \
X(CSA_FILTER_ADC_I3, 20, ) \
X(CURRENT_SCALING_FACTOR, 21, ) \
X(PHASE_UX1_ADC_MAPPING, 22, ) \
X(PHASE_VX2_ADC_MAPPING, 23, ) \
X(PHASE_WY1_ADC_MAPPING, 24, ) \
X(PHASE_Y2_ADC_MAPPING, 25, ) \
X(ADC_I0_SCALE, 26, ) \
X(ADC_I1_SCALE, 27, ) \
X(ADC_I2_SCALE, 28, ) \
X(ADC_I3_SCALE, 29, ) \
X(ADC_I0_INVERTED, 30, ) \
X(ADC_I1_INVERTED, 31, ) \
X(ADC_I2_INVERTED, 32, ) \
X(ADC_I3_INVERTED, 33, ) \
X(ADC_I0_OFFSET, 34, ) \
X(ADC_I1_OFFSET, 35, ) \
X(ADC_I2_OFFSET, 36, ) \
X(ADC_I3_OFFSET, 37, ) \
X(ADC_I0, 38, ) \
X(ADC_I1, 39, ) \
X(ADC_I2, 40, ) \
X(ADC_I3, 41, )

Parameters for configuring ADCs for motor current measurement.

Table — ADC Configuration Parameters:

NUMBER NAME DESCRIPTION
12 ADC_SHUNT_TYPE Shunt type for ADC measurements. See AdcShuntType enum. Default: 4 (BOTTOM_SHUNTS).
13 ADC_I0_RAW Raw ADC measurement for I0 shunt [-32768, 32767]. Read-only.
14 ADC_I1_RAW Raw ADC measurement for I1 shunt [-32768, 32767]. Read-only.
15 ADC_I2_RAW Raw ADC measurement for I2 shunt [-32768, 32767]. Read-only.
16 ADC_I3_RAW Raw ADC measurement for I3 shunt [-32768, 32767]. Read-only.
17 CSA_GAIN_ADC_I0_TO_ADC_I2 Current sense amplifier gain for ADC I0, I1 and I2. See CsaGain enum. Default: 1 (GAIN_10X).
18 CSA_GAIN_ADC_I3 Current sense amplifier gain for ADC I3. See CsaGain enum. Default: 1 (GAIN_10X).
19 CSA_FILTER_ADC_I0_TO_ADC_I2 Current sense amplifier filter for ADC I0, I1 and I2. See CsaFilter enum. Default: 0 (T_0_55_MICROSEC).
20 CSA_FILTER_ADC_I3 Current sense amplifier filter for ADC I3. See CsaFilter enum. Default: 0 (T_0_55_MICROSEC).
21 CURRENT_SCALING_FACTOR Current scaling factor converting internal units to real-world units [1, 65535]. Default: 520.
22 PHASE_UX1_ADC_MAPPING Mapping ADC to UX1. See AdcMapping enum. Default: 0 (ADC_I0).
23 PHASE_VX2_ADC_MAPPING Mapping ADC to VX2. See AdcMapping enum. Default: 1 (ADC_I1).
24 PHASE_WY1_ADC_MAPPING Mapping ADC to WY1. See AdcMapping enum. Default: 2 (ADC_I2).
25 PHASE_Y2_ADC_MAPPING Mapping ADC to Y2. See AdcMapping enum. Default: 3 (ADC_I3).
26 ADC_I0_SCALE Scaling applied to ADC I0 [1, 32767]. Default: 1024.
27 ADC_I1_SCALE Scaling applied to ADC I1 [1, 32767]. Default: 1024.
28 ADC_I2_SCALE Scaling applied to ADC I2 [1, 32767]. Default: 1024.
29 ADC_I3_SCALE Scaling applied to ADC I3 [1, 32767]. Default: 1024.
30 ADC_I0_INVERTED Invert the reading of ADC I0. 0: NOT_INVERTED, 1: INVERTED. Default: 1.
31 ADC_I1_INVERTED Invert the reading of ADC I1. 0: NOT_INVERTED, 1: INVERTED. Default: 1.
32 ADC_I2_INVERTED Invert the reading of ADC I2. 0: NOT_INVERTED, 1: INVERTED. Default: 1.
33 ADC_I3_INVERTED Invert the reading of ADC I3. 0: NOT_INVERTED, 1: INVERTED. Default: 1.
34 ADC_I0_OFFSET Offset applied to ADC I0 measurement [-32768, 32767]. Default: 0.
35 ADC_I1_OFFSET Offset applied to ADC I1 measurement [-32768, 32767]. Default: 0.
36 ADC_I2_OFFSET Offset applied to ADC I2 measurement [-32768, 32767]. Default: 0.
37 ADC_I3_OFFSET Offset applied to ADC I3 measurement [-32768, 32767]. Default: 0.
38 ADC_I0 Scaled and offset compensated ADC I0 measurement [-32768, 32767]. Read-only.
39 ADC_I1 Scaled and offset compensated ADC I1 measurement [-32768, 32767]. Read-only.
40 ADC_I2 Scaled and offset compensated ADC I2 measurement [-32768, 32767]. Read-only.
41 ADC_I3 Scaled and offset compensated ADC I3 measurement [-32768, 32767]. Read-only.

◆ ADC_INVERSION_LIST

#define ADC_INVERSION_LIST (   X)
Value:
X(NOT_INVERTED, 0, ) \
X(INVERTED, 1, )

Enumerates ADC inversion settings.

Table — ADC Inversion Settings:

NUMBER NAME DESCRIPTION
0 NOT_INVERTED Normal reading (not inverted)
1 INVERTED Inverted reading

◆ ADC_MAPPING_LIST

#define ADC_MAPPING_LIST (   X)
Value:
X(ADC_I0, 0, ) \
X(ADC_I1, 1, ) \
X(ADC_I2, 2, ) \
X(ADC_I3, 3, )

Enumerates ADC mapping options for motor phases.

Table — ADC Mapping:

NUMBER NAME DESCRIPTION
0 ADC_I0 Map to ADC I0
1 ADC_I1 Map to ADC I1
2 ADC_I2 Map to ADC I2
3 ADC_I3 Map to ADC I3

◆ ADC_SHUNT_TYPE_LIST

#define ADC_SHUNT_TYPE_LIST (   X)
Value:
X(INLINE_UVW, 0, ) \
X(INLINE_VW, 1, ) \
X(INLINE_UW, 2, ) \
X(INLINE_UV, 3, ) \
X(BOTTOM_SHUNTS, 4, )

Enumerates shunt types for ADC measurements.

Table — ADC Shunt Types:

NUMBER NAME DESCRIPTION
0 INLINE_UVW Inline shunts for U, V, W phases
1 INLINE_VW Inline shunts for V, W phases
2 INLINE_UW Inline shunts for U, W phases
3 INLINE_UV Inline shunts for U, V phases
4 BOTTOM_SHUNTS Bottom shunts

◆ ADC_STATUS_FLAGS_LIST

#define ADC_STATUS_FLAGS_LIST (   X)
Value:
X(I0_CLIPPED, 0x00000001, ) \
X(I1_CLIPPED, 0x00000002, ) \
X(I2_CLIPPED, 0x00000004, ) \
X(I3_CLIPPED, 0x00000008, ) \
X(U0_CLIPPED, 0x00000010, ) \
X(U1_CLIPPED, 0x00000020, ) \
X(U2_CLIPPED, 0x00000040, ) \
X(U3_CLIPPED, 0x00000080, ) \
X(AIN0_CLIPPED, 0x00000100, ) \
X(AIN1_CLIPPED, 0x00000200, ) \
X(AIN2_CLIPPED, 0x00000400, ) \
X(AIN3_CLIPPED, 0x00000800, ) \
X(VM_CLIPPED, 0x00001000, ) \
X(TEMP_CLIPPED, 0x00002000, )

Bit flags reported via parameter ADC_STATUS_FLAGS.

NUMBER NAME DESCRIPTION
0x00000001 I0_CLIPPED No description provided.
0x00000002 I1_CLIPPED No description provided.
0x00000004 I2_CLIPPED No description provided.
0x00000008 I3_CLIPPED No description provided.
0x00000010 U0_CLIPPED No description provided.
0x00000020 U1_CLIPPED No description provided.
0x00000040 U2_CLIPPED No description provided.
0x00000080 U3_CLIPPED No description provided.
0x00000100 AIN0_CLIPPED No description provided.
0x00000200 AIN1_CLIPPED No description provided.
0x00000400 AIN2_CLIPPED No description provided.
0x00000800 AIN3_CLIPPED No description provided.
0x00001000 VM_CLIPPED No description provided.
0x00002000 TEMP_CLIPPED No description provided.

◆ BIQUAD_FILTER_ENABLE_LIST

#define BIQUAD_FILTER_ENABLE_LIST (   X)
Value:
X(DISABLED, 0, ) \
X(ENABLED, 1, )

Enumerates enable/disable options for biquad filters.

Table — Biquad Filter Enable/Disable:

NUMBER NAME DESCRIPTION
0 DISABLED Filter disabled.
1 ENABLED Filter enabled.

◆ BIQUAD_FILTER_LIST

#define BIQUAD_FILTER_LIST (   X)
Value:
X(TARGET_TORQUE_BIQUAD_FILTER_ENABLE, 318, ) \
X(TARGET_TORQUE_BIQUAD_FILTER_ACOEFF_1, 319, ) \
X(TARGET_TORQUE_BIQUAD_FILTER_ACOEFF_2, 320, ) \
X(TARGET_TORQUE_BIQUAD_FILTER_BCOEFF_0, 321, ) \
X(TARGET_TORQUE_BIQUAD_FILTER_BCOEFF_1, 322, ) \
X(TARGET_TORQUE_BIQUAD_FILTER_BCOEFF_2, 323, ) \
X(ACTUAL_VELOCITY_BIQUAD_FILTER_ENABLE, 324, ) \
X(ACTUAL_VELOCITY_BIQUAD_FILTER_ACOEFF_1, 325, ) \
X(ACTUAL_VELOCITY_BIQUAD_FILTER_ACOEFF_2, 326, ) \
X(ACTUAL_VELOCITY_BIQUAD_FILTER_BCOEFF_0, 327, ) \
X(ACTUAL_VELOCITY_BIQUAD_FILTER_BCOEFF_1, 328, ) \
X(ACTUAL_VELOCITY_BIQUAD_FILTER_BCOEFF_2, 329, )

Parameters for configuring biquad filters for torque and velocity control loops.

The TMC9660 Parameter Mode includes biquad filters to enhance the performance of its velocity and torque control loops. The biquad filter is a second-order digital filter, operating on current and past input/output samples using configurable coefficients.

The filter output Y(n) is calculated as: Y(n) = X(n)*b0 + X(n-1)*b1 + X(n-2)*b2 + Y(n-1)*a1 + Y(n-2)*a2 where:

  • X(n): current input sample
  • X(n-1), X(n-2): previous input samples
  • Y(n-1), Y(n-2): previous output samples
  • a1, a2, b0, b1, b2: filter coefficients (Q4.20 format, 24-bit)

The velocity biquad filter (enabled by default) filters the actual velocity used as input for the velocity controller. The torque biquad filter can be enabled to filter the target torque value.

NUMBER NAME DESCRIPTION
318 TARGET_TORQUE_BIQUAD_FILTER_ENABLE Enable target torque biquad filter. 0: DISABLED, 1: ENABLED. Default: 0. RWE
319 TARGET_TORQUE_BIQUAD_FILTER_ACOEFF_1 Target torque biquad filter aCoeff_1 [-2147483648, 2147483647]. Default: 0. RWE
320 TARGET_TORQUE_BIQUAD_FILTER_ACOEFF_2 Target torque biquad filter aCoeff_2 [-2147483648, 2147483647]. Default: 0. RWE
321 TARGET_TORQUE_BIQUAD_FILTER_BCOEFF_0 Target torque biquad filter bCoeff_0 [-2147483648, 2147483647]. Default: 1048576. RWE
322 TARGET_TORQUE_BIQUAD_FILTER_BCOEFF_1 Target torque biquad filter bCoeff_1 [-2147483648, 2147483647]. Default: 0. RWE
323 TARGET_TORQUE_BIQUAD_FILTER_BCOEFF_2 Target torque biquad filter bCoeff_2 [-2147483648, 2147483647]. Default: 0. RWE
324 ACTUAL_VELOCITY_BIQUAD_FILTER_ENABLE Enable actual velocity biquad filter. 0: DISABLED, 1: ENABLED. Default: 1. RWE
325 ACTUAL_VELOCITY_BIQUAD_FILTER_ACOEFF_1 Actual velocity biquad filter aCoeff_1 [-2147483648, 2147483647]. Default: 1849195. RWE
326 ACTUAL_VELOCITY_BIQUAD_FILTER_ACOEFF_2 Actual velocity biquad filter aCoeff_2 [-2147483648, 2147483647]. Default: 15961938. RWE
327 ACTUAL_VELOCITY_BIQUAD_FILTER_BCOEFF_0 Actual velocity biquad filter bCoeff_0 [-2147483648, 2147483647]. Default: 3665. RWE
328 ACTUAL_VELOCITY_BIQUAD_FILTER_BCOEFF_1 Actual velocity biquad filter bCoeff_1 [-2147483648, 2147483647]. Default: 7329. RWE
329 ACTUAL_VELOCITY_BIQUAD_FILTER_BCOEFF_2 Actual velocity biquad filter bCoeff_2 [-2147483648, 2147483647]. Default: 3665. RWE

◆ BOOTSTRAP_CURRENT_LIMIT_LIST

#define BOOTSTRAP_CURRENT_LIMIT_LIST (   X)
Value:
X(CUR_45_MA, 0, ) \
X(CUR_91_MA, 1, ) \
X(CUR_141_MA, 2, ) \
X(CUR_191_MA, 3, ) \
X(CUR_267_MA, 4, ) \
X(CUR_292_MA, 5, ) \
X(CUR_341_MA, 6, ) \
X(CUR_391_MA, 7, )

Enumerates possible values for BOOTSTRAP_CURRENT_LIMIT (45–391mA).

Table — Bootstrap Current Limit:

NUMBER NAME DESCRIPTION
0 CUR_45_MA 45 mA
1 CUR_91_MA 91 mA
2 CUR_141_MA 141 mA
3 CUR_191_MA 191 mA
4 CUR_267_MA 267 mA
5 CUR_292_MA 292 mA
6 CUR_341_MA 341 mA
7 CUR_391_MA 391 mA

◆ BRAKE_CHOPPER_LIST

#define BRAKE_CHOPPER_LIST (   X)
Value:
X(BRAKE_CHOPPER_ENABLE, 212, ) \
X(BRAKE_CHOPPER_VOLTAGE_LIMIT, 213, ) \
X(BRAKE_CHOPPER_HYSTERESIS, 214, )

Parameters for configuring the brake chopper functionality.

The brake chopper dissipates excess energy via an external brake resistor and MOSFET when supply voltage exceeds a set limit.

  • Enable with BRAKE_CHOPPER_ENABLE.
  • When supply voltage exceeds BRAKE_CHOPPER_VOLTAGE_LIMIT, the brake chopper MOSFET is activated.
  • The MOSFET is deactivated when voltage drops below (limit - hysteresis).

Table — Brake Chopper Parameters:

NUMBER NAME DESCRIPTION
212 BRAKE_CHOPPER_ENABLE Enable brake chopper. 0: DISABLED, 1: ENABLED. Default: 0. RWE
213 BRAKE_CHOPPER_VOLTAGE_LIMIT Voltage limit [0.1V] to activate brake chopper. 50...1000. Default: 260. RWE
214 BRAKE_CHOPPER_HYSTERESIS Hysteresis [0.1V] for deactivation. 0...50. Default: 5. RWE

◆ CALC_OPERATION_LIST

#define CALC_OPERATION_LIST (   X)
Value:
X(CALC_ADD, 0, ) \
X(CALC_SUB, 1, ) \
X(CALC_MUL, 2, ) \
X(CALC_DIV, 3, ) \
X(CALC_MOD, 4, ) \
X(CALC_AND, 5, ) \
X(CALC_OR, 6, ) \
X(CALC_XOR, 7, ) \
X(CALC_NOT, 8, ) \
X(CALC_LOAD,9, )

◆ COMBINED_DIAGNOSTIC_VALUES_LIST

#define COMBINED_DIAGNOSTIC_VALUES_LIST (   X)
Value:
X(TORQUE_FLUX_COMBINED_TARGET_VALUES, 330, ) \
X(TORQUE_FLUX_COMBINED_ACTUAL_VALUES, 331, ) \
X(VOLTAGE_D_Q_COMBINED_ACTUAL_VALUES, 332, ) \
X(INTEGRATED_ACTUAL_TORQUE_VALUE, 333, ) \
X(INTEGRATED_ACTUAL_VELOCITY_VALUE, 334, )

Simplified combined measurement registers used during tuning.

These parameters provide compact diagnostic values primarily used during motor tuning operations. They combine multiple measurements into single 32-bit values or provide integrated measurements to facilitate data collection at lower sampling rates.

NUMBER NAME DESCRIPTION
330 TORQUE_FLUX_COMBINED_TARGET_VALUES Raw (unscaled) torque and flux target values combined into one 32-bit value. Used for simplified compact measurement during tuning. [0...4294967295]. Read-only.
331 TORQUE_FLUX_COMBINED_ACTUAL_VALUES Raw (unscaled) torque and flux actual values combined into one 32-bit value. Used for simplified compact measurement during tuning. [0...4294967295]. Read-only.
332 VOLTAGE_D_Q_COMBINED_ACTUAL_VALUES Raw (unscaled) voltage actual values combined into one 32-bit value. Used for simplified compact measurement during tuning. [0...4294967295]. Read-only.
333 INTEGRATED_ACTUAL_TORQUE_VALUE Periodically summed up actual torque value. Used for simplified measurement with low measurement frequency during tuning operations. [0...4294967295]. Read-only.
334 INTEGRATED_ACTUAL_VELOCITY_VALUE Periodically summed up actual velocity value. Used for simplified measurement with low measurement frequency during tuning operations. [0...4294967295]. Read-only.

◆ COMMUTATION_MODE_LIST

#define COMMUTATION_MODE_LIST (   X)
Value:
X(SYSTEM_OFF, 0, ) \
X(SYSTEM_OFF_LOW_SIDE_FETS_ON, 1, ) \
X(SYSTEM_OFF_HIGH_SIDE_FETS_ON,2, ) \
X(FOC_OPENLOOP_VOLTAGE_MODE, 3, ) \
X(FOC_OPENLOOP_CURRENT_MODE, 4, ) \
X(FOC_ABN, 5, ) \
X(FOC_HALL_SENSOR, 6, ) \
X(RESERVED, 7, ) \
X(FOC_SPI_ENC, 8, )

Commutation modes define how the motor shaft angle is determined and the system's state.

To turn a motor, the commutation mode must be selected using the parameter COMMUTATION_MODE. This specifies the feedback system used to determine the motor's shaft angle. It is also used to enable/disable the system or switch to a state with shorted motor coils.

Commutation Modes and Their Behavior:

System Off

  • Default state after power-on and reset events.
  • Certain operations like changing the motor type require this mode to be active.
  • PWM behavior is determined by the IDLE_MOTOR_PWM_BEHAVIOR parameter:
    • 1: PWM signals are switched off, leaving the motor electrically floating (default).
    • 0: PWM signals remain active.
  • Note: This mode must be manually selected when exiting from parameter mode to the bootloader.

System Off, Low-Side FETs On

  • Charges all low-side motor FETs, shorting the motor coils to ground.
  • Not used during normal operation.

System Off, High-Side FETs On

  • Charges all high-side motor FETs, shorting the motor coils to the supply voltage.
  • Not used during normal operation.

FOC (Openloop, Voltage Mode)

  • Applies a constant duty cycle to the motor.
  • Voltage is defined by the OPENLOOP_VOLTAGE parameter (PWM duty cycle relative to supply voltage).
  • Intended for initial setup purposes only.
  • Current is not limited, so configure the OPENLOOP_VOLTAGE parameter with care.

FOC (Openloop, Current Mode)

  • Applies a constant current to the motor.
  • Current is defined by the OPENLOOP_CURRENT parameter and regulated by the flux control loop.
  • For stepper/BLDC motors:
    • Commutation angle is calculated by the internal hardware ramper block.
    • Maximum current is limited by the MAX_FLUX parameter.
    • Requires setting a velocity target using the TARGET_VELOCITY parameter.
  • For DC motors:
    • No velocity input is needed.
    • Maximum current is limited by the MAX_TORQUE parameter.

FOC (ABN), FOC (Hall Sensor), FOC (SPI Encoder)

  • Uses sensor feedback to calculate the motor shaft position.
  • Feedback source must be configured before activating this mode.
  • For stepper/BLDC motors:
    • Commutation angle is calculated from the selected feedback method.
    • Supports torque, velocity, and position control.
    • Torque is applied to the motor, and the flux value is assumed zero unless field weakening is active.
    • Maximum torque is limited by the MAX_TORQUE parameter.
  • For DC motors:
    • Supports velocity or position control.
    • Maximum torque is limited by the MAX_TORQUE parameter.

Parameters to Set Up Commutation Mode:

  • COMMUTATION_MODE (Parameter ID: 4)
    • 0: SYSTEM_OFF
    • 1: SYSTEM_OFF_LOW_SIDE_FETS_ON
    • 2: SYSTEM_OFF_HIGH_SIDE_FETS_ON
    • 3: FOC_OPENLOOP_VOLTAGE_MODE
    • 4: FOC_OPENLOOP_CURRENT_MODE
    • 5: FOC_ABN
    • 6: FOC_HALL_SENSOR
    • 7: RESERVED
    • 8: FOC_SPI_ENC
  • IDLE_MOTOR_PWM_BEHAVIOR (Parameter ID: 9)
    • 0: PWM_ON_WHEN_MOTOR_IDLE
    • 1: PWM_OFF_WHEN_MOTOR_IDLE (default)

Commutation modes define how the motor shaft angle is determined and the system's state.

Table — Commutation Modes:

NUMBER NAME DESCRIPTION
0 SYSTEM_OFF System off (default after power-on/reset).
1 SYSTEM_OFF_LOW_SIDE_FETS_ON All low-side FETs on (coils shorted to ground).
2 SYSTEM_OFF_HIGH_SIDE_FETS_ON All high-side FETs on (coils shorted to supply).
3 FOC_OPENLOOP_VOLTAGE_MODE Open-loop voltage mode (constant duty cycle).
4 FOC_OPENLOOP_CURRENT_MODE Open-loop current mode (constant current).
5 FOC_ABN FOC with ABN encoder feedback.
6 FOC_HALL_SENSOR FOC with Hall sensor feedback.
7 RESERVED Reserved.
8 FOC_SPI_ENC FOC with SPI encoder feedback.
9 IDLE_MOTOR_PWM_BEHAVIOR Idle motor PWM behavior.

◆ CSA_FILTER_LIST

#define CSA_FILTER_LIST (   X)
Value:
X(T_0_55_MICROSEC, 0, ) \
X(T_0_75_MICROSEC, 1, ) \
X(T_1_0_MICROSEC, 2, ) \
X(T_1_35_MICROSEC, 3, )

Enumerates current sense amplifier filter settings.

Table — Current Sense Amplifier Filter:

NUMBER NAME DESCRIPTION
0 T_0_55_MICROSEC 0.55 μs filter time
1 T_0_75_MICROSEC 0.75 μs filter time
2 T_1_0_MICROSEC 1.0 μs filter time
3 T_1_35_MICROSEC 1.35 μs filter time

◆ CSA_GAIN_LIST

#define CSA_GAIN_LIST (   X)
Value:
X(GAIN_5X, 0, ) \
X(GAIN_10X, 1, ) \
X(GAIN_20X, 2, ) \
X(GAIN_40X, 3, ) \
X(GAIN_1X_BYPASS_CSA, 4, )

Enumerates current sense amplifier gain settings.

Table — Current Sense Amplifier Gain:

NUMBER NAME DESCRIPTION
0 GAIN_5X 5x gain
1 GAIN_10X 10x gain
2 GAIN_20X 20x gain
3 GAIN_40X 40x gain
4 GAIN_1X_BYPASS_CSA 1x gain (bypass CSA)

◆ CURRENT_PI_NORMALIZATION_LIST

#define CURRENT_PI_NORMALIZATION_LIST (   X)
Value:
X(SHIFT_8_BIT, 0, ) \
X(SHIFT_16_BIT, 1, )

Normalization format for current PI controller output.

Table — Current PI Normalization Format:

NUMBER NAME DESCRIPTION
0 SHIFT_8_BIT Output shifted right by 8 bits.
1 SHIFT_16_BIT Output shifted right by 16 bits.

◆ DIRECTION_LIST

#define DIRECTION_LIST (   X)
Value:
X(NOT_INVERTED, 0, ) \
X(INVERTED, 1, )

Direction settings used by various encoder parameters.

Table — Direction Settings:

NUMBER NAME DESCRIPTION
0 NOT_INVERTED Normal direction.
1 INVERTED Inverted direction.

◆ DRIVE_FAULT_BEHAVIOUR_LIST

#define DRIVE_FAULT_BEHAVIOUR_LIST (   X)
Value:
X(OPEN_CIRCUIT, 0, ) \
X(ELECTRICAL_BRAKING, 1, ) \
X(MECHANICAL_BRAKING_AND_OPEN_CIRCUIT,2, ) \
X(MECHANICAL_AND_ELECTRICAL_BRAKING, 3, )

System state after all retries fail following a fault.

Table — Drive Fault Behaviour:

NUMBER NAME DESCRIPTION
0 OPEN_CIRCUIT Switch off and discharge LS/HS gates; motor spins freely.
1 ELECTRICAL_BRAKING Switch off and, if possible, enable LS/HS gates for electrical braking.
2 MECHANICAL_BRAKING_AND_OPEN_CIRCUIT Switch off, discharge LS/HS gates, and engage mechanical brake if configured.
3 MECHANICAL_AND_ELECTRICAL_BRAKING Switch off, enable LS/HS gates if possible, and engage mechanical brake if configured.

◆ ENABLE_DISABLE_LIST

#define ENABLE_DISABLE_LIST (   X)
Value:
X(DISABLED, 0, ) \
X(ENABLED, 1, )

Generic enable/disable settings used by various parameters.

Table — Enable/Disable Settings:

NUMBER NAME DESCRIPTION
0 DISABLED Feature disabled.
1 ENABLED Feature enabled.

◆ ERRORS_AND_FLAGS_LIST

#define ERRORS_AND_FLAGS_LIST (   X)
Value:
X(GENERAL_STATUS_FLAGS, 289, ) \
/* Temperature parameters defined in TEMPERATURE_PROTECTION_LIST */ \
X(GENERAL_ERROR_FLAGS, 299, ) \
X(GDRV_ERROR_FLAGS, 300, ) \
X(ADC_STATUS_FLAGS, 301, )

Parameters for temperature monitoring and error flags.

NUMBER NAME DESCRIPTION
289 GENERAL_STATUS_FLAGS General status flags. See GeneralStatusFlags enum. Read-only.
293 EXTERNAL_TEMPERATURE External temperature sensor reading [0-65535]. Read-only.
294 EXTERNAL_TEMPERATURE_SHUTDOWN_THRESHOLD Shutdown threshold for external temperature [0-65535]. Default: 65535.
295 EXTERNAL_TEMPERATURE_WARNING_THRESHOLD Warning threshold for external temperature [0-65535]. Default: 65535.
296 CHIP_TEMPERATURE Chip temperature reading [0-65535]. Read-only.
297 CHIP_TEMPERATURE_SHUTDOWN_THRESHOLD Shutdown threshold for chip temperature [0-65535]. Default: 65535.
298 CHIP_TEMPERATURE_WARNING_THRESHOLD Warning threshold for chip temperature [0-65535]. Default: 65535.
299 GENERAL_ERROR_FLAGS General error flags. See GeneralErrorFlags enum. Read-only.
300 GDRV_ERROR_FLAGS Gate driver error flags. See GateDriverErrorFlags enum. Read-only.
301 ADC_STATUS_FLAGS ADC status flags. See AdcStatusFlags enum. Write-to-clear.

◆ EVENT_STOP_SETTINGS_LIST

#define EVENT_STOP_SETTINGS_LIST (   X)
Value:
X(DO_HARD_STOP, 0, ) \
X(DO_SOFT_STOP, 1, ) \
X(STOP_ON_POS_DEVIATION, 2, ) \
X(STOP_ON_POS_DEVIATION_SOFT_STOP, 3, ) \
X(STOP_ON_VEL_DEVIATION, 4, ) \
X(STOP_ON_VEL_DEVIATION_SOFT_STOP, 5, ) \
X(STOP_ON_POS_VEL_DEVIATION, 6, ) \
X(STOP_ON_POS_VEL_DEVIATION_SOFT_STOP, 7, )

Bitwise configuration for stop conditions.

Table — Event Stop Settings:

NUMBER NAME DESCRIPTION
0 DO_HARD_STOP Hard stop on event.
1 DO_SOFT_STOP Soft stop (ramp down) on event.
2 STOP_ON_POS_DEVIATION Stop on position deviation.
3 STOP_ON_POS_DEVIATION_SOFT_STOP Stop on position deviation, soft stop.
4 STOP_ON_VEL_DEVIATION Stop on velocity deviation.
5 STOP_ON_VEL_DEVIATION_SOFT_STOP Stop on velocity deviation, soft stop.
6 STOP_ON_POS_VEL_DEVIATION Stop on position or velocity deviation.
7 STOP_ON_POS_VEL_DEVIATION_SOFT_STOP Stop on position or velocity deviation, soft stop.

◆ FAULT_HANDLING_LIST

#define FAULT_HANDLING_LIST (   X)
Value:
X(GDRV_RETRY_BEHAVIOUR, 286, ) \
X(DRIVE_FAULT_BEHAVIOUR, 287, ) \
X(FAULT_HANDLER_NUMBER_OF_RETRIES, 288, )

Parameters for configuring system behavior on fault conditions.

The TMC9660 supports advanced fault handling for overtemperature, I²T, and gate driver faults. The system can be configured to react with open-circuit, electrical braking, and/or mechanical braking. For gate driver faults, a retry mechanism is available. The number of retries and retry behavior are configurable. If all retries fail, the standard drive fault behavior is applied.

Table — Fault Handling Parameters:

NUMBER NAME DESCRIPTION
286 GDRV_RETRY_BEHAVIOUR State after a gate driver fault. See GdrvRetryBehaviour. Default: 0 (OPEN_CIRCUIT). RWE
287 DRIVE_FAULT_BEHAVIOUR State after all retries fail. See DriveFaultBehaviour. Default: 0 (OPEN_CIRCUIT). RWE
288 FAULT_HANDLER_NUMBER_OF_RETRIES Max number of retries per detected fault [0...255]. Default: 5. RWE

◆ FEEDBACK_SENSOR_CONFIG_LIST

#define FEEDBACK_SENSOR_CONFIG_LIST (   X)

Parameters for configuring feedback sensors (ABN, Hall, SPI encoders).

Table — Feedback Sensor Configuration Parameters:

NUMBER NAME DESCRIPTION
89 ABN_1_PHI_E Phi_e calculated from ABN feedback [-32768, 32767]. Read-only.
90 ABN_1_STEPS ABN encoder steps per rotation (CPR) [0, 16777215]. Default: 65536.
91 ABN_1_DIRECTION ABN encoder rotation direction. 0: NOT_INVERTED, 1: INVERTED. Default: 0.
92 ABN_1_INIT_METHOD ABN initialization method. See AbnInitMethod enum. Default: 0.
93 ABN_1_INIT_STATE ABN initialization state. See AbnInitState enum. Read-only.
94 ABN_1_INIT_DELAY Delay for forced phi_e initialization [1000, 10000 ms]. Default: 1000.
95 ABN_1_INIT_VELOCITY Init velocity for N-channel offset [-200000, 200000]. Default: 5.
96 ABN_1_N_CHANNEL_PHI_E_OFFSET Offset between phi_e zero and ABN index pulse [-32768, 32767]. Default: 0.
97 ABN_1_N_CHANNEL_INVERTED ABN N-channel inversion. 0: ACTIVE_HIGH, 1: ACTIVE_LOW. Default: 0.
98 ABN_1_N_CHANNEL_FILTERING ABN N-channel filtering. See AbnNChannelFiltering enum. Default: 0.
99 ABN_1_CLEAR_ON_NEXT_NULL Clear position on next N-channel event. 0: DISABLED, 1: ENABLED. Default: 0.
100 ABN_1_VALUE Raw ABN encoder counter value [0, 16777215]. Read-only.
74 HALL_PHI_E Phi_e calculated from Hall feedback [-32768, 32767]. Read-only.
75 HALL_SECTOR_OFFSET Hall sector offset. See HallSectorOffset enum. Default: 0.
76 HALL_FILTER_LENGTH Hall signal filter length [0, 255]. Default: 0.
77 HALL_POSITION_0_OFFSET Hall offset for 0-degree position [-32768, 32767]. Default: 0.
78 HALL_POSITION_60_OFFSET Hall offset for 60-degree position [-32768, 32767]. Default: 10922.
79 HALL_POSITION_120_OFFSET Hall offset for 120-degree position [-32768, 32767]. Default: 21845.
80 HALL_POSITION_180_OFFSET Hall offset for 180-degree position [-32768, 32767]. Default: -32768.
81 HALL_POSITION_240_OFFSET Hall offset for 240-degree position [-32768, 32767]. Default: -21846.
82 HALL_POSITION_300_OFFSET Hall offset for 300-degree position [-32768, 32767]. Default: -10923.
83 HALL_INVERT_DIRECTION Invert Hall angle direction. 0: NOT_INVERTED, 1: INVERTED. Default: 0.
84 HALL_EXTRAPOLATION_ENABLE Enable Hall extrapolation. 0: DISABLED, 1: ENABLED. Default: 0.
85 HALL_PHI_E_OFFSET Hall sensor mounting tolerance compensation [-32768, 32767]. Default: 0.
181 SPI_ENCODER_CS_SETTLE_DELAY_TIME CS settle delay time [0, 6375 ns]. Default: 0.
182 SPI_ENCODER_CS_IDLE_DELAY_TIME CS idle delay time between frames [0, 102 us]. Default: 0.
183 SPI_ENCODER_MAIN_TRANSFER_CMD_SIZE Size of first SPI transfer frame [1, 16]. Default: 1.
184 SPI_ENCODER_SECONDARY_TRANSFER_CMD_SIZE Size of optional secondary SPI transfer [0, 15]. Default: 0.
185 SPI_ENCODER_TRANSFER_DATA_3_0 Transmit data and read received data (bytes 0-3). Default: 0.
186 SPI_ENCODER_TRANSFER_DATA_7_4 Transmit data and read received data (bytes 4-7). Default: 0.
187 SPI_ENCODER_TRANSFER_DATA_11_8 Transmit data and read received data (bytes 8-11). Default: 0.
188 SPI_ENCODER_TRANSFER_DATA_15_12 Transmit data and read received data (bytes 12-15). Default: 0.
189 SPI_ENCODER_TRANSFER SPI interface control. See SpiEncoderTransfer enum. Default: 0.
190 SPI_ENCODER_POSITION_COUNTER_MASK Mask to extract position from received data [0, 4294967295]. Default: 0.
191 SPI_ENCODER_POSITION_COUNTER_SHIFT Right bit shift for position value before mask [0, 127]. Default: 0.
192 SPI_ENCODER_POSITION_COUNTER_VALUE Actual SPI encoder position value [0, 4294967295]. Read-only.
193 SPI_ENCODER_COMMUTATION_ANGLE Actual absolute encoder angle value [-32768, 32767]. Read-only.
194 SPI_ENCODER_INITIALIZATION_METHOD Encoder initialization method. See SpiInitMethod enum. Default: 0.
195 SPI_ENCODER_DIRECTION SPI encoder direction. 0: NOT_INVERTED, 1: INVERTED. Default: 0.
196 SPI_ENCODER_OFFSET Internal commutation offset [0, 4294967295]. Default: 0.
197 SPI_LUT_CORRECTION_ENABLE Enable lookup table correction. 0: DISABLED, 1: ENABLED. Default: 0.
198 SPI_LUT_ADDRESS_SELECT Address to read/write in lookup table [0, 255]. Default: 0.
199 SPI_LUT_DATA Data to read/write to lookup table address [-128, 127]. Default: 0.
201 SPI_LUT_COMMON_SHIFT_FACTOR LUT entries are multiplied with 2^SHIFT_FACTOR [-128, 127]. Default: 0.
174 ABN_2_STEPS ABN 2 encoder steps per rotation (CPR) [0, 16777215]. Default: 1024.
175 ABN_2_DIRECTION ABN 2 encoder rotation direction. 0: NORMAL, 1: INVERTED. Default: 0.
176 ABN_2_GEAR_RATIO ABN 2 encoder gear ratio [1, 255]. Default: 1.
177 ABN_2_ENABLE Enable ABN 2 encoder. 0: DISABLED, 1: ENABLED. Default: 0.
178 ABN_2_VALUE Raw ABN 2 encoder counter value [0, 4294967295]. Read-only.

◆ FLAG

#define FLAG (   bit)    (1u << (bit)) /** Bit flag macro */

◆ GATE_CURRENT_SINK_LIST

#define GATE_CURRENT_SINK_LIST (   X)
Value:
X(CUR_50_MA, 0, ) \
X(CUR_100_MA, 1, ) \
X(CUR_160_MA, 2, ) \
X(CUR_210_MA, 3, ) \
X(CUR_270_MA, 4, ) \
X(CUR_320_MA, 5, ) \
X(CUR_380_MA, 6, ) \
X(CUR_430_MA, 7, ) \
X(CUR_580_MA, 8, ) \
X(CUR_720_MA, 9, ) \
X(CUR_860_MA, 10, ) \
X(CUR_1000_MA, 11, ) \
X(CUR_1250_MA, 12, ) \
X(CUR_1510_MA, 13, ) \
X(CUR_1770_MA, 14, ) \
X(CUR_2000_MA, 15, )

Enumerates possible values for UVW_SINK_CURRENT and Y2_SINK_CURRENT (50–2000mA).

Table — Gate Current Sink:

NUMBER NAME DESCRIPTION
0 CUR_50_MA 50 mA
1 CUR_100_MA 100 mA
2 CUR_160_MA 160 mA
3 CUR_210_MA 210 mA
4 CUR_270_MA 270 mA
5 CUR_320_MA 320 mA
6 CUR_380_MA 380 mA
7 CUR_430_MA 430 mA
8 CUR_580_MA 580 mA
9 CUR_720_MA 720 mA
10 CUR_860_MA 860 mA
11 CUR_1000_MA 1000 mA
12 CUR_1250_MA 1250 mA
13 CUR_1510_MA 1510 mA
14 CUR_1770_MA 1770 mA
15 CUR_2000_MA 2000 mA

◆ GATE_CURRENT_SOURCE_LIST

#define GATE_CURRENT_SOURCE_LIST (   X)
Value:
X(CUR_25_MA, 0, ) \
X(CUR_50_MA, 1, ) \
X(CUR_80_MA, 2, ) \
X(CUR_105_MA, 3, ) \
X(CUR_135_MA, 4, ) \
X(CUR_160_MA, 5, ) \
X(CUR_190_MA, 6, ) \
X(CUR_215_MA, 7, ) \
X(CUR_290_MA, 8, ) \
X(CUR_360_MA, 9, ) \
X(CUR_430_MA, 10, ) \
X(CUR_500_MA, 11, ) \
X(CUR_625_MA, 12, ) \
X(CUR_755_MA, 13, ) \
X(CUR_855_MA, 14, ) \
X(CUR_1000_MA, 15, )

Enumerates possible values for UVW_SOURCE_CURRENT and Y2_SOURCE_CURRENT (25–1000mA).

Table — Gate Current Source:

NUMBER NAME DESCRIPTION
0 CUR_25_MA 25 mA
1 CUR_50_MA 50 mA
2 CUR_80_MA 80 mA
3 CUR_105_MA 105 mA
4 CUR_135_MA 135 mA
5 CUR_160_MA 160 mA
6 CUR_190_MA 190 mA
7 CUR_215_MA 215 mA
8 CUR_290_MA 290 mA
9 CUR_360_MA 360 mA
10 CUR_430_MA 430 mA
11 CUR_500_MA 500 mA
12 CUR_625_MA 625 mA
13 CUR_755_MA 755 mA
14 CUR_855_MA 855 mA
15 CUR_1000_MA 1000 mA

◆ GATE_DRIVER_ERROR_FLAGS_LIST

#define GATE_DRIVER_ERROR_FLAGS_LIST (   X)

Enumerates gate driver error flags for GDRV_ERROR_FLAGS.

NUMBER NAME DESCRIPTION
FLAG(0) U_LOW_SIDE_OVERCURRENT U low side overcurrent.
FLAG(1) V_LOW_SIDE_OVERCURRENT V low side overcurrent.
FLAG(2) W_LOW_SIDE_OVERCURRENT W low side overcurrent.
FLAG(3) Y2_LOW_SIDE_OVERCURRENT Y2 low side overcurrent.
FLAG(4) U_LOW_SIDE_DISCHARGE_SHORT U low side discharge short.
FLAG(5) V_LOW_SIDE_DISCHARGE_SHORT V low side discharge short.
FLAG(6) W_LOW_SIDE_DISCHARGE_SHORT W low side discharge short.
FLAG(7) Y2_LOW_SIDE_DISCHARGE_SHORT Y2 low side discharge short.
FLAG(8) U_LOW_SIDE_CHARGE_SHORT U low side charge short.
FLAG(9) V_LOW_SIDE_CHARGE_SHORT V low side charge short.
FLAG(10) W_LOW_SIDE_CHARGE_SHORT W low side charge short.
FLAG(11) Y2_LOW_SIDE_CHARGE_SHORT Y2 low side charge short.
FLAG(12) U_BOOTSTRAP_UNDERVOLTAGE U bootstrap undervoltage.
FLAG(13) V_BOOTSTRAP_UNDERVOLTAGE V bootstrap undervoltage.
FLAG(14) W_BOOTSTRAP_UNDERVOLTAGE W bootstrap undervoltage.
FLAG(15) Y2_BOOTSTRAP_UNDERVOLTAGE Y2 bootstrap undervoltage.
FLAG(16) U_HIGH_SIDE_OVERCURRENT U high side overcurrent.
FLAG(17) V_HIGH_SIDE_OVERCURRENT V high side overcurrent.
FLAG(18) W_HIGH_SIDE_OVERCURRENT W high side overcurrent.
FLAG(19) Y2_HIGH_SIDE_OVERCURRENT Y2 high side overcurrent.
FLAG(20) U_HIGH_SIDE_DISCHARGE_SHORT U high side discharge short.
FLAG(21) V_HIGH_SIDE_DISCHARGE_SHORT V high side discharge short.
FLAG(22) W_HIGH_SIDE_DISCHARGE_SHORT W high side discharge short.
FLAG(23) Y2_HIGH_SIDE_DISCHARGE_SHORT Y2 high side discharge short.
FLAG(24) U_HIGH_SIDE_CHARGE_SHORT U high side charge short.
FLAG(25) V_HIGH_SIDE_CHARGE_SHORT V high side charge short.
FLAG(26) W_HIGH_SIDE_CHARGE_SHORT W high side charge short.
FLAG(27) Y2_HIGH_SIDE_CHARGE_SHORT Y2 high side charge short.
FLAG(29) GDRV_UNDERVOLTAGE Gate driver undervoltage.
FLAG(30) GDRV_LOW_VOLTAGE Gate driver low voltage.
FLAG(31) GDRV_SUPPLY_UNDERVOLTAGE Gate driver supply undervoltage.

◆ GATE_DRIVER_LIST

#define GATE_DRIVER_LIST (   X)
Value:
X(PWM_L_OUTPUT_POLARITY, 233, ) \
X(PWM_H_OUTPUT_POLARITY, 234, ) \
X(BREAK_BEFORE_MAKE_TIME_LOW_UVW, 235, ) \
X(BREAK_BEFORE_MAKE_TIME_HIGH_UVW, 236, ) \
X(BREAK_BEFORE_MAKE_TIME_LOW_Y2, 237, ) \
X(BREAK_BEFORE_MAKE_TIME_HIGH_Y2, 238, ) \
X(USE_ADAPTIVE_DRIVE_TIME_UVW, 239, ) \
X(USE_ADAPTIVE_DRIVE_TIME_Y2, 240, ) \
X(DRIVE_TIME_SINK_UVW, 241, ) \
X(DRIVE_TIME_SOURCE_UVW, 242, ) \
X(DRIVE_TIME_SINK_Y2, 243, ) \
X(DRIVE_TIME_SOURCE_Y2, 244, ) \
X(UVW_SINK_CURRENT, 245, ) \
X(UVW_SOURCE_CURRENT, 246, ) \
X(Y2_SINK_CURRENT, 247, ) \
X(Y2_SOURCE_CURRENT, 248, ) \
X(BOOTSTRAP_CURRENT_LIMIT, 249, )

Parameters for gate driver timer and current settings (Table 20).

These parameters configure the MOSFET gate driver for the TMC9660, including output polarity, break-before-make timing, adaptive drive time, drive times, current limits, and bootstrap current limit.

Table 20 — Gate driver timer and current settings:

NR PARAMETER DESCRIPTION
233 PWM_L_OUTPUT_POLARITY PWM_L output polarity. 0: ACTIVE_HIGH, 1: ACTIVE_LOW
234 PWM_H_OUTPUT_POLARITY PWM_H output polarity. 0: ACTIVE_HIGH, 1: ACTIVE_LOW
235 BREAK_BEFORE_MAKE_TIME_LOW_UVW Break-before-make time for low side UVW [8.33ns units] 0...255
236 BREAK_BEFORE_MAKE_TIME_HIGH_UVW Break-before-make time for high side UVW [8.33ns units] 0...255
237 BREAK_BEFORE_MAKE_TIME_LOW_Y2 Break-before-make time for low side Y2 [8.33ns units] 0...255
238 BREAK_BEFORE_MAKE_TIME_HIGH_Y2 Break-before-make time for high side Y2 [8.33ns units] 0...255
239 USE_ADAPTIVE_DRIVE_TIME_UVW Adaptive drive time UVW. 0: DISABLED, 1: ENABLED
240 USE_ADAPTIVE_DRIVE_TIME_Y2 Adaptive drive time Y2. 0: DISABLED, 1: ENABLED
241 DRIVE_TIME_SINK_UVW Discharge time UVW [0...255] (1s/120MHz) × (2×value+3)
242 DRIVE_TIME_SOURCE_UVW Charge time UVW [0...255] (1s/120MHz) × (2×value+3)
243 DRIVE_TIME_SINK_Y2 Discharge time Y2 [0...255] (1s/120MHz) × (2×value+3)
244 DRIVE_TIME_SOURCE_Y2 Charge time Y2 [0...255] (1s/120MHz) × (2×value+3)
245 UVW_SINK_CURRENT See tmc9660::tmcl::GateCurrentSink
246 UVW_SOURCE_CURRENT See tmc9660::tmcl::GateCurrentSource
247 Y2_SINK_CURRENT See tmc9660::tmcl::GateCurrentSink
248 Y2_SOURCE_CURRENT See tmc9660::tmcl::GateCurrentSource
249 BOOTSTRAP_CURRENT_LIMIT See tmc9660::tmcl::BootstrapCurrentLimit

◆ GDRV_RETRY_BEHAVIOUR_LIST

#define GDRV_RETRY_BEHAVIOUR_LIST (   X)
Value:
X(OPEN_CIRCUIT, 0, ) \
X(ELECTRICAL_BRAKING, 1, )

System state after a gate driver fault occurs.

Table — Gate Driver Retry Behaviour:

NUMBER NAME DESCRIPTION
0 OPEN_CIRCUIT Switch off and discharge gates; motor spins freely.
1 ELECTRICAL_BRAKING Switch off and, if possible, enable LS or HS gates for electrical braking.

◆ GENERAL_ERROR_FLAGS_LIST

#define GENERAL_ERROR_FLAGS_LIST (   X)
Value:
X(CONFIG_ERROR, FLAG(0), ) \
X(TMCL_SCRIPT_ERROR, FLAG(1), ) \
X(HOMESWITCH_NOT_FOUND, FLAG(2), ) \
X(HALL_ERROR, FLAG(5), ) \
X(WATCHDOG_EVENT, FLAG(9), ) \
X(EXT_TEMP_EXCEEDED, FLAG(13), ) \
X(CHIP_TEMP_EXCEEDED, FLAG(14), ) \
X(I2T_1_EXCEEDED, FLAG(16), ) \
X(I2T_2_EXCEEDED, FLAG(17), ) \
X(EXT_TEMP_WARNING, FLAG(18), ) \
X(SUPPLY_OVERVOLTAGE_WARNING, FLAG(19), ) \
X(SUPPLY_UNDERVOLTAGE_WARNING, FLAG(20), ) \
X(ADC_IN_OVERVOLTAGE, FLAG(21), ) \
X(FAULT_RETRY_HAPPENED, FLAG(22), ) \
X(FAULT_RETRIES_FAILED, FLAG(23), ) \
X(CHIP_TEMP_WARNING, FLAG(24), ) \
X(HEARTBEAT_STOPPED, FLAG(26), )
#define FLAG(bit)
Definition tmc9660_param_mode_tmcl.hpp:4857

Enumerates general error flags for GENERAL_ERROR_FLAGS.

These flags indicate various error conditions in the system. Most of these flags are Read-Write-Clear (RWC), meaning they can be cleared by writing a 1 to the corresponding bit position.

NUMBER NAME DESCRIPTION
FLAG(0) CONFIG_ERROR Verification of config storage failed. Read-only.
FLAG(1) TMCL_SCRIPT_ERROR TMCL Script not available. Read-only.
FLAG(2) HOMESWITCH_NOT_FOUND Reference search for home switch failed. Read-only.
FLAG(5) HALL_ERROR Signals an invalid hall state. Read-write-clear.
FLAG(9) WATCHDOG_EVENT Watchdog reset indication. Read-write-clear.
FLAG(13) EXT_TEMP_EXCEEDED External temperature exceeded. Read-write-clear.
FLAG(14) CHIP_TEMP_EXCEEDED Chip temperature threshold exceeded. Read-write-clear.
FLAG(16) I2T_1_EXCEEDED Signals that I²t limit 1 was exceeded. Read-write-clear.
FLAG(17) I2T_2_EXCEEDED Signals that I²t limit 2 was exceeded. Read-write-clear.
FLAG(18) EXT_TEMP_WARNING External temperature warning threshold exceeded. Read-write-clear.
FLAG(19) SUPPLY_OVERVOLTAGE_WARNING Supply overvoltage warning threshold exceeded. Read-write-clear.
FLAG(20) SUPPLY_UNDERVOLTAGE_WARNING Supply voltage below undervoltage warning threshold. Read-write-clear.
FLAG(21) ADC_IN_OVERVOLTAGE ADC IN over 2V while ADC enabled. Read-write-clear.
FLAG(22) FAULT_RETRY_HAPPENED The set number of max. retries was exceeded without recovering. Read-write-clear.
FLAG(23) FAULT_RETRIES_FAILED All retries of a detected fault failed. Read-write-clear.
FLAG(24) CHIP_TEMP_WARNING Chip temperature warning threshold exceeded. Read-write-clear.
FLAG(26) HEARTBEAT_STOPPED Heartbeat stopped. Read-write-clear.

◆ GENERAL_STATUS_FLAGS_LIST

#define GENERAL_STATUS_FLAGS_LIST (   X)

General status flags indicating system state, events, and hardware availability.

This 32-bit status register contains flags that provide information about the current system state, regulation modes, configuration status, hardware events, and available peripherals.

Most flags are read-only (R), while some can be read, written, and cleared (RWC). Flags marked as RWC can be cleared by writing a 1 to the corresponding bit.

NUMBER NAME DESCRIPTION
FLAG(0) REGULATION_STOPPED System does not regulate motion. Read-only.
FLAG(1) REGULATION_TORQUE System is regulating mode torque. Read-only.
FLAG(2) REGULATION_VELOCITY System is regulating mode velocity. Read-only.
FLAG(3) REGULATION_POSITION System is regulating mode position. Read-only.
FLAG(4) CONFIG_STORED Config was stored successfully. Read-write-clear.
FLAG(5) CONFIG_LOADED Config was loaded successfully. Read-write-clear.
FLAG(6) CONFIG_READ_ONLY Memory for config is read only. Read-only.
FLAG(7) TMCL_SCRIPT_READ_ONLY Memory for TMCL script is read only. Read-only.
FLAG(8) BRAKE_CHOPPER_ACTIVE Brake chopper is active. Read-only.
FLAG(9) POSITION_REACHED Actual velocity and target velocity are below POSITION_REACHED_THRESHOLD. Read-only.
FLAG(10) VELOCITY_REACHED Actual velocity and target velocity are below VELOCITY_REACHED_THRESHOLD. Read-only.
FLAG(11) ADC_OFFSET_CALIBRATED The ADC offset was calibrated automatically (clear to recalibrate). Read-write-clear.
FLAG(12) RAMPER_LATCHED The ramper latched a position. Read-write-clear.
FLAG(13) RAMPER_EVENT_STOP_SWITCH Ramper had a switch stop event. Read-only.
FLAG(14) RAMPER_EVENT_STOP_DEVIATION Ramper had a deviation stop event. Read-write-clear.
FLAG(15) RAMPER_VELOCITY_REACHED The ramper reached its velocity target. Read-only.
FLAG(16) RAMPER_POSITION_REACHED The ramper reached its position target. Read-only.
FLAG(17) RAMPER_SECOND_MOVE The ramper needed a second move to reach target. Read-write-clear.
FLAG(18) IIT_1_ACTIVE IIT 1 active. Read-only.
FLAG(19) IIT_2_ACTIVE IIT 2 active. Read-only.
FLAG(20) REFSEARCH_FINISHED Reference search finished. Read-only.
FLAG(21) Y2_USED_FOR_BRAKING Fourth phase used for braking. Read-only.
FLAG(23) STEPDIR_INPUT_AVAILABLE Signals that StepDir is available. Read-only.
FLAG(24) RIGHT_REF_SWITCH_AVAILABLE Signals that REF_R is available. Read-only.
FLAG(25) HOME_REF_SWITCH_AVAILABLE Signals that REF_H is available. Read-only.
FLAG(26) LEFT_REF_SWITCH_AVAILABLE Signals that REF_L is available. Read-only.
FLAG(27) ABN2_FEEDBACK_AVAILABLE Signals that ABN2 feedback is available. Read-only.
FLAG(28) HALL_FEEDBACK_AVAILABLE Signals that hall feedback is available. Read-only.
FLAG(29) ABN1_FEEDBACK_AVAILABLE Signals that ABN1 feedback is available. Read-only.
FLAG(30) SPI_FLASH_AVAILABLE Signals that an external SPI flash is available. Read-only.
FLAG(31) I2C_EEPROM_AVAILABLE Signals that an external I2C EEPROM is available. Read-only.

◆ GLOBAL_PARAM_BANK0_LIST

#define GLOBAL_PARAM_BANK0_LIST (   X)
Value:
X(SERIAL_ADDRESS, 1, ) \
X(SERIAL_HOST_ADDRESS, 2, ) \
X(HEARTBEAT_MONITORING_CONFIG, 3, ) \
X(HEARTBEAT_MONITORING_TIMEOUT, 4, ) \
X(IO_DIRECTION_MASK, 5, ) \
X(IO_INPUT_PULLUP_PULLDOWN_ENABLE_MASK, 6, ) \
X(IO_INPUT_PULLUP_PULLDOWN_DIRECTION_MASK, 7, ) \
X(WAKE_PIN_CONTROL_ENABLE, 10, ) \
X(GO_TO_TIMEOUT_POWER_DOWN_STATE, 11, ) \
X(MAIN_LOOPS, 12, ) \
X(TORQUE_LOOPS, 13, ) \
X(VELOCITY_LOOPS, 14, ) \
X(AUTO_START_ENABLE, 77, ) \
X(CLEAR_USER_VARIABLES, 85, )

Non-motion parameters in bank 0: communication, I/O, heartbeat, hibernation, loops, auto-start, etc.

To persist changes, use STAP after setting RWE parameters.

◆ GLOBAL_PARAM_BANK2_LIST

#define GLOBAL_PARAM_BANK2_LIST (   X)
Value:
X(USER_VARIABLE_0, 0, ) \
X(USER_VARIABLE_1, 1, ) \
X(USER_VARIABLE_2, 2, ) \
X(USER_VARIABLE_3, 3, ) \
X(USER_VARIABLE_4, 4, ) \
X(USER_VARIABLE_5, 5, ) \
X(USER_VARIABLE_6, 6, ) \
X(USER_VARIABLE_7, 7, ) \
X(USER_VARIABLE_8, 8, ) \
X(USER_VARIABLE_9, 9, ) \
X(USER_VARIABLE_10, 10, ) \
X(USER_VARIABLE_11, 11, ) \
X(USER_VARIABLE_12, 12, ) \
X(USER_VARIABLE_13, 13, ) \
X(USER_VARIABLE_14, 14, ) \
X(USER_VARIABLE_15, 15, )

User-script variables 0…15. RWE.

◆ GLOBAL_PARAM_BANK3_LIST

#define GLOBAL_PARAM_BANK3_LIST (   X)
Value:
X(TIMER_0_PERIOD, 0, ) \
X(TIMER_1_PERIOD, 1, ) \
X(TIMER_2_PERIOD, 2, ) \
X(STOP_LEFT_TRIGGER_TRANSITION, 10, ) \
X(STOP_RIGHT_TRIGGER_TRANSITION, 11, ) \
X(HOME_TRIGGER_TRANSITION, 12, ) \
X(INPUT_0_TRIGGER_TRANSITION, 13, ) \
X(INPUT_1_TRIGGER_TRANSITION, 14, ) \
X(INPUT_2_TRIGGER_TRANSITION, 15, ) \
X(INPUT_3_TRIGGER_TRANSITION, 16, ) \
X(INPUT_4_TRIGGER_TRANSITION, 17, ) \
X(INPUT_5_TRIGGER_TRANSITION, 18, ) \
X(INPUT_6_TRIGGER_TRANSITION, 19, ) \
X(INPUT_7_TRIGGER_TRANSITION, 20, ) \
X(INPUT_8_TRIGGER_TRANSITION, 21, ) \
X(INPUT_9_TRIGGER_TRANSITION, 22, ) \
X(INPUT_10_TRIGGER_TRANSITION, 23, ) \
X(INPUT_11_TRIGGER_TRANSITION, 24, ) \
X(INPUT_12_TRIGGER_TRANSITION, 25, ) \
X(INPUT_13_TRIGGER_TRANSITION, 26, ) \
X(INPUT_14_TRIGGER_TRANSITION, 27, ) \
X(INPUT_15_TRIGGER_TRANSITION, 28, ) \
X(INPUT_16_TRIGGER_TRANSITION, 29, ) \
X(INPUT_17_TRIGGER_TRANSITION, 30, ) \
X(INPUT_18_TRIGGER_TRANSITION, 31, )

Timer periods and input-trigger transitions for scripting interrupts.

◆ HALL_SECTOR_OFFSET_LIST

#define HALL_SECTOR_OFFSET_LIST (   X)
Value:
X(DEG_0, 0, ) \
X(DEG_60, 1, ) \
X(DEG_120, 2, ) \
X(DEG_180, 3, ) \
X(DEG_240, 4, ) \
X(DEG_300, 5, )

Enumerates Hall sector offsets.

Table — Hall Sector Offsets:

NUMBER NAME DESCRIPTION
0 DEG_0 0 degrees.
1 DEG_60 60 degrees.
2 DEG_120 120 degrees.
3 DEG_180 180 degrees.
4 DEG_240 240 degrees.
5 DEG_300 300 degrees.

◆ HEARTBEAT_MONITORING_CONFIG_LIST

#define HEARTBEAT_MONITORING_CONFIG_LIST (   X)
Value:
X(DISABLED, 0, ) \
X(TMCL_UART_INTERFACE, 1, ) \
X(SPI_INTERFACE, 2, ) \
X(TMCL_UART_AND_SPI_INTERFACE, 3, )

Enumerates heartbeat monitoring interface selection.

Table — Heartbeat Monitoring Config:

NUMBER NAME DESCRIPTION
0 DISABLED Heartbeat monitoring disabled.
1 TMCL_UART_INTERFACE Monitor TMCL UART interface.
2 SPI_INTERFACE Monitor SPI interface.
3 TMCL_UART_AND_SPI_INTERFACE Monitor both UART and SPI.

◆ HEARTBEAT_MONITORING_LIST

#define HEARTBEAT_MONITORING_LIST (   X)
Value:
X(HEARTBEAT_MONITORING_CONFIG, 3, ) \
X(HEARTBEAT_MONITORING_TIMEOUT, 4, )

Parameters for configuring heartbeat monitoring.

The heartbeat monitor checks for regular communication on UART and/or SPI. If no datagram is received within the configured timeout, the system initiates a motor shutdown (behavior defined by DRIVE_FAULT_BEHAVIOUR). The status flag HEARTBEAT_STOPPED is raised.

Table — Heartbeat Monitoring Parameters:

NUMBER NAME DESCRIPTION
3 HEARTBEAT_MONITORING_CONFIG Heartbeat monitoring config. 0: DISABLED, 1: UART, 2: SPI, 3: UART+SPI.
4 HEARTBEAT_MONITORING_TIMEOUT Heartbeat timeout in ms [1...4294967295]. Default: 100.

◆ HIBERNATION_WAKEUP_LIST

#define HIBERNATION_WAKEUP_LIST (   X)
Value:
X(WAKE_PIN_CONTROL_ENABLE, 10, ) \
X(GO_TO_TIMEOUT_POWER_DOWN_STATE, 11, )

Parameters for configuring hibernation (low-power) and wakeup behavior.

The TMC9660 can be sent to a low-power hibernation state using WAKE_PIN_CONTROL_ENABLE or GO_TO_TIMEOUT_POWER_DOWN_STATE.

  • WAKE_PIN_CONTROL_ENABLE enables the WAKE pin for entering/exiting power-down state.
  • GO_TO_TIMEOUT_POWER_DOWN_STATE puts the device into hibernation for a predefined time. If the WAKE pin is configured, pulling it low powers down the device; pulling it high wakes it up.

Table — Hibernation and Wakeup Parameters:

NUMBER NAME DESCRIPTION
10 WAKE_PIN_CONTROL_ENABLE Enable WAKE pin control. 0: DISABLED, 1: ENABLED. Default: 0. RWE
11 GO_TO_TIMEOUT_POWER_DOWN_STATE Enter power-down for a predefined time. See PowerDownTimeout. Default: 0. W

◆ IDLE_MOTOR_PWM_BEHAVIOR_LIST

#define IDLE_MOTOR_PWM_BEHAVIOR_LIST (   X)
Value:
X(PWM_ON_WHEN_MOTOR_IDLE, 0, ) \
X(PWM_OFF_WHEN_MOTOR_IDLE, 1, )

PWM behavior in commutation mode "System Off" (Parameter ID: 9).

Table — Idle Motor PWM Behavior:

NUMBER NAME DESCRIPTION
0 PWM_ON_WHEN_MOTOR_IDLE PWM stays on when motor is idle (all phases same voltage).
1 PWM_OFF_WHEN_MOTOR_IDLE PWM off (high-Z, motor floating) [default].

◆ IIT_MONITOR_LIST

#define IIT_MONITOR_LIST (   X)
Value:
X(THERMAL_WINDING_TIME_CONSTANT_1, 224, ) \
X(IIT_LIMIT_1, 225, ) \
X(IIT_SUM_1, 226, ) \
X(THERMAL_WINDING_TIME_CONSTANT_2, 227, ) \
X(IIT_LIMIT_2, 228, ) \
X(IIT_SUM_2, 229, ) \
X(RESET_IIT_SUMS, 230, ) \
X(ACTUAL_TOTAL_MOTOR_CURRENT, 231, )

Parameters for configuring IIT (I²t) monitoring and protection.

The IIT monitor protects against overtemperature in sustained load conditions by monitoring the total current flowing into the motor (torque and flux). Two independent IIT monitoring windows are supported, each with its own time constant and limit. If the squared current sum exceeds the limit, an emergency stop is triggered. The behavior is defined by DRIVE_FAULT_BEHAVIOUR. Status flags indicate active protection and limit exceeded.

  • The total motor current is available via ACTUAL_TOTAL_MOTOR_CURRENT.
  • Each window accumulates squared current over a time set by THERMAL_WINDING_TIME_CONSTANT_1/2.
  • The sum for each window is available via IIT_SUM_1/2.
  • Limits are set by IIT_LIMIT_1/2. If not set to max, protection is active.
  • If the sum exceeds the limit, the corresponding IIT_EXCEEDED flag is set and the motor is stopped.
  • Both sums can be reset with RESET_IIT_SUMS.
  • The update rate depends on MOTOR_PWM_FREQUENCY.

Table — IIT Monitor Parameters:

NUMBER NAME DESCRIPTION
224 THERMAL_WINDING_TIME_CONSTANT_1 Time constant for IIT window 1 [ms]. Default: 3000.
225 IIT_LIMIT_1 IIT limit for window 1 [A^2 x ms]. Default: 4294967295.
226 IIT_SUM_1 Actual IIT sum for window 1 [A^2 x ms]. Default: 0.
227 THERMAL_WINDING_TIME_CONSTANT_2 Time constant for IIT window 2 [ms]. Default: 6000.
228 IIT_LIMIT_2 IIT limit for window 2 [A^2 x ms]. Default: 4294967295.
229 IIT_SUM_2 Actual IIT sum for window 2 [A^2 x ms]. Default: 0.
230 RESET_IIT_SUMS Write to reset both IIT sums. Default: 0.
231 ACTUAL_TOTAL_MOTOR_CURRENT Total current through motor windings [mA]. Default: 0.

◆ INTERNAL_MEASUREMENT_LIST

#define INTERNAL_MEASUREMENT_LIST (   X)
Value:
X(MCC_INPUTS_RAW, 304, ) \
X(FOC_VOLTAGE_UX, 305, ) \
X(FOC_VOLTAGE_WY, 306, ) \
X(FOC_VOLTAGE_V, 307, ) \
/* FIELDWEAKENING_I and FIELDWEAKENING_VOLTAGE_THRESHOLD defined in TORQUE_FLUX_CONTROL_LIST */ \
X(FOC_CURRENT_UX, 311, ) \
X(FOC_CURRENT_V, 312, ) \
X(FOC_CURRENT_WY, 313, ) \
X(FOC_VOLTAGE_UQ, 314, ) \
X(FOC_CURRENT_IQ, 315, )

Raw diagnostic values and FOC internal measurements.

These parameters provide access to interim results and measurements from the Field-Oriented Control (FOC) algorithm, as well as raw input states. They are useful for debugging and diagnostics.

NUMBER NAME DESCRIPTION
304 MCC_INPUTS_RAW Raw inputs for ABN, hall, reference switches, driver enabled, hall filtered and ABN2 or Step/Dir [0...32767]. Read-only.
305 FOC_VOLTAGE_UX Interim result of the FOC for phase U (X in case of stepper motor) [-32768...32767]. Read-only.
306 FOC_VOLTAGE_WY Interim result of the FOC for phase W (Y in case of stepper motor) [-32768...32767]. Read-only.
307 FOC_VOLTAGE_V Interim result of the FOC for phase V (BLDC motor only) [-32768...32767]. Read-only.
308 FIELDWEAKENING_I I parameter for field weakening controller [0...32767]. Default: 0. RWE
310 FIELDWEAKENING_VOLTAGE_THRESHOLD Maximum motor voltage allowed for field weakening [0...32767]. Default: 32767. RWE
311 FOC_CURRENT_UX Interim measurement of the FOC for phase UX [-32768...32767]. Read-only.
312 FOC_CURRENT_V Interim measurement of the FOC for phase V [-32768...32767]. Read-only.
313 FOC_CURRENT_WY Interim measurement of the FOC for phase WY [-32768...32767]. Read-only.
314 FOC_VOLTAGE_UQ Interim measurement of the FOC for Uq [-32768...32767]. Read-only.
315 FOC_CURRENT_IQ Interim measurement of the FOC for Iq [-32768...32767]. Read-only.

◆ JUMP_CONDITION_LIST

#define JUMP_CONDITION_LIST (   X)
Value:
X(JC_ZERO, 0, ) \
X(JC_NOT_ZERO, 1, ) \
X(JC_EQUAL, 2, ) \
X(JC_NOT_EQUAL, 3, ) \
X(JC_GREATER, 4, ) \
X(JC_GREATER_EQ, 5, ) \
X(JC_LOWER, 6, ) \
X(JC_LOWER_EQ, 7, ) \
X(JC_TIMEOUT, 8, )

◆ MECHANICAL_BRAKE_LIST

#define MECHANICAL_BRAKE_LIST (   X)
Value:
X(RELEASE_BRAKE, 216, ) \
X(BRAKE_RELEASING_DUTY_CYCLE, 217, ) \
X(BRAKE_HOLDING_DUTY_CYCLE, 218, ) \
X(BRAKE_RELEASING_DURATION, 219, ) \
X(INVERT_BRAKE_OUTPUT, 221, )

Parameters for controlling an external mechanical brake.

The mechanical brake is controlled by a PWM output. Release is triggered by setting RELEASE_BRAKE.

  • BRAKE_RELEASING_DUTY_CYCLE: PWM duty cycle during release phase [%].
  • BRAKE_HOLDING_DUTY_CYCLE: PWM duty cycle during holding phase [%].
  • BRAKE_RELEASING_DURATION: Duration of release phase [ms].
  • INVERT_BRAKE_OUTPUT: Invert brake output polarity (0: NORMAL, 1: INVERTED).

Table — Mechanical Brake Parameters:

NUMBER NAME DESCRIPTION
216 RELEASE_BRAKE Release brake (apply PWM). 0: DEACTIVATED, 1: ACTIVATED. Default: 0.
217 BRAKE_RELEASING_DUTY_CYCLE Duty cycle [%] for releasing phase. 0...99. Default: 75.
218 BRAKE_HOLDING_DUTY_CYCLE Duty cycle [%] for holding phase. 0...99. Default: 11.
219 BRAKE_RELEASING_DURATION Duration [ms] for releasing phase. 0...65535. Default: 80.
221 INVERT_BRAKE_OUTPUT Invert brake output. 0: NORMAL, 1: INVERTED. Default: 0.

◆ MOTOR_CONFIG_LIST

#define MOTOR_CONFIG_LIST (   X)
Value:
X(MOTOR_TYPE, 0, ) \
X(MOTOR_POLE_PAIRS, 1, ) \
X(MOTOR_DIRECTION, 2, ) \
X(MOTOR_PWM_FREQUENCY, 3, ) \
X(COMMUTATION_MODE, 4, ) \
X(OUTPUT_VOLTAGE_LIMIT, 5, ) \
X(PWM_SWITCHING_SCHEME, 8, ) \
X(IDLE_MOTOR_PWM_BEHAVIOR, 9, )

Parameters for configuring motor characteristics and drive settings.

Table — Motor Configuration Parameters:

NUMBER NAME DESCRIPTION
0 MOTOR_TYPE Motor type selection. See MotorType enum. Default: 0 (NO_MOTOR). RWE
1 MOTOR_POLE_PAIRS Number of pole pairs for motor [0-127]. Default: 1. RWE
2 MOTOR_DIRECTION Motor direction. 0: NOT_INVERTED, 1: INVERTED. Default: 0. RWE
3 MOTOR_PWM_FREQUENCY PWM frequency in Hz [10000-100000]. Default: 25000. RWE
4 COMMUTATION_MODE Motor commutation mode. See CommutationMode enum. Default: 0 (SYSTEM_OFF). RW
5 OUTPUT_VOLTAGE_LIMIT PID UQ/UD output limit for circular limiter [0-32767]. Default: 8000. RWE
8 PWM_SWITCHING_SCHEME PWM switching scheme. See PwmSwitchingScheme enum. Default: 1 (SVPWM). RWE

◆ MOTOR_DIRECTION_LIST

#define MOTOR_DIRECTION_LIST (   X)
Value:
X(FORWARD, 0, ) \
X(REVERSE, 1, )

Enumerates motor rotation directions.

Table — Motor Direction:

NUMBER NAME DESCRIPTION
0 FORWARD Forward rotation
1 REVERSE Reverse rotation

◆ MOTOR_TYPE_LIST

#define MOTOR_TYPE_LIST (   X)
Value:
X(NO_MOTOR, 0, ) \
X(DC_MOTOR, 1, ) \
X(STEPPER_MOTOR, 2, ) \
X(BLDC_MOTOR, 3, )

Enumerates supported motor types.

Table — Motor Types:

NUMBER NAME DESCRIPTION
0 NO_MOTOR No motor selected
1 DC_MOTOR DC motor
2 STEPPER_MOTOR Stepper motor
3 BLDC_MOTOR Brushless DC motor

◆ OP_LIST

#define OP_LIST (   X)

Operation codes accepted by the TMC9660 Parameter Mode (Table 18).

Table 18 — TMCL commands:

NUMBER OPERATION TYPE MOTOR/BANK VALUE DESCRIPTION
3 MST - - - Stops motor movement
5 SAP parameter 0 value Sets axis parameter (motion control specific settings)
6 GAP parameter 0 - Gets axis parameter (read out motion control specific settings)
7 STAP 0xFFF 0xF 0xFFFFFFFF Stores all storable parameters to external memory
9 SGP parameter 0,2,3 value Sets global parameter (module/user settings)
10 GGP parameter - - Gets global parameter (module/user settings)

13 | RFS | START|STOP|STATUS | 0 | - | Reference search 14 | SIO | port number | 0 | 0,1 | Sets digital output to specified value 15 | GIO | port number | 0: digital, 1: ana | - | Gets value of analog/digital input 19 | CALC | operation | - | value | Arithmetic operation (accumulator and value) 20 | COMP | - | - | value | Compares accumulator with value 21 | JC | condition | - | address | Jump conditional 22 | JA | - | - | address | Jump absolute 23 | CSUB | - | - | address | Calls subroutine 24 | RSUB | - | - | - | Returns from subroutine 25 | EI | - | - | interrupt number | Enables interrupt 26 | DI | - | - | interrupt number | Disables interrupt 27 | WAIT | condition | - | ticks | Waits with further program execution 28 | STOP | - | - | - | Stops program execution 33 | CALCX | type | - | - | Arithmetic operation (accumulator and X-register) 34 | AAP | parameter | 0 | - | Accumulator to axis parameter 35 | AGP | parameter | 0,2,3 | - | Accumulator to global parameter 36 | CLE | flag | - | - | Clears an error flag 37 | VECT | interrupt number | - | address | Defines interrupt vector 38 | RETI | - | - | - | Returns from interrupt 40 | CALCVV | type | user var 1 | user var 2 | Arithmetic: user variable and user variable 41 | CALCVA | type | user variable | - | Arithmetic: user variable and accumulator 42 | CALCAV | type | user variable | - | Arithmetic: accumulator and user variable 43 | CALCVX | type | user variable | - | Arithmetic: user variable and X register 44 | CALCXV | type | user variable | - | Arithmetic: X register and user variable 45 | CALCV | type | - | value | Arithmetic: user variable and direct value 48 | RST | - | - | address | Restarts the program from the given address 49 | DJNZ | user variable | - | address | Decrement and jump if not zero 55 | SIV | - | - | value | Sets indexed variable 56 | GIV | - | - | - | Gets indexed variable 57 | AIV | - | - | - | Accumulator to indexed variable 128 | ApplStop | - | - | - | Stops a running TMCL program 129 | ApplRun | 0: current, 1: addr| - | address | Starts/continues TMCL program 130 | ApplStep | - | - | - | Executes only the next TMCL command 131 | ApplReset | - | - | - | Stops and resets program counter 132 | DownloadStart | - | - | - | Enter download mode (store script) 133 | DownloadEnd | - | - | - | End download mode 134 | ReadMem | - | - | address | Returns script command at address 135 | GetStatusScript | - | - | - | Gets status of script 136 | GetVersion | - | - | - | Gets version of system 137 | FactoryDefault | - | - | - | Clears settings stored in external memory 141 | Breakpoint | 0:add,1:del,2:all,3:max| - | address | Manage breakpoints 142 | RamDebug | see Table 16 | see Table 16 | see Table 16 | Access to RAMDebug control 157 | GetInfo | 0:ID, 1:Version | - | - | Gets ID and version info 242 | Boot | 0x81 | 0x92 | 0xA3B4C5D6 | Returns the system to the bootloader

Each command lists the TYPE, MOTOR/BANK, and VALUE fields as per Table 18. For scripting-related commands, see the manual for further details.

◆ OVERCURRENT_ENABLE_LIST

#define OVERCURRENT_ENABLE_LIST (   X)
Value:
X(DISABLED, 0, ) \
X(ENABLED, 1, )

Enumerates options for enabling or disabling overcurrent protection.

Table — Overcurrent Protection Enable/Disable:

NUMBER NAME DESCRIPTION
0 DISABLED Protection disabled.
1 ENABLED Protection enabled.

◆ OVERCURRENT_PROTECTION_LIST

#define OVERCURRENT_PROTECTION_LIST (   X)
Value:
X(UVW_LOW_SIDE_ENABLE, 254, ) \
X(UVW_HIGH_SIDE_ENABLE, 255, ) \
X(Y2_LOW_SIDE_ENABLE, 256, ) \
X(Y2_HIGH_SIDE_ENABLE, 257, ) \
X(UVW_LOW_SIDE_THRESHOLD, 258, ) \
X(UVW_HIGH_SIDE_THRESHOLD, 259, ) \
X(Y2_LOW_SIDE_THRESHOLD, 260, ) \
X(Y2_HIGH_SIDE_THRESHOLD, 261, ) \
X(UVW_LOW_SIDE_BLANKING, 262, ) \
X(UVW_HIGH_SIDE_BLANKING, 263, ) \
X(Y2_LOW_SIDE_BLANKING, 264, ) \
X(Y2_HIGH_SIDE_BLANKING, 265, ) \
X(UVW_LOW_SIDE_DEGLITCH, 266, ) \
X(UVW_HIGH_SIDE_DEGLITCH, 267, ) \
X(Y2_LOW_SIDE_DEGLITCH, 268, ) \
X(Y2_HIGH_SIDE_DEGLITCH, 269, ) \
X(UVW_LOW_SIDE_USE_VDS, 270, ) \
X(Y2_LOW_SIDE_USE_VDS, 271, )

Parameters for configuring gate driver overcurrent protection.

These parameters configure the overcurrent protection thresholds, blanking times, deglitch times, and enable/disable settings for the UVW and Y2 phases of the TMC9660 gate driver.

Table — Gate Driver Overcurrent Protection:

NUMBER NAME DESCRIPTION
254 UVW_LOW_SIDE_ENABLE Enable overcurrent protection for UVW phases low side. 0: DISABLED, 1: ENABLED. Default: 1.
255 UVW_HIGH_SIDE_ENABLE Enable overcurrent protection for UVW phases high side. 0: DISABLED, 1: ENABLED. Default: 1.
256 Y2_LOW_SIDE_ENABLE Enable overcurrent protection for Y2 phase low side. 0: DISABLED, 1: ENABLED. Default: 1.
257 Y2_HIGH_SIDE_ENABLE Enable overcurrent protection for Y2 phase high side. 0: DISABLED, 1: ENABLED. Default: 1.
258 UVW_LOW_SIDE_THRESHOLD Threshold for UVW phases low side [0-15]. Default: 0.
259 UVW_HIGH_SIDE_THRESHOLD Threshold for UVW phases high side [0-15]. Default: 0.
260 Y2_LOW_SIDE_THRESHOLD Threshold for Y2 phase low side [0-15]. Default: 0.
261 Y2_HIGH_SIDE_THRESHOLD Threshold for Y2 phase high side [0-15]. Default: 0.
262 UVW_LOW_SIDE_BLANKING Blanking time for UVW phases low side [0-7]. Default: 2.
263 UVW_HIGH_SIDE_BLANKING Blanking time for UVW phases high side [0-7]. Default: 2.
264 Y2_LOW_SIDE_BLANKING Blanking time for Y2 phase low side [0-7]. Default: 2.
265 Y2_HIGH_SIDE_BLANKING Blanking time for Y2 phase high side [0-7]. Default: 2.
266 UVW_LOW_SIDE_DEGLITCH Deglitch time for UVW phases low side [0-7]. Default: 6.
267 UVW_HIGH_SIDE_DEGLITCH Deglitch time for UVW phases high side [0-7]. Default: 6.
268 Y2_LOW_SIDE_DEGLITCH Deglitch time for Y2 phase low side [0-7]. Default: 6.
269 Y2_HIGH_SIDE_DEGLITCH Deglitch time for Y2 phase high side [0-7]. Default: 6.
270 UVW_LOW_SIDE_USE_VDS Use VDS measurement for UVW phases low side. 0: DISABLED, 1: ENABLED. Default: 1.
271 Y2_LOW_SIDE_USE_VDS Use VDS measurement for Y2 phase low side. 0: DISABLED, 1: ENABLED. Default: 1.

◆ OVERCURRENT_THRESHOLD_LIST

#define OVERCURRENT_THRESHOLD_LIST (   X)
Value:
X(V_63_MILLIVOLT, 0, ) \
X(V_125_MILLIVOLT, 1, ) \
X(V_187_MILLIVOLT, 2, ) \
X(V_248_MILLIVOLT, 3, ) \
X(V_312_MILLIVOLT, 4, ) \
X(V_374_MILLIVOLT, 5, ) \
X(V_434_MILLIVOLT, 6, ) \
X(V_504_MILLIVOLT, 7, ) \
X(V_705_MILLIVOLT, 8, ) \
X(V_940_MILLIVOLT, 9, ) \
X(V_1180_MILLIVOLT, 10, ) \
X(V_1410_MILLIVOLT, 11, ) \
X(V_1650_MILLIVOLT, 12, ) \
X(V_1880_MILLIVOLT, 13, ) \
X(V_2110_MILLIVOLT, 14, ) \
X(V_2350_MILLIVOLT, 15, )

Enumerates possible threshold values for overcurrent protection.

Table — Overcurrent Protection Thresholds:

NUMBER NAME DESCRIPTION
0 V_63_MILLIVOLT 63 mV
1 V_125_MILLIVOLT 125 mV
2 V_187_MILLIVOLT 187 mV
3 V_248_MILLIVOLT 248 mV
4 V_312_MILLIVOLT 312 mV
5 V_374_MILLIVOLT 374 mV
6 V_434_MILLIVOLT 434 mV
7 V_504_MILLIVOLT 504 mV
8 V_705_MILLIVOLT 705 mV
9 V_940_MILLIVOLT 940 mV
10 V_1180_MILLIVOLT 1180 mV
11 V_1410_MILLIVOLT 1410 mV
12 V_1650_MILLIVOLT 1650 mV
13 V_1880_MILLIVOLT 1880 mV
14 V_2110_MILLIVOLT 2110 mV
15 V_2350_MILLIVOLT 2350 mV

◆ OVERCURRENT_TIMING_LIST

#define OVERCURRENT_TIMING_LIST (   X)
Value:
X(OFF, 0, ) \
X(T_0_25_MICROSEC, 1, ) \
X(T_0_5_MICROSEC, 2, ) \
X(T_1_MICROSEC, 3, ) \
X(T_2_MICROSEC, 4, ) \
X(T_4_MICROSEC, 5, ) \
X(T_6_MICROSEC, 6, ) \
X(T_8_MICROSEC, 7, )

Enumerates possible blanking and deglitch times for overcurrent protection.

Table — Overcurrent Protection Timing:

NUMBER NAME DESCRIPTION
0 OFF No blanking or deglitching
1 T_0_25_MICROSEC 0.25 µs
2 T_0_5_MICROSEC 0.5 µs
3 T_1_MICROSEC 1.0 µs
4 T_2_MICROSEC 2.0 µs
5 T_4_MICROSEC 4.0 µs
6 T_6_MICROSEC 6.0 µs
7 T_8_MICROSEC 8.0 µs

◆ POSITION_CONTROL_LIST

#define POSITION_CONTROL_LIST (   X)
Value:
X(POSITION_SENSOR_SELECTION, 142, ) \
X(TARGET_POSITION, 143, ) \
X(ACTUAL_POSITION, 144, ) \
X(POSITION_SCALING_FACTOR, 145, ) \
X(POSITION_P, 146, ) \
X(POSITION_I, 147, ) \
X(POSITION_NORM_P, 148, ) \
X(POSITION_NORM_I, 149, ) \
X(POSITION_PI_INTEGRATOR, 150, ) \
X(POSITION_PI_ERROR, 151, ) \
X(POSITION_LOOP_DOWNSAMPLING,153, ) \
X(LATCH_POSITION, 154, ) \
X(POSITION_LIMIT_LOW, 155, ) \
X(POSITION_LIMIT_HIGH, 156, ) \
X(POSITION_REACHED_THRESHOLD,157, )

Parameters for configuring position control and ramping.

Table — Position Control Parameters:

NUMBER NAME DESCRIPTION
142 POSITION_SENSOR_SELECTION Feedback source for position PI regulator. See PositionSensorSelection. Default: 0 (SAME_AS_COMMUTATION). RWE
143 TARGET_POSITION Target position value. Write to activate position regulation. -2147483648...2147483647. Default: 0. RW
144 ACTUAL_POSITION Actual position value. -2147483648...2147483647. Default: 0. RW
145 POSITION_SCALING_FACTOR Scaling factor for position to real-world units. 1024...65535. Default: 1024. RWE
146 POSITION_P P parameter for position PI regulator. 0...32767. Default: 5. RWE
147 POSITION_I I parameter for position PI regulator. 0...32767. Default: 0. RWE
148 POSITION_NORM_P P normalization for position PI. See PositionPiNorm. Default: 1. RWE
149 POSITION_NORM_I I normalization for position PI. See PositionPiNorm. Default: 1. RWE
150 POSITION_PI_INTEGRATOR Integrated error of position PI regulator. -2147483648...2147483647. Default: 0. R
151 POSITION_PI_ERROR Error of position PI regulator. -2147483648...2147483647. Default: 0. R
153 POSITION_LOOP_DOWNSAMPLING Downsampling factor for position controller. 0...127. Default: 0. RWE
154 LATCH_POSITION Position switch latched. -2147483648...2147483647. Default: 0. R
155 POSITION_LIMIT_LOW Position limit low. -2147483648...2147483647. Default: -2147483648. RWE
156 POSITION_LIMIT_HIGH Position limit high. -2147483648...2147483647. Default: 2147483647. RWE
157 POSITION_REACHED_THRESHOLD Deviation between target and actual position below which the position reached flag goes active and latches. If a new target position is set the flag is reset. 0...2147483647. Default: 0. RWE

◆ POSITION_PI_NORM_LIST

#define POSITION_PI_NORM_LIST (   X)
Value:
X(NO_SHIFT, 0, ) \
X(SHIFT_8_BIT, 1, ) \
X(SHIFT_16_BIT, 2, ) \
X(SHIFT_24_BIT, 3, )

Enumerates normalization formats for position PI controller.

Table — Position PI Normalization:

NUMBER NAME DESCRIPTION
0 NO_SHIFT No shift.
1 SHIFT_8_BIT Shift right by 8 bits.
2 SHIFT_16_BIT Shift right by 16 bits.
3 SHIFT_24_BIT Shift right by 24 bits.

◆ POSITION_SENSOR_SELECTION_LIST

#define POSITION_SENSOR_SELECTION_LIST (   X)
Value:
X(SAME_AS_COMMUTATION, 0, ) \
X(DIGITAL_HALL, 1, ) \
X(ABN1_ENCODER, 2, ) \
X(ABN2_ENCODER, 3, ) \
X(SPI_ENCODER, 4, )

Enumerates feedback sources for position PI regulator.

Table — Position Sensor Selection:

NUMBER NAME DESCRIPTION
0 SAME_AS_COMMUTATION Use same feedback as commutation mode.
1 DIGITAL_HALL Use digital Hall sensors.
2 ABN1_ENCODER Use ABN1 encoder.
3 ABN2_ENCODER Use ABN2 encoder.
4 SPI_ENCODER Use SPI encoder.

◆ POWER_DOWN_TIMEOUT_LIST

#define POWER_DOWN_TIMEOUT_LIST (   X)
Value:
X(T_250_MILLISEC, 0, ) \
X(T_500_MILLISEC, 1, ) \
X(T_1_SEC, 2, ) \
X(T_2_SEC, 3, ) \
X(T_4_SEC, 4, ) \
X(T_8_SEC, 5, ) \
X(T_16_SEC, 6, ) \
X(T_32_SEC, 7, )

Enumerates timeout durations for power-down state.

Table — Power Down Timeout:

NUMBER NAME DESCRIPTION
0 T_250_MILLISEC 250 ms
1 T_500_MILLISEC 500 ms
2 T_1_SEC 1 second
3 T_2_SEC 2 seconds
4 T_4_SEC 4 seconds
5 T_8_SEC 8 seconds
6 T_16_SEC 16 seconds
7 T_32_SEC 32 seconds

◆ PWM_FREQUENCY_LIST

#define PWM_FREQUENCY_LIST (   X)
Value:
X(STANDARD_BLDC, 25000, ) \
X(STANDARD_STEPPER, 20000, ) \
X(FAST_BLDC, 50000, ) \
X(ULTRA_FAST_BLDC, 100000, ) \
X(MINIMUM_SILENT, 20001, )

Enumerates recommended PWM frequencies for different motor types.

Table — PWM Frequency Configuration:

NUMBER NAME DESCRIPTION
25000 STANDARD_BLDC Standard frequency for typical BLDC motors
20000 STANDARD_STEPPER Standard frequency for high-inductance stepper motors
50000 FAST_BLDC For fast-spinning BLDC motors (>10,000 RPM)
100000 ULTRA_FAST_BLDC For very high-speed or low-inductance BLDC motors
20000 MINIMUM_SILENT Minimum frequency to avoid audible switching noise

◆ PWM_OUTPUT_POLARITY_LIST

#define PWM_OUTPUT_POLARITY_LIST (   X)
Value:
X(ACTIVE_HIGH, 0, ) \
X(ACTIVE_LOW, 1, )

Table — PWM Output Polarity:

NUMBER NAME DESCRIPTION
0 ACTIVE_HIGH PWM output is active high.
1 ACTIVE_LOW PWM output is active low.

◆ PWM_SWITCHING_SCHEME_LIST

#define PWM_SWITCHING_SCHEME_LIST (   X)
Value:
X(STANDARD, 0, ) \
X(SVPWM, 1, ) \
X(FLAT_BOTTOM, 2, )

Enumerates PWM switching schemes.

Table — PWM Switching Schemes:

NUMBER NAME DESCRIPTION
0 STANDARD Standard modulation
1 SVPWM Space Vector PWM
2 FLAT_BOTTOM Flat bottom modulation

◆ RAMDEBUG_STATE_LIST

#define RAMDEBUG_STATE_LIST (   X)
Value:
X(IDLE, 0, ) \
X(TRIGGER, 1, ) \
X(CAPTURE, 2, ) \
X(COMPLETE, 3, ) \
X(PRETRIGGER, 4, )

Values returned by ::RamDebugType::GET_STATE.

Table 17 — List of RAMDebug states:

NUMBER NAME DESCRIPTION
0 Idle RAMDebug is not running and can be configured. Use type code 0 to enter this state.
1 Trigger RAMDebug is waiting for the trigger event to happen. When updating a value that RAMDebug

| is triggering on, ensure this state is reached before updating. 2 | Capture | RAMDebug has been triggered and is capturing samples. 3 | Complete | RAMDebug has finished capturing samples. The data can now be downloaded using type code 9. 4 | Pretrigger | RAMDebug is capturing samples for the pretrigger.

◆ RAMDEBUG_TYPE_LIST

#define RAMDEBUG_TYPE_LIST (   X)
Value:
X(INITIALISE_RESET, 0, ) \
X(SET_SAMPLE_COUNT, 1, ) \
X(SET_PRESCALER, 3, ) \
X(SET_CHANNEL, 4, ) \
X(SET_TRIGGER_CHANNEL, 5, ) \
X(SET_TRIGGER_MASK_SHIFT, 6, ) \
X(ENABLE_TRIGGER, 7, ) \
X(GET_STATE, 8, ) \
X(READ_SAMPLE, 9, ) \
X(GET_INFO, 10, ) \
X(GET_CHANNEL_TYPE, 11, ) \
X(GET_CHANNEL_ADDRESS, 12, ) \
X(SET_PRETRIGGER_COUNT, 13, ) \
X(GET_PRETRIGGER_COUNT, 14, )

TYPE field values when Operation::RamDebug is issued.

Table 16 — RAMDebug type commands:

NUMBER TYPE (subcode) MOTOR/BANK VALUE DESCRIPTION
0 INITIALISE_RESET - - Initialize and reset RAMDebug configuration & buffers.
1 SET_SAMPLE_COUNT - Number Set total number of samples to collect (not per-channel).
3 SET_PRESCALER - Prescale Set divider for sampling rate (divider = VALUE+1).
4 SET_CHANNEL Type: 0=Disabled, 1=Parameter, 3=Global param Motor/Bank: 0xFF000000, AP/GP number: 0x00000FFF Configure capture channel.
5 SET_TRIGGER_CHANNEL Type: 0=Disabled, 1=Parameter, 3=Global param Motor/Bank: 0xFF000000, AP/GP number: 0x00000FFF Specify source of trigger data.
6 SET_TRIGGER_MASK_SHIFT Shift Mask Specify mask and shift for trigger value.
7 ENABLE_TRIGGER Type: 0=Uncond, 1=RiseS, 2=FallS, 3=DualS, Threshold Start measurement by enabling trigger.

| | 4=RiseU, 5=FallU, 6=BothU | | 8 | GET_STATE | - | - | Request state of RAMDebug (see RamDebugState). 9 | READ_SAMPLE | Index | - | Download sampled values at index. 10 | GET_INFO | - | 0=Max channels, 1=Buffer size, 2=RAMDebug freq, 3=Captured count, | Read general info. | | | 4=Prescaler on trigger | 11 | GET_CHANNEL_TYPE | Index | - | Read channel type info. 12 | GET_CHANNEL_ADDRESS | Index | - | Read channel address. 13 | SET_PRETRIGGER_COUNT | - | Number | Set total number of pretrigger samples (not per-channel). 14 | GET_PRETRIGGER_COUNT | - | - | Get total number of pretrigger samples.

◆ RAMPER_STOP_CONFIG_LIST

#define RAMPER_STOP_CONFIG_LIST (   X)
Value:
X(STOP_ON_VELOCITY_DEVIATION, 134, ) \
X(STOP_ON_POSITION_DEVIATION, 152, ) \
/* LATCH_POSITION handled in POSITION_CONTROL_LIST */ \
X(REFERENCE_SWITCH_ENABLE, 161, ) \
X(REFERENCE_SWITCH_POLARITY_AND_SWAP,162, ) \
X(REFERENCE_SWITCH_LATCH_SETTINGS, 163, ) \
X(EVENT_STOP_SETTINGS, 164, )

Parameters for configuring ramper stop conditions and reference switch behavior.

Table — Ramper Stop Conditions and Reference Switches:

NUMBER NAME DESCRIPTION
134 STOP_ON_VELOCITY_DEVIATION Max velocity deviation before stop event [0...200000]. Default: 0. RW
152 STOP_ON_POSITION_DEVIATION Max position deviation before stop event [0...2147483647]. Default: 0. RWE
154 LATCH_POSITION Latched position at switch event [-2147483648...2147483647]. Default: 0. R
161 REFERENCE_SWITCH_ENABLE Bitwise enable for stopping on reference switch. See ReferenceSwitchEnable. Default: 0. RWE
162 REFERENCE_SWITCH_POLARITY_AND_SWAP Bitwise config for switch polarity/swap. See ReferenceSwitchPolaritySwap. Default: 0. RWE
163 REFERENCE_SWITCH_LATCH_SETTINGS Bitwise config for latch behavior. See ReferenceSwitchLatchSettings. Default: 0. RWE
164 EVENT_STOP_SETTINGS Bitwise config for stop conditions. See EventStopSettings. Default: 0. RWE

◆ REFERENCE_SEARCH_COMMAND_LIST

#define REFERENCE_SEARCH_COMMAND_LIST (   X)
Value:
X(START, 0, ) \
X(STOP, 1, ) \
X(STATUS, 2, )

Enumerates TMCL RFS (13) command types for reference search.

Table — Reference Search TMCL Command Types:

NUMBER NAME DESCRIPTION
0 START Start reference search.
1 STOP Stop reference search.
2 STATUS Return reference search status.

◆ REFERENCE_SEARCH_LIST

#define REFERENCE_SEARCH_LIST (   X)
Value:
X(REFERENCE_SWITCH_SEARCH_MODE, 165, ) \
X(REFERENCE_SWITCH_SEARCH_SPEED, 166, ) \
X(REFERENCE_SWITCH_SPEED, 167, ) \
X(RIGHT_LIMIT_SWITCH_POSITION, 168, ) \
X(HOME_SWITCH_POSITION, 169, ) \
X(LAST_REFERENCE_POSITION, 170, )

Parameters for configuring automatic homing/reference search routines.

The TMC9660 supports eight different reference search patterns, configurable via REFERENCE_SWITCH_SEARCH_MODE. Two speeds can be set: REFERENCE_SWITCH_SEARCH_SPEED (fast search) and REFERENCE_SWITCH_SPEED (slow, for accuracy). Switch positions can be read out after search. The TMCL command RFS (13) is used to start/stop/query the search.

Table — Reference Search (Automatic Homing) Parameters:

NUMBER NAME DESCRIPTION
165 REFERENCE_SWITCH_SEARCH_MODE Reference search mode. See ReferenceSearchMode. Default: 0.
166 REFERENCE_SWITCH_SEARCH_SPEED Speed for reference search [-134217728...134217727]. Default: 0.
167 REFERENCE_SWITCH_SPEED Lower speed for accurate switch positioning [-134217728...134217727]. Default: 0.
168 RIGHT_LIMIT_SWITCH_POSITION Position of right limit switch [-2147483648...2147483647]. Default: 0.
169 HOME_SWITCH_POSITION Position of home switch [-2147483648...2147483647]. Default: 0.
170 LAST_REFERENCE_POSITION Last reference position [-2147483648...2147483647]. Default: 0.

◆ REFERENCE_SEARCH_MODE_LIST

#define REFERENCE_SEARCH_MODE_LIST (   X)
Value:
X(LEFT_SWITCH, 1, ) \
X(RIGHT_SWITCH_LEFT_SWITCH, 2, ) \
X(RIGHT_SWITCH_LEFT_SWITCH_BOTH_SIDES, 3, ) \
X(LEFT_SWITCH_BOTH_SIDES, 4, ) \
X(HOME_SWITCH_NEG_DIR_LEFT_END_SWITCH, 5, ) \
X(HOME_SWITCH_POS_DIR_RIGHT_END_SWITCH, 6, ) \
X(HOME_SWITCH_NEG_DIR_IGNORE_END_SWITCH, 7, ) \
X(HOME_SWITCH_POS_DIR_IGNORE_END_SWITCH, 8, )

Enumerates reference search (homing) patterns.

Table — Reference Search Modes:

NUMBER NAME DESCRIPTION
1 LEFT_SWITCH Search for left limit switch.
2 RIGHT_SWITCH_LEFT_SWITCH Search right limit, then left limit switch.
3 RIGHT_SWITCH_LEFT_SWITCH_BOTH_SIDES Right limit, then approach left limit from both sides.
4 LEFT_SWITCH_BOTH_SIDES Approach left limit from both sides.
5 HOME_SWITCH_NEG_DIR_LEFT_END_SWITCH Search home switch in negative direction, turn if left end detected.
6 HOME_SWITCH_POS_DIR_RIGHT_END_SWITCH Search home switch in positive direction, turn if right end detected.
7 HOME_SWITCH_NEG_DIR_IGNORE_END_SWITCH Search home switch in negative direction, ignore end switch.
8 HOME_SWITCH_POS_DIR_IGNORE_END_SWITCH Search home switch in positive direction, ignore end switch.

◆ REFERENCE_SEARCH_STATUS_LIST

#define REFERENCE_SEARCH_STATUS_LIST (   X)
Value:
X(IDLE, 0, ) \
X(START_REFERENCE_DRIVE, 1, ) \
X(START_DRIVE_TO_RIGHT_LIMIT_FAST, 2, ) \
X(WAIT_UNTIL_RIGHT_SWITCH_REACHED, 3, ) \
X(START_DRIVE_TO_LEFT_LIMIT_FAST, 4, ) \
X(WAIT_UNTIL_LEFT_SWITCH_REACHED, 5, ) \
X(DRIVE_OUT_OF_LEFT_SWITCH_SLOWLY, 6, ) \
X(WAIT_UNTIL_LEFT_SWITCH_EXITED_DRIVE_IN_AGAIN, 7, ) \
X(WAIT_UNTIL_LEFT_SWITCH_REACHED_AGAIN_DRIVE_TO_POSITION, 8, ) \
X(WAIT_UNTIL_POSITION_REACHED_SET_ZERO, 9, ) \
X(WAIT_UNTIL_SWITCH_PUSHED_AGAIN, 10, ) \
X(WAIT_UNTIL_OTHER_SIDE_SWITCH_REACHED, 11, ) \
X(RESERVED, 12, ) \
X(WAIT_UNTIL_CENTER_SWITCH_REACHED, 13, ) \
X(REFERENCE_DRIVE_FINISHED_RESTORE_SETTINGS, 14, ) \
X(STOP_REFERENCE_DRIVE, 15, )

Enumerates status codes for reference search state machine.

Table — Reference Search Status Codes:

NUMBER NAME DESCRIPTION
0 IDLE No description provided.
1 START_REFERENCE_DRIVE No description provided.
2 START_DRIVE_TO_RIGHT_LIMIT_FAST No description provided.
3 WAIT_UNTIL_RIGHT_SWITCH_REACHED No description provided.
4 START_DRIVE_TO_LEFT_LIMIT_FAST No description provided.
5 WAIT_UNTIL_LEFT_SWITCH_REACHED No description provided.
6 DRIVE_OUT_OF_LEFT_SWITCH_SLOWLY No description provided.
7 WAIT_UNTIL_LEFT_SWITCH_EXITED_DRIVE_IN_AGAIN No description provided.
8 WAIT_UNTIL_LEFT_SWITCH_REACHED_AGAIN_DRIVE_TO_POSITION No description provided.
9 WAIT_UNTIL_POSITION_REACHED_SET_ZERO No description provided.
10 WAIT_UNTIL_SWITCH_PUSHED_AGAIN No description provided.
11 WAIT_UNTIL_OTHER_SIDE_SWITCH_REACHED No description provided.
12 RESERVED No description provided.
13 WAIT_UNTIL_CENTER_SWITCH_REACHED No description provided.
14 REFERENCE_DRIVE_FINISHED_RESTORE_SETTINGS No description provided.
15 STOP_REFERENCE_DRIVE No description provided.

◆ REFERENCE_SWITCH_ENABLE_LIST

#define REFERENCE_SWITCH_ENABLE_LIST (   X)
Value:
X(NO_STOP_ON_SWITCH_TRIGGERED, 0, ) \
X(STOP_ON_L, 1, ) \
X(STOP_ON_R, 2, ) \
X(STOP_ON_R_AND_L, 3, ) \
X(STOP_ON_H, 4, ) \
X(STOP_ON_H_AND_L, 5, ) \
X(STOP_ON_H_AND_R, 6, ) \
X(STOP_ON_H_R_AND_L, 7, )

Bitwise enable for stopping when reference switch input is triggered.

Table — Reference Switch Enable:

NUMBER NAME DESCRIPTION
0 NO_STOP_ON_SWITCH_TRIGGERED No stop on switch.
1 STOP_ON_L Stop on left switch.
2 STOP_ON_R Stop on right switch.
3 STOP_ON_R_AND_L Stop on right and left switches.
4 STOP_ON_H Stop on home switch.
5 STOP_ON_H_AND_L Stop on home and left switches.
6 STOP_ON_H_AND_R Stop on home and right switches.
7 STOP_ON_H_R_AND_L Stop on home, right, and left switches.

◆ REFERENCE_SWITCH_LATCH_SETTINGS_LIST

#define REFERENCE_SWITCH_LATCH_SETTINGS_LIST (   X)
Value:
X(NO_TRIGGER, 0, ) \
X(L_R_RISING_EDGE, 1, ) \
X(L_R_FALLING_EDGE, 2, ) \
X(L_R_BOTH_EDGES, 3, ) \
X(H_RISING_EDGE, 4, ) \
X(H_L_R_RISING_EDGE, 5, ) \
X(H_RISING_L_R_FALLING_EDGE, 6, ) \
X(H_RISING_L_R_BOTH_EDGES, 7, ) \
X(H_FALLING_EDGE, 8, ) \
X(H_FALLING_L_R_RISING_EDGE, 9, ) \
X(H_L_R_FALLING_EDGE, 10, ) \
X(H_FALLING_L_R_BOTH_EDGES, 11, ) \
X(H_BOTH_EDGES, 12, ) \
X(H_BOTH_L_R_RISING_EDGE, 13, ) \
X(H_BOTH_L_R_FALLING_EDGE, 14, ) \
X(H_L_R_BOTH_EDGES, 15, )

Bitwise configuration for reference switch latch behavior.

Table — Reference Switch Latch Settings:

NUMBER NAME DESCRIPTION
0 NO_TRIGGER No latch triggered.
1 L_R_RISING_EDGE Latch on rising edge of left/right switch.
2 L_R_FALLING_EDGE Latch on falling edge of left/right switch.
3 L_R_BOTH_EDGES Latch on both edges of left/right switch.
4 H_RISING_EDGE Latch on rising edge of home switch.
5 H_L_R_RISING_EDGE Latch on rising edge of home and left/right switches.
6 H_RISING_L_R_FALLING_EDGE Latch on rising edge of home and falling edge of left/right switches.
7 H_RISING_L_R_BOTH_EDGES Latch on rising edge of home and both edges of left/right switches.
8 H_FALLING_EDGE Latch on falling edge of home switch.
9 H_FALLING_L_R_RISING_EDGE Latch on falling edge of home and rising edge of left/right switches.
10 H_L_R_FALLING_EDGE Latch on falling edge of home and left/right switches.
11 H_FALLING_L_R_BOTH_EDGES Latch on falling edge of home and both edges of left/right switches.
12 H_BOTH_EDGES Latch on both edges of home switch.
13 H_BOTH_L_R_RISING_EDGE Latch on both edges of home and rising edge of left/right switches.
14 H_BOTH_L_R_FALLING_EDGE Latch on both edges of home and falling edge of left/right switches.
15 H_L_R_BOTH_EDGES Latch on both edges of home and left/right switches.

◆ REFERENCE_SWITCH_POLARITY_SWAP_LIST

#define REFERENCE_SWITCH_POLARITY_SWAP_LIST (   X)
Value:
X(NOT_SWAPPED_NOT_INVERTED, 0, ) \
X(L_INVERTED, 1, ) \
X(R_INVERTED, 2, ) \
X(R_AND_L_INVERTED, 3, ) \
X(H_INVERTED, 4, ) \
X(H_AND_L_INVERTED, 5, ) \
X(H_AND_R_INVERTED, 6, ) \
X(H_R_AND_L_INVERTED, 7, ) \
X(L_R_SWAPPED_L_INVERTED, 8, ) \
X(L_R_SWAPPED_R_INVERTED, 9, ) \
X(L_R_SWAPPED_R_AND_L_INVERTED, 10, ) \
X(L_R_SWAPPED_H_INVERTED, 11, ) \
X(L_R_SWAPPED_H_AND_L_INVERTED, 12, ) \
X(L_R_SWAPPED, 13, ) \
X(L_R_SWAPPED_H_AND_R_INVERTED, 14, ) \
X(L_R_SWAPPED_H_R_AND_L_INVERTED,15, )

Bitwise configuration for reference switch polarity and swapping.

Table — Reference Switch Polarity and Swap:

NUMBER NAME DESCRIPTION
0 NOT_SWAPPED_NOT_INVERTED No swapping or inversion.
1 L_INVERTED Left switch inverted.
2 R_INVERTED Right switch inverted.
3 R_AND_L_INVERTED Right and left switches inverted.
4 H_INVERTED Home switch inverted.
5 H_AND_L_INVERTED Home and left switches inverted.
6 H_AND_R_INVERTED Home and right switches inverted.
7 H_R_AND_L_INVERTED Home, right, and left switches inverted.
8 L_R_SWAPPED_L_INVERTED Left and right switches swapped, left inverted.
9 L_R_SWAPPED_R_INVERTED Left and right switches swapped, right inverted.
10 L_R_SWAPPED_R_AND_L_INVERTED Left and right switches swapped, both inverted.
11 L_R_SWAPPED_H_INVERTED Left and right switches swapped, home inverted.
12 L_R_SWAPPED_H_AND_L_INVERTED Left and right switches swapped, home and left inverted.
13 L_R_SWAPPED Left and right switches swapped.
14 L_R_SWAPPED_H_AND_R_INVERTED Left and right switches swapped, home and right inverted.
15 L_R_SWAPPED_H_R_AND_L_INVERTED Left and right switches swapped, home, right, and left inverted.

◆ REPLY_CODE_LIST

#define REPLY_CODE_LIST (   X)
Value:
X(REPLY_OK, 100, ) \
X(REPLY_CMD_LOADED, 101, ) \
X(REPLY_CHKERR, 1, ) \
X(REPLY_INVALID_CMD, 2, ) \
X(REPLY_WRONG_TYPE, 3, ) \
X(REPLY_INVALID_VALUE, 4, ) \
X(REPLY_CMD_NOT_AVAILABLE, 6, ) \
X(REPLY_CMD_LOAD_ERROR, 7, ) \
X(REPLY_MAX_EXCEEDED, 9, ) \
X(REPLY_DOWNLOAD_NOT_POSSIBLE, 10, )

Status codes returned in the status byte of every TMCL reply.

Table 19 — TMCL status codes:

NUMBER NAME DESCRIPTION
100 REPLY_OK Command executed successfully.
101 REPLY_CMD_LOADED Command loaded successfully.
1 REPLY_CHKERR Check error occurred (e.g., checksum error).
2 REPLY_INVALID_CMD Invalid command received (unknown command number).
3 REPLY_WRONG_TYPE Wrong type of data received (TYPE field invalid).
4 REPLY_INVALID_VALUE Invalid value received (VALUE field out of range).
6 REPLY_CMD_NOT_AVAILABLE Command not available (not supported in this mode).
7 REPLY_CMD_LOAD_ERROR Error occurred while loading command (storage error).
9 REPLY_MAX_EXCEEDED Maximum limit exceeded (e.g., too many breakpoints).
10 REPLY_DOWNLOAD_NOT_POSSIBLE Download operation not possible (misuse or memory full).

◆ SPI_ENCODER_TRANSFER_LIST

#define SPI_ENCODER_TRANSFER_LIST (   X)
Value:
X(OFF, 0, ) \
X(TRIGGER_SINGLE_TRANSFER, 1, ) \
X(CONTINUOUS_POSITION_COUNTER_READ, 2, )

Enumerates SPI encoder transfer modes.

Table — SPI Encoder Transfer Modes:

NUMBER NAME DESCRIPTION
0 OFF SPI encoder interface off.
1 TRIGGER_SINGLE_TRANSFER Trigger a single SPI transfer.
2 CONTINUOUS_POSITION_COUNTER_READ Continuously read position counter.

◆ SPI_INIT_METHOD_LIST

#define SPI_INIT_METHOD_LIST (   X)
Value:
X(FORCED_PHI_E_ZERO_WITH_ACTIVE_SWING, 0, ) \
X(FORCED_PHI_E_90_ZERO, 1, ) \
X(USE_OFFSET, 2, )

Enumerates SPI encoder initialization methods.

Table — SPI Encoder Initialization Methods:

NUMBER NAME DESCRIPTION
0 FORCED_PHI_E_ZERO_WITH_ACTIVE_SWING Force rotor into PHI_E zero with active swing.
1 FORCED_PHI_E_90_ZERO Force rotor into PHI_E 90° then 0° position.
2 USE_OFFSET Use the offset value stored in SPI_ENCODER_OFFSET.

◆ STEP_DIR_LIST

#define STEP_DIR_LIST (   X)
Value:
/* VELOCITY_FEEDFORWARD_ENABLE defined in VELOCITY_CONTROL_LIST */ \
X(STEP_DIR_STEP_DIVIDER_SHIFT, 205, ) \
X(STEP_DIR_ENABLE, 206, ) \
X(STEP_DIR_EXTRAPOLATION_ENABLE, 207, ) \
X(STEP_DIR_STEP_SIGNAL_TIMEOUT_LIMIT, 208, ) \
X(STEP_DIR_MAXIMUM_EXTRAPOLATION_VELOCITY, 209, )

Parameters for configuring the STEP/DIR target movement interface.

The STEP/DIR interface allows position control via step and direction signals. Supports micro-stepping, extrapolation, and velocity feedforward. Micro-stepping is set by STEP_DIR_STEP_DIVIDER_SHIFT (1/1 to 1/1024). Extrapolation smooths movement between steps and can be limited by velocity. Timeout and correction are configurable.

NUMBER NAME DESCRIPTION
68 VELOCITY_FEEDFORWARD_ENABLE Enable velocity feedforward. 0: DISABLED, 1: ENABLED. Default: 0. RWE
205 STEP_DIR_STEP_DIVIDER_SHIFT Micro-step divider shift (see StepDirStepDividerShift). Default: 0 (full step). RWE
206 STEP_DIR_ENABLE Enable STEP/DIR input. 0: DISABLED, 1: ENABLED. Default: 0. RW
207 STEP_DIR_EXTRAPOLATION_ENABLE Enable extrapolation. 0: DISABLED, 1: ENABLED. Default: 0. RW
208 STEP_DIR_STEP_SIGNAL_TIMEOUT_LIMIT Step signal timeout limit [ms]. 1...2000. Default: 1000. RW
209 STEP_DIR_MAXIMUM_EXTRAPOLATION_VELOCITY Max velocity for extrapolation [eRPM]. 0...2147483647. Default: 2147483647. RW

◆ STEP_DIR_STEP_DIVIDER_SHIFT_LIST

#define STEP_DIR_STEP_DIVIDER_SHIFT_LIST (   X)
Value:
X(STEP_MODE_FULL, 0, ) \
X(STEP_MODE_HALF, 1, ) \
X(STEP_MODE_QUARTER, 2, ) \
X(STEP_MODE_1_8TH, 3, ) \
X(STEP_MODE_1_16TH, 4, ) \
X(STEP_MODE_1_32ND, 5, ) \
X(STEP_MODE_1_64TH, 6, ) \
X(STEP_MODE_1_128TH, 7, ) \
X(STEP_MODE_1_256TH, 8, ) \
X(STEP_MODE_1_512TH, 9, ) \
X(STEP_MODE_1_1024TH, 10, )

Enumerates micro-step divider shift settings for STEP/DIR interface.

Determines the number of micro-steps per full step (1/1 to 1/1024).

NUMBER NAME DESCRIPTION
0 STEP_MODE_FULL Full step (1/1)
1 STEP_MODE_HALF Half step (1/2)
2 STEP_MODE_QUARTER Quarter step (1/4)
3 STEP_MODE_1_8TH 1/8 step
4 STEP_MODE_1_16TH 1/16 step
5 STEP_MODE_1_32ND 1/32 step
6 STEP_MODE_1_64TH 1/64 step
7 STEP_MODE_1_128TH 1/128 step
8 STEP_MODE_1_256TH 1/256 step
9 STEP_MODE_1_512TH 1/512 step
10 STEP_MODE_1_1024TH 1/1024 step

◆ SYSTEM_STATUS_SUPPLY_LIST

#define SYSTEM_STATUS_SUPPLY_LIST (   X)
Value:
X(SUPPLY_VOLTAGE, 290, ) \
X(SUPPLY_OVERVOLTAGE_WARNING_THRESHOLD, 291, ) \
X(SUPPLY_UNDERVOLTAGE_WARNING_THRESHOLD, 292, )

Parameters for supply voltage warnings.

NUMBER NAME DESCRIPTION
290 SUPPLY_VOLTAGE Actual supply voltage in 0.1 V units. Read-only.
291 SUPPLY_OVERVOLTAGE_WARNING_THRESHOLD Supply overvoltage warning threshold [0…1000]. RWE
292 SUPPLY_UNDERVOLTAGE_WARNING_THRESHOLD Supply undervoltage warning threshold [0…1000]. RWE

◆ TEMPERATURE_PROTECTION_LIST

#define TEMPERATURE_PROTECTION_LIST (   X)
Value:
X(EXTERNAL_TEMPERATURE, 293, ) \
X(EXTERNAL_TEMPERATURE_SHUTDOWN_THRESHOLD, 294, ) \
X(EXTERNAL_TEMPERATURE_WARNING_THRESHOLD, 295, ) \
X(CHIP_TEMPERATURE, 296, ) \
X(CHIP_TEMPERATURE_SHUTDOWN_THRESHOLD, 297, ) \
X(CHIP_TEMPERATURE_WARNING_THRESHOLD, 298, )

Parameters for configuring temperature protection using external and internal sensors.

The TMC9660 integrates protections using both an external analog temperature sensor (AIN3) and an internal chip sensor.

  • EXTERNAL_TEMPERATURE can be converted to voltage: Voltage[V] = par(EXTERNAL_TEMPERATURE) × 2.5V / (2^16 - 1)
  • CHIP_TEMPERATURE can be converted to °C: Temperature[°C] = par(CHIP_TEMPERATURE) × 0.01615 - 268.15
  • Warning and shutdown thresholds can be set for both sensors. Exceeding a warning threshold sets a warning flag. Exceeding a shutdown threshold initiates a motor shutdown, as defined by DRIVE_FAULT_BEHAVIOUR.
  • To restart after shutdown, clear the corresponding error flag.

Table — Temperature Protection Parameters:

NUMBER NAME DESCRIPTION
293 EXTERNAL_TEMPERATURE External temperature sensor value [0...65535].
294 EXTERNAL_TEMPERATURE_SHUTDOWN_THRESHOLD Shutdown threshold for external temperature [0...65535]. Default: 65535.
295 EXTERNAL_TEMPERATURE_WARNING_THRESHOLD Warning threshold for external temperature [0...65535]. Default: 65535.
296 CHIP_TEMPERATURE Internal chip temperature value [0...65535].
297 CHIP_TEMPERATURE_SHUTDOWN_THRESHOLD Shutdown threshold for chip temperature [0...65535]. Default: 65535.
298 CHIP_TEMPERATURE_WARNING_THRESHOLD Warning threshold for chip temperature [0...65535]. Default: 65535.

◆ TORQUE_FLUX_CONTROL_LIST

#define TORQUE_FLUX_CONTROL_LIST (   X)
Value:
X(MAX_TORQUE, 6, ) \
X(MAX_FLUX, 7, ) \
X(TARGET_TORQUE, 104, ) \
X(ACTUAL_TORQUE, 105, ) \
X(TARGET_FLUX, 106, ) \
X(ACTUAL_FLUX, 107, ) \
X(TORQUE_OFFSET, 108, ) \
X(TORQUE_P, 109, ) \
X(TORQUE_I, 110, ) \
X(FLUX_P, 111, ) \
X(FLUX_I, 112, ) \
X(SEPARATE_TORQUE_FLUX_PI_PARAMETERS,113, ) \
X(CURRENT_NORM_P, 114, ) \
X(CURRENT_NORM_I, 115, ) \
X(TORQUE_PI_ERROR, 116, ) \
X(FLUX_PI_ERROR, 117, ) \
X(TORQUE_PI_INTEGRATOR, 118, ) \
X(FLUX_PI_INTEGRATOR, 119, ) \
X(FLUX_OFFSET, 120, ) \
X(FIELDWEAKENING_I, 308, ) \
X(FIELDWEAKENING_VOLTAGE_THRESHOLD, 310, )

Parameters for configuring torque and flux control loops.

Table — Torque and Flux Control Parameters:

NUMBER NAME DESCRIPTION
6 MAX_TORQUE Maximum motor torque [mA]. 0...65535. Default: 2000. RWE
7 MAX_FLUX Maximum motor flux [mA]. 0...65535. Default: 2000. RWE
104 TARGET_TORQUE Target torque [mA]. Write to activate torque regulation. -32768...32767. Default: 0. RW
105 ACTUAL_TORQUE Actual motor torque [mA]. -32767...32768. Default: 0. R
106 TARGET_FLUX Target flux [mA]. -10000...10000. Default: 0. RW
107 ACTUAL_FLUX Actual motor flux [mA]. -2147483648...2147483647. Default: 0. R
108 TORQUE_OFFSET Offset applied to torque value [mA]. -4700...4700. Default: 0. RW
109 TORQUE_P P parameter for torque PI regulator. 0...32767. Default: 50. RWE
110 TORQUE_I I parameter for torque PI regulator. 0...32767. Default: 100. RWE
111 FLUX_P P parameter for flux PI regulator (if separated). 0...32767. Default: 50. RWE
112 FLUX_I I parameter for flux PI regulator (if separated). 0...32767. Default: 100. RWE
113 SEPARATE_TORQUE_FLUX_PI_PARAMETERS Enable separate PI values for torque/flux. 0: COMBINED, 1: SEPARATED. Default: 0. RWE
114 CURRENT_NORM_P P normalization format for current PI. 0: SHIFT_8_BIT, 1: SHIFT_16_BIT. Default: 0. RWE
115 CURRENT_NORM_I I normalization format for current PI. 0: SHIFT_8_BIT, 1: SHIFT_16_BIT. Default: 1. RWE
116 TORQUE_PI_ERROR Torque PI regulator error. -2147483648...2147483647. Default: 0. R
117 FLUX_PI_ERROR Flux PI regulator error. -2147483648...2147483647. Default: 0. R
118 TORQUE_PI_INTEGRATOR Integrated error of torque PI. -2147483648...2147483647. Default: 0. R
119 FLUX_PI_INTEGRATOR Integrated error of flux PI. -2147483648...2147483647. Default: 0. R
120 FLUX_OFFSET Offset applied to flux value [mA]. -4700...4700. Default: 0. RW
308 FIELDWEAKENING_I I parameter for field weakening controller. 0...32767. Default: 0. RWE
310 FIELDWEAKENING_VOLTAGE_THRESHOLD Max voltage for field weakening. 0...32767. Default: 32767. RWE

◆ TORQUE_FLUX_PI_SEPARATION_LIST

#define TORQUE_FLUX_PI_SEPARATION_LIST (   X)
Value:
X(TORQUE_FLUX_PI_COMBINED, 0, ) \
X(TORQUE_FLUX_PI_SEPARATED, 1, )

Selects if torque and flux PI controllers use separate parameters.

Table — Torque/Flux PI Separation:

NUMBER NAME DESCRIPTION
0 TORQUE_FLUX_PI_COMBINED Use same PI parameters for torque and flux.
1 TORQUE_FLUX_PI_SEPARATED Use separate PI parameters for torque and flux.

◆ TRIGGER_TRANSITION_LIST

#define TRIGGER_TRANSITION_LIST (   X)
Value:
X(OFF, 0, ) \
X(RISING, 1, ) \
X(FALLING, 2, ) \
X(BOTH, 3, )

For all "_TRIGGER_TRANSITION" params: 0=OFF, 1=RISING, 2=FALLING, 3=BOTH.

NUMBER NAME DESCRIPTION
0 OFF No trigger transition.
1 RISING Trigger on rising edge.
2 FALLING Trigger on falling edge.
3 BOTH Trigger on both rising and falling edges.

◆ UNDERVOLTAGE_ENABLE_LIST

#define UNDERVOLTAGE_ENABLE_LIST (   X)
Value:
X(DISABLED, 0, ) \
X(ENABLED, 1, )

Enumerates options for enabling or disabling undervoltage protection.

Table — Undervoltage Protection Enable/Disable:

NUMBER NAME DESCRIPTION
0 DISABLED Protection disabled.
1 ENABLED Protection enabled.

◆ UNDERVOLTAGE_LEVEL_LIST

#define UNDERVOLTAGE_LEVEL_LIST (   X)
Value:
X(DISABLED, 0, ) \
X(LEVEL_0, 1, ) \
X(LEVEL_1, 2, ) \
X(LEVEL_2, 3, ) \
X(LEVEL_3, 4, ) \
X(LEVEL_4, 5, ) \
X(LEVEL_5, 6, ) \
X(LEVEL_6, 7, ) \
X(LEVEL_7, 8, ) \
X(LEVEL_8, 9, ) \
X(LEVEL_9, 10, ) \
X(LEVEL_10, 11, ) \
X(LEVEL_11, 12, ) \
X(LEVEL_12, 13, ) \
X(LEVEL_13, 14, ) \
X(LEVEL_14, 15, ) \
X(LEVEL_15, 16, )

Enumerates possible levels for undervoltage protection.

Used with the SUPPLY_LEVEL parameter to configure the VS undervoltage threshold.

Table — Undervoltage Protection Levels:

NUMBER NAME DESCRIPTION
0 DISABLED Comparator disabled.
1 LEVEL_0 Hardware level 0.
2 LEVEL_1 Hardware level 1.
3 LEVEL_2 Hardware level 2.
4 LEVEL_3 Hardware level 3.
5 LEVEL_4 Hardware level 4.
6 LEVEL_5 Hardware level 5.
7 LEVEL_6 Hardware level 6.
8 LEVEL_7 Hardware level 7.
9 LEVEL_8 Hardware level 8.
10 LEVEL_9 Hardware level 9.
11 LEVEL_10 Hardware level 10.
12 LEVEL_11 Hardware level 11.
13 LEVEL_12 Hardware level 12.
14 LEVEL_13 Hardware level 13.
15 LEVEL_14 Hardware level 14.
16 LEVEL_15 Hardware level 15.

◆ UNDERVOLTAGE_PROTECTION_LIST

#define UNDERVOLTAGE_PROTECTION_LIST (   X)
Value:
X(SUPPLY_LEVEL, 250, ) \
X(VDRV_ENABLE, 251, ) \
X(BST_UVW_ENABLE, 252, ) \
X(BST_Y2_ENABLE, 253, )

Parameters for configuring undervoltage lockout (UVLO) protection.

These parameters configure the undervoltage protection for the supply voltage (VS), driver voltage (VDRV), and bootstrap capacitors for UVW and Y2 phases.

Table — Undervoltage Protection Parameters:

NUMBER NAME DESCRIPTION
250 SUPPLY_LEVEL Protection level for VS (Supply voltage) [0-16]. Default: 0.
251 VDRV_ENABLE Enable protection for VDRV (Driver voltage) [0, 1]. Default: 1.
252 BST_UVW_ENABLE Enable protection for UVW bootstrap capacitors [0, 1]. Default: 1.
253 BST_Y2_ENABLE Enable protection for Y2 bootstrap capacitor [0, 1]. Default: 1.

◆ VDS_USAGE_LIST

#define VDS_USAGE_LIST (   X)
Value:
X(DISABLED, 0, ) \
X(ENABLED, 1, )

Enumerates options for VDS measurement usage in overcurrent protection.

Table — VDS Measurement Enable/Disable:

NUMBER NAME DESCRIPTION
0 DISABLED VDS measurement disabled
1 ENABLED VDS measurement enabled

◆ VELOCITY_CONTROL_LIST

#define VELOCITY_CONTROL_LIST (   X)

Parameters for configuring velocity control and ramping.

Table — Velocity Control Parameters:

NUMBER NAME DESCRIPTION
123 VELOCITY_SENSOR_SELECTION Feedback source for velocity PI regulator. See VelocitySensorSelection. Default: 0 (SAME_AS_COMMUTATION). RWE
124 TARGET_VELOCITY Target velocity value. Write to activate velocity regulation. -134217728...134217727. Default: 0. RW
125 ACTUAL_VELOCITY Actual velocity value. -2147483648...2147483647. Default: 0. R
126 VELOCITY_OFFSET Offset applied to velocity value. -200000...200000. Default: 0. RW
127 VELOCITY_P P parameter for velocity PI regulator. 0...32767. Default: 800. RWE
128 VELOCITY_I I parameter for velocity PI regulator. 0...32767. Default: 1. RWE
129 VELOCITY_NORM_P P normalization for velocity PI. See VelocityPiNorm. Default: 2. RWE
130 VELOCITY_NORM_I I normalization for velocity PI. See VelocityPiNorm. Default: 2. RWE
131 VELOCITY_PI_INTEGRATOR Integrated error of velocity PI regulator. -2147483648...2147483647. Default: 0. R
132 VELOCITY_PI_ERROR Velocity PI regulator error. -2147483648...2147483647. Default: 0. R
133 VELOCITY_SCALING_FACTOR Scaling factor for velocity to real-world units. 1...2047. Default: 1. RWE
135 VELOCITY_LOOP_DOWNSAMPLING Downsampling factor for velocity controller. 0...127. Default: 5. RWE
137 VELOCITY_METER_SWITCH_THRESHOLD Threshold for switching from period to frequency velocity meter. 0...134217727. Default: 2000. RWE
138 VELOCITY_METER_SWITCH_HYSTERESIS Hysteresis for switching back to period meter. 0...65535. Default: 500. RWE
139 VELOCITY_METER_MODE Currently used velocity meter mode. See VelocityMeterMode. Default: 0. R
45 OPENLOOP_ANGLE Phi_e calculated by ramper hardware (openloop modes). -32768...32767. Default: 0. R
46 OPENLOOP_CURRENT Openloop current applied in openloop, current mode [mA]. 0...65535. Default: 1000. RWE
47 OPENLOOP_VOLTAGE Openloop voltage applied in openloop, voltage mode. 0...16383. Default: 0. RWE
50 ACCELERATION_FF_GAIN Gain for acceleration feedforward. 0...65535. Default: 8. RWE
51 ACCELERATION_FF_SHIFT Shift for acceleration feedforward. See AccelerationFfShift. Default: 4. RWE
52 RAMP_ENABLE Enable acceleration/deceleration ramps. 0: DISABLED, 1: ENABLED. Default: 0. RWE
53 DIRECT_VELOCITY_MODE Direct velocity control mode. 0: DISABLED, 1: ENABLED. Default: 1. RWE
54 RAMP_AMAX Max acceleration (top part of ramp). 1...8388607. Default: 1000. RWE
55 RAMP_A1 First acceleration in ramp. 1...8388607. Default: 8000. RWE
56 RAMP_A2 Second acceleration in ramp. 1...8388607. Default: 4000. RWE
57 RAMP_DMAX Max deceleration (top part of ramp). 1...8388607. Default: 1000. RWE
58 RAMP_D1 Second deceleration in ramp. 1...8388607. Default: 8000. RWE
59 RAMP_D2 First deceleration in ramp. 1...8388607. Default: 8000. RWE
60 RAMP_VMAX Max velocity of ramp. 0...134217727. Default: 134217727. RWE
61 RAMP_V1 Velocity threshold for A1/D1 to A2/D2. 0...134217727. Default: 0. RWE
62 RAMP_V2 Velocity threshold for A2/D2 to AMAX/DMAX. 0...134217727. Default: 0. RWE
63 RAMP_VSTART Start velocity of ramp. 0...8388607. Default: 0. RWE
64 RAMP_VSTOP Stop velocity of ramp. 1...8388607. Default: 1. RWE
65 RAMP_TVMAX Min time at VMAX before deceleration. 0...65535. Default: 0. RWE
66 RAMP_TZEROWAIT Wait time at end of ramp. 0...65535. Default: 0. RWE
67 ACCELERATION_FEEDFORWARD_ENABLE Enable acceleration feedforward. 0: DISABLED, 1: ENABLED. Default: 0. RWE
68 VELOCITY_FEEDFORWARD_ENABLE Enable velocity feedforward. 0: DISABLED, 1: ENABLED. Default: 0. RWE
69 RAMP_VELOCITY Target velocity calculated by ramp controller. -134217727...134217727. Default: 0. R
70 RAMP_VELOCITY_ERROR Error of ramp velocity controller. -134217727...134217727. Default: 0. R

◆ VELOCITY_METER_MODE_LIST

#define VELOCITY_METER_MODE_LIST (   X)
Value:
X(PERIOD_METER, 0, ) \
X(FREQUENCY_METER, 1, ) \
X(SOFTWARE_METER, 2, )

Enumerates velocity meter modes.

Table — Velocity Meter Modes:

NUMBER NAME DESCRIPTION
0 PERIOD_METER Period-based measurement.
1 FREQUENCY_METER Frequency-based measurement.
2 SOFTWARE_METER Software-based measurement.

◆ VELOCITY_PI_NORM_LIST

#define VELOCITY_PI_NORM_LIST (   X)
Value:
X(NO_SHIFT, 0, ) \
X(SHIFT_8_BIT, 1, ) \
X(SHIFT_16_BIT,2, ) \
X(SHIFT_24_BIT,3, )

Enumerates normalization formats for velocity PI controller.

Table — Velocity PI Normalization:

NUMBER NAME DESCRIPTION
0 NO_SHIFT No shift.
1 SHIFT_8_BIT Shift right by 8 bits.
2 SHIFT_16_BIT Shift right by 16 bits.
3 SHIFT_24_BIT Shift right by 24 bits.

◆ VELOCITY_SENSOR_SELECTION_LIST

#define VELOCITY_SENSOR_SELECTION_LIST (   X)
Value:
X(SAME_AS_COMMUTATION, 0, ) \
X(DIGITAL_HALL, 1, ) \
X(ABN1_ENCODER, 2, ) \
X(ABN2_ENCODER, 3, ) \
X(SPI_ENCODER, 4, )

Enumerates feedback sources for velocity PI regulator.

Table — Velocity Sensor Selection:

NUMBER NAME DESCRIPTION
0 SAME_AS_COMMUTATION Use same feedback as commutation mode.
1 DIGITAL_HALL Use digital Hall sensors.
2 ABN1_ENCODER Use ABN1 encoder.
3 ABN2_ENCODER Use ABN2 encoder.
4 SPI_ENCODER Use SPI encoder.

◆ VGS_BLANKING_TIME_LIST

#define VGS_BLANKING_TIME_LIST (   X)
Value:
X(OFF, 0, ) \
X(T_0_25_MICROSEC, 1, ) \
X(T_0_5_MICROSEC, 2, ) \
X(T_1_MICROSEC, 3, )

Enumerates possible blanking times for VGS short protection.

Table — VGS Protection Blanking Time:

NUMBER NAME DESCRIPTION
0 OFF No blanking.
1 T_0_25_MICROSEC 0.25 µs blanking time.
2 T_0_5_MICROSEC 0.5 µs blanking time.
3 T_1_MICROSEC 1.0 µs blanking time.

◆ VGS_DEGLITCH_TIME_LIST

#define VGS_DEGLITCH_TIME_LIST (   X)
Value:
X(OFF, 0, ) \
X(T_0_25_MICROSEC, 1, ) \
X(T_0_5_MICROSEC, 2, ) \
X(T_1_MICROSEC, 3, ) \
X(T_2_MICROSEC, 4, ) \
X(T_4_MICROSEC, 5, ) \
X(T_6_MICROSEC, 6, ) \
X(T_8_MICROSEC, 7, )

Enumerates possible deglitch times for VGS short protection.

Table — VGS Protection Deglitch Time:

NUMBER NAME DESCRIPTION
0 OFF No deglitching.
1 T_0_25_MICROSEC 0.25 µs deglitch time.
2 T_0_5_MICROSEC 0.5 µs deglitch time.
3 T_1_MICROSEC 1.0 µs deglitch time.
4 T_2_MICROSEC 2.0 µs deglitch time.
5 T_4_MICROSEC 4.0 µs deglitch time.
6 T_6_MICROSEC 6.0 µs deglitch time.
7 T_8_MICROSEC 8.0 µs deglitch time.

◆ VGS_SHORT_ENABLE_LIST

#define VGS_SHORT_ENABLE_LIST (   X)
Value:
X(DISABLED, 0, ) \
X(ENABLED, 1, )

Enumerates options for enabling or disabling VGS short protection.

Table — VGS Protection Enable/Disable:

NUMBER NAME DESCRIPTION
0 DISABLED Protection disabled.
1 ENABLED Protection enabled.

◆ VGS_SHORT_PROTECTION_LIST

#define VGS_SHORT_PROTECTION_LIST (   X)
Value:
X(UVW_LOW_SIDE_ON_ENABLE, 272, ) \
X(UVW_LOW_SIDE_OFF_ENABLE, 273, ) \
X(UVW_HIGH_SIDE_ON_ENABLE, 274, ) \
X(UVW_HIGH_SIDE_OFF_ENABLE,275, ) \
X(Y2_LOW_SIDE_ON_ENABLE, 276, ) \
X(Y2_LOW_SIDE_OFF_ENABLE, 277, ) \
X(Y2_HIGH_SIDE_ON_ENABLE, 278, ) \
X(Y2_HIGH_SIDE_OFF_ENABLE, 279, ) \
X(UVW_BLANKING, 280, ) \
X(Y2_BLANKING, 281, ) \
X(UVW_DEGLITCH, 282, ) \
X(Y2_DEGLITCH, 283, )

Parameters for configuring gate-to-source (VGS) short circuit protection.

These parameters enable/disable protection against gate-to-source voltage shorts for different phases (UVW, Y2) and transitions (ON, OFF) of both low and high side drivers. The protection includes configurable blanking and deglitch times.

◆ WAIT_CONDITION_LIST

#define WAIT_CONDITION_LIST (   X)
Value:
X(WAIT_TIME, 0, ) \
X(WAIT_RFS, 4, ) \
X(WAIT_LATCH, 5, ) \
X(WAIT_VEL_REACHED, 6, ) \
X(WAIT_POS_REACHED, 7, ) \
X(WAIT_STOP_LEFT, 8, ) \
X(WAIT_STOP_RIGHT, 9, ) \
X(WAIT_STOP_HOME, 10, )

◆ X [1/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [2/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case Op::NAME: return #NAME;

◆ X [3/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE,

◆ X [4/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case CalcOperation::NAME: return #NAME;

◆ X [5/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE,

◆ X [6/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case JumpCondition::NAME: return #NAME;

◆ X [7/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE,

◆ X [8/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case WaitCondition::NAME: return #NAME;

◆ X [9/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [10/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ReplyCode::NAME: return #NAME;

◆ X [11/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [12/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case RamDebugType::NAME: return #NAME;

◆ X [13/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [14/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case RamDebugState::NAME: return #NAME;

◆ X [15/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [16/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GlobalParamBank0::NAME: return #NAME;

◆ X [17/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [18/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GlobalParamBank2::NAME: return #NAME;

◆ X [19/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [20/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GlobalParamBank3::NAME: return #NAME;

◆ X [21/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [22/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case TriggerTransition::NAME: return #NAME;

◆ X [23/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [24/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GateDriver::NAME: return #NAME;

◆ X [25/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [26/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case PwmOutputPolarity::NAME: return #NAME;

◆ X [27/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [28/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GateCurrentSink::NAME: return #NAME;

◆ X [29/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [30/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GateCurrentSource::NAME: return #NAME;

◆ X [31/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [32/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case BootstrapCurrentLimit::NAME: return #NAME;

◆ X [33/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [34/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case OvercurrentProtection::NAME: return #NAME;

◆ X [35/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [36/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case OvercurrentEnable::NAME: return #NAME;

◆ X [37/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [38/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case OvercurrentThreshold::NAME: return #NAME;

◆ X [39/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [40/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case OvercurrentTiming::NAME: return #NAME;

◆ X [41/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [42/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VdsUsage::NAME: return #NAME;

◆ X [43/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [44/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case UndervoltageProtection::NAME: return #NAME;

◆ X [45/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [46/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case UndervoltageLevel::NAME: return #NAME;

◆ X [47/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [48/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case UndervoltageEnable::NAME: return #NAME;

◆ X [49/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [50/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VgsShortProtection::NAME: return #NAME;

◆ X [51/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [52/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VgsShortEnable::NAME: return #NAME;

◆ X [53/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [54/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VgsBlankingTime::NAME: return #NAME;

◆ X [55/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [56/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VgsDeglitchTime::NAME: return #NAME;

◆ X [57/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [58/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case MotorConfig::NAME: return #NAME;

◆ X [59/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [60/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case MotorType::NAME: return #NAME;

◆ X [61/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [62/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case MotorDirection::NAME: return #NAME;

◆ X [63/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [64/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case PwmSwitchingScheme::NAME: return #NAME;

◆ X [65/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [66/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case CommutationMode::NAME: return #NAME;

◆ X [67/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [68/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case IdleMotorPwmBehavior::NAME: return #NAME;

◆ X [69/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [70/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AdcConfig::NAME: return #NAME;

◆ X [71/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [72/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AdcShuntType::NAME: return #NAME;

◆ X [73/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [74/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case CsaGain::NAME: return #NAME;

◆ X [75/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [76/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case CsaFilter::NAME: return #NAME;

◆ X [77/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [78/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AdcMapping::NAME: return #NAME;

◆ X [79/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [80/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AdcInversion::NAME: return #NAME;

◆ X [81/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [82/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case PwmFrequency::NAME: return #NAME;

◆ X [83/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [84/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case FeedbackSensorConfig::NAME: return #NAME;

◆ X [85/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [86/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AbnInitMethod::NAME: return #NAME;

◆ X [87/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [88/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AbnInitState::NAME: return #NAME;

◆ X [89/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [90/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AbnNChannelFiltering::NAME: return #NAME;

◆ X [91/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [92/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case HallSectorOffset::NAME: return #NAME;

◆ X [93/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [94/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case SpiEncoderTransfer::NAME: return #NAME;

◆ X [95/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [96/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case SpiInitMethod::NAME: return #NAME;

◆ X [97/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [98/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case EnableDisable::NAME: return #NAME;

◆ X [99/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [100/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case Direction::NAME: return #NAME;

◆ X [101/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [102/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case TorqueFluxControl::NAME: return #NAME;

◆ X [103/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [104/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case TorqueFluxPiSeparation::NAME: return #NAME;

◆ X [105/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [106/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case CurrentPiNormalization::NAME: return #NAME;

◆ X [107/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [108/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VelocityControl::NAME: return #NAME;

◆ X [109/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [110/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VelocitySensorSelection::NAME: return #NAME;

◆ X [111/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [112/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VelocityPiNorm::NAME: return #NAME;

◆ X [113/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [114/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case VelocityMeterMode::NAME: return #NAME;

◆ X [115/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [116/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AccelerationFFShift::NAME: return #NAME;

◆ X [117/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [118/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case PositionControl::NAME: return #NAME;

◆ X [119/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [120/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case PositionSensorSelection::NAME: return #NAME;

◆ X [121/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [122/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case PositionPiNorm::NAME: return #NAME;

◆ X [123/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [124/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case RamperStopConfig::NAME: return #NAME;

◆ X [125/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [126/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ReferenceSwitchEnable::NAME: return #NAME;

◆ X [127/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [128/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ReferenceSwitchPolaritySwap::NAME: return #NAME;

◆ X [129/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [130/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ReferenceSwitchLatchSettings::NAME: return #NAME;

◆ X [131/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [132/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case EventStopSettings::NAME: return #NAME;

◆ X [133/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [134/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case BiquadFilter::NAME: return #NAME;

◆ X [135/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [136/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case BiquadFilterEnable::NAME: return #NAME;

◆ X [137/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [138/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case FaultHandling::NAME: return #NAME;

◆ X [139/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [140/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GdrvRetryBehaviour::NAME: return #NAME;

◆ X [141/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [142/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case DriveFaultBehaviour::NAME: return #NAME;

◆ X [143/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [144/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case IitMonitor::NAME: return #NAME;

◆ X [145/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [146/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case TemperatureProtection::NAME: return #NAME;

◆ X [147/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [148/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case HeartbeatMonitoring::NAME: return #NAME;

◆ X [149/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [150/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case HeartbeatMonitoringConfig::NAME: return #NAME;

◆ X [151/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [152/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case BrakeChopper::NAME: return #NAME;

◆ X [153/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [154/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case MechanicalBrake::NAME: return #NAME;

◆ X [155/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [156/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ReferenceSearch::NAME: return #NAME;

◆ X [157/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [158/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ReferenceSwitchSearchMode::NAME: return #NAME;

◆ X [159/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [160/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ReferenceSearchCommand::NAME: return #NAME;

◆ X [161/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [162/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ReferenceSearchStatus::NAME: return #NAME;

◆ X [163/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [164/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case StepDir::NAME: return #NAME;

◆ X [165/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [166/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case StepDirStepDividerShift::NAME: return #NAME;

◆ X [167/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [168/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case HibernationWakeup::NAME: return #NAME;

◆ X [169/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [170/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case PowerDownTimeout::NAME: return #NAME;

◆ X [171/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [172/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case SystemStatusSupply::NAME: return #NAME;

◆ X [173/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [174/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case InternalMeasurement::NAME: return #NAME;

◆ X [175/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [176/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case CombinedDiagnosticValues::NAME: return #NAME;

◆ X [177/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [178/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case ErrorsAndFlags::NAME: return #NAME;

◆ X [179/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [180/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GeneralStatusFlags::NAME: return #NAME;

◆ X [181/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [182/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GeneralErrorFlags::NAME: return #NAME;

◆ X [183/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [184/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case GateDriverErrorFlags::NAME: return #NAME;

◆ X [185/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,

◆ X [186/187]

#define X (   NAME,
  VALUE,
  DOC 
)    case AdcStatusFlags::NAME: return #NAME;

◆ X [187/187]

#define X (   NAME,
  VALUE,
  DOC 
)    NAME = VALUE DOC,