HF-TMC9660 Driver 0.1.0-dev
Hardware Agnostic C++ Driver for the TMC9660
Loading...
Searching...
No Matches
tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig Struct Reference

Configuration structure for auto-configuring current sensing. More...

#include <tmc9660.hpp>

Public Attributes

float shuntResistance_mOhm
 Nominal shunt resistor value in milliohms (e.g. 3.0 for 3 mΩ)
 
float expectedPeakCurrent_A
 Expected peak phase current in amperes (e.g., 3.0 for 3A)
 
tmc9660::tmcl::MotorType motorType
 Motor type (used for default ADC inversion settings)
 
bool usePeakScaling
 If true, use peak scaling (recommended for FOC/BLDC). If false, use RMS.
 
tmc9660::tmcl::AdcShuntType shuntType
 Shunt type configuration.
 
tmc9660::tmcl::CsaFilter csaFilter
 CSA filter time constant.
 
float actualShuntR_adc0_mOhm
 Actual shunt resistance for ADC_I0 in mΩ
 
float actualShuntR_adc1_mOhm
 Actual shunt resistance for ADC_I1 in mΩ
 
float actualShuntR_adc2_mOhm
 Actual shunt resistance for ADC_I2 in mΩ
 
float actualShuntR_adc3_mOhm
 Actual shunt resistance for ADC_I3 in mΩ
 
std::optional< tmc9660::tmcl::AdcMappingphaseU_adcMapping
 ADC mapping for phase U (UX1). Default: ADC_I0.
 
std::optional< tmc9660::tmcl::AdcMappingphaseV_adcMapping
 ADC mapping for phase V (VX2). Default: ADC_I1.
 
std::optional< tmc9660::tmcl::AdcMappingphaseW_adcMapping
 ADC mapping for phase W (WY1). Default: ADC_I2.
 
std::optional< tmc9660::tmcl::AdcMappingphaseY2_adcMapping
 ADC mapping for phase Y2. Default: ADC_I3.
 
std::optional< tmc9660::tmcl::AdcInversionadc0_inverted
 Inversion for ADC_I0. Default: based on motor type.
 
std::optional< tmc9660::tmcl::AdcInversionadc1_inverted
 Inversion for ADC_I1. Default: based on motor type.
 
std::optional< tmc9660::tmcl::AdcInversionadc2_inverted
 Inversion for ADC_I2. Default: based on motor type.
 
std::optional< tmc9660::tmcl::AdcInversionadc3_inverted
 Inversion for ADC_I3. Default: based on motor type.
 
bool autoCalibrate
 If true, automatically calibrate ADC offsets after configuration.
 
uint32_t calibrationTimeoutMs
 Timeout in milliseconds for auto-calibration verification.
 

Detailed Description

template<typename CommType>
struct tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig

Configuration structure for auto-configuring current sensing.

This struct contains all parameters needed to configure the TMC9660 current sensing system. Most fields have sensible defaults based on the motor type and datasheet recommendations.

// Example: Basic BLDC configuration
config.shuntResistance_mOhm = 3.0;
config.expectedPeakCurrent_A = 3.0;
config.motorType = tmc9660::tmcl::MotorType::BLDC_MOTOR;
driver.currentSensing.configureAuto(config);
// Example: With custom ADC mapping and inversion
config.phaseU_adcMapping = tmc9660::tmcl::AdcMapping::ADC_I0;
config.phaseV_adcMapping = tmc9660::tmcl::AdcMapping::ADC_I1;
config.phaseW_adcMapping = tmc9660::tmcl::AdcMapping::ADC_I2;
config.phaseY2_adcMapping = tmc9660::tmcl::AdcMapping::ADC_I3;
config.adc0_inverted = tmc9660::tmcl::AdcInversion::INVERTED;
config.adc1_inverted = tmc9660::tmcl::AdcInversion::INVERTED;
config.adc2_inverted = tmc9660::tmcl::AdcInversion::INVERTED;
config.adc3_inverted = tmc9660::tmcl::AdcInversion::INVERTED;
config.autoCalibrate = true;
driver.currentSensing.configureAuto(config);
SPI status codes as per TMC9660 Parameter Mode.
Definition tmc9660_comm_interface.hpp:514
Configuration structure for auto-configuring current sensing.
Definition tmc9660.hpp:888
TMC9660 & driver
Definition tmc9660.hpp:1038

Member Data Documentation

◆ actualShuntR_adc0_mOhm

template<typename CommType >
float tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::actualShuntR_adc0_mOhm
Initial value:
=
std::numeric_limits<float>::quiet_NaN()

Actual shunt resistance for ADC_I0 in mΩ

◆ actualShuntR_adc1_mOhm

template<typename CommType >
float tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::actualShuntR_adc1_mOhm
Initial value:
=
std::numeric_limits<float>::quiet_NaN()

Actual shunt resistance for ADC_I1 in mΩ

◆ actualShuntR_adc2_mOhm

template<typename CommType >
float tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::actualShuntR_adc2_mOhm
Initial value:
=
std::numeric_limits<float>::quiet_NaN()

Actual shunt resistance for ADC_I2 in mΩ

◆ actualShuntR_adc3_mOhm

template<typename CommType >
float tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::actualShuntR_adc3_mOhm
Initial value:
=
std::numeric_limits<float>::quiet_NaN()

Actual shunt resistance for ADC_I3 in mΩ

◆ adc0_inverted

template<typename CommType >
std::optional<tmc9660::tmcl::AdcInversion> tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::adc0_inverted

Inversion for ADC_I0. Default: based on motor type.

◆ adc1_inverted

template<typename CommType >
std::optional<tmc9660::tmcl::AdcInversion> tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::adc1_inverted

Inversion for ADC_I1. Default: based on motor type.

◆ adc2_inverted

template<typename CommType >
std::optional<tmc9660::tmcl::AdcInversion> tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::adc2_inverted

Inversion for ADC_I2. Default: based on motor type.

◆ adc3_inverted

template<typename CommType >
std::optional<tmc9660::tmcl::AdcInversion> tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::adc3_inverted

Inversion for ADC_I3. Default: based on motor type.

◆ autoCalibrate

template<typename CommType >
bool tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::autoCalibrate
Initial value:
=
false

If true, automatically calibrate ADC offsets after configuration.

◆ calibrationTimeoutMs

template<typename CommType >
uint32_t tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::calibrationTimeoutMs
Initial value:
=
2000

Timeout in milliseconds for auto-calibration verification.

◆ csaFilter

template<typename CommType >
tmc9660::tmcl::CsaFilter tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::csaFilter
Initial value:
=
tmc9660::tmcl::CsaFilter::T_1_0_MICROSEC

CSA filter time constant.

◆ expectedPeakCurrent_A

template<typename CommType >
float tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::expectedPeakCurrent_A

Expected peak phase current in amperes (e.g., 3.0 for 3A)

◆ motorType

template<typename CommType >
tmc9660::tmcl::MotorType tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::motorType

Motor type (used for default ADC inversion settings)

◆ phaseU_adcMapping

template<typename CommType >
std::optional<tmc9660::tmcl::AdcMapping> tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::phaseU_adcMapping

ADC mapping for phase U (UX1). Default: ADC_I0.

◆ phaseV_adcMapping

template<typename CommType >
std::optional<tmc9660::tmcl::AdcMapping> tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::phaseV_adcMapping

ADC mapping for phase V (VX2). Default: ADC_I1.

◆ phaseW_adcMapping

template<typename CommType >
std::optional<tmc9660::tmcl::AdcMapping> tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::phaseW_adcMapping

ADC mapping for phase W (WY1). Default: ADC_I2.

◆ phaseY2_adcMapping

template<typename CommType >
std::optional<tmc9660::tmcl::AdcMapping> tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::phaseY2_adcMapping

ADC mapping for phase Y2. Default: ADC_I3.

◆ shuntResistance_mOhm

template<typename CommType >
float tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::shuntResistance_mOhm

Nominal shunt resistor value in milliohms (e.g. 3.0 for 3 mΩ)

◆ shuntType

template<typename CommType >
tmc9660::tmcl::AdcShuntType tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::shuntType
Initial value:
=
tmc9660::tmcl::AdcShuntType::BOTTOM_SHUNTS

Shunt type configuration.

◆ usePeakScaling

template<typename CommType >
bool tmc9660::TMC9660< CommType >::CurrentSensing::AutoConfig::usePeakScaling
Initial value:
=
true

If true, use peak scaling (recommended for FOC/BLDC). If false, use RMS.


The documentation for this struct was generated from the following file: