HF-TMC9660 Driver
Hardware Agnostic C++ Driver for the TMC9660
Loading...
Searching...
No Matches
TMC9660::CurrentSensing Struct Reference

Subsystem for configuring ADC-based current measurement. More...

#include <TMC9660.hpp>

Collaboration diagram for TMC9660::CurrentSensing:

Public Member Functions

bool setShuntType (tmc9660::tmcl::AdcShuntType shuntType) noexcept
 Set the ADC shunt type (Parameter 12: ADC_SHUNT_TYPE).
 
bool getShuntType (tmc9660::tmcl::AdcShuntType &shuntType) noexcept
 Get the ADC shunt type (Parameter 12: ADC_SHUNT_TYPE).
 
bool readRaw (int16_t &adc0, int16_t &adc1, int16_t &adc2, int16_t &adc3) noexcept
 Read raw ADC values (Parameters 13-16: ADC_I0_RAW ... ADC_I3_RAW).
 
bool setCSAGain (tmc9660::tmcl::CsaGain gain012, tmc9660::tmcl::CsaGain gain3) noexcept
 Set current sense amplifier gain (Parameters 17/18: CSA_GAIN_ADC_I0_TO_ADC_I2, CSA_GAIN_ADC_I3).
 
bool getCSAGain (tmc9660::tmcl::CsaGain &gain012, tmc9660::tmcl::CsaGain &gain3) noexcept
 Get current sense amplifier gain (Parameters 17/18: CSA_GAIN_ADC_I0_TO_ADC_I2, CSA_GAIN_ADC_I3).
 
bool setCSAFilter (tmc9660::tmcl::CsaFilter filter012, tmc9660::tmcl::CsaFilter filter3) noexcept
 Set current sense amplifier filter (Parameters 19/20: CSA_FILTER_ADC_I0_TO_ADC_I2, CSA_FILTER_ADC_I3).
 
bool getCSAFilter (tmc9660::tmcl::CsaFilter &filter012, tmc9660::tmcl::CsaFilter &filter3) noexcept
 Get current sense amplifier filter (Parameters 19/20: CSA_FILTER_ADC_I0_TO_ADC_I2, CSA_FILTER_ADC_I3).
 
bool setScalingFactor (uint16_t scalingFactor) noexcept
 Set current scaling factor (Parameter 21: CURRENT_SCALING_FACTOR).
 
bool getScalingFactor (uint16_t &scalingFactor) noexcept
 Get current scaling factor (Parameter 21: CURRENT_SCALING_FACTOR).
 
bool setPhaseAdcMapping (tmc9660::tmcl::AdcMapping ux1, tmc9660::tmcl::AdcMapping vx2, tmc9660::tmcl::AdcMapping wy1, tmc9660::tmcl::AdcMapping y2) noexcept
 Set ADC mapping for each phase (Parameters 22-25: PHASE_UX1_ADC_MAPPING ... PHASE_Y2_ADC_MAPPING).
 
bool getPhaseAdcMapping (tmc9660::tmcl::AdcMapping &ux1, tmc9660::tmcl::AdcMapping &vx2, tmc9660::tmcl::AdcMapping &wy1, tmc9660::tmcl::AdcMapping &y2) noexcept
 Get ADC mapping for each phase (Parameters 22-25: PHASE_UX1_ADC_MAPPING ... PHASE_Y2_ADC_MAPPING).
 
bool setScalingFactors (uint16_t scale0, uint16_t scale1, uint16_t scale2, uint16_t scale3) noexcept
 Set individual ADC scaling factors (Parameters 26-29: ADC_I0_SCALE ... ADC_I3_SCALE).
 
bool getScalingFactors (uint16_t &scale0, uint16_t &scale1, uint16_t &scale2, uint16_t &scale3) noexcept
 Get individual ADC scaling factors (Parameters 26-29: ADC_I0_SCALE ... ADC_I3_SCALE).
 
bool setInversion (tmc9660::tmcl::AdcInversion inv0, tmc9660::tmcl::AdcInversion inv1, tmc9660::tmcl::AdcInversion inv2, tmc9660::tmcl::AdcInversion inv3) noexcept
 Set ADC inversion (Parameters 30-33: ADC_I0_INVERTED ... ADC_I3_INVERTED).
 
bool getInversion (tmc9660::tmcl::AdcInversion &inv0, tmc9660::tmcl::AdcInversion &inv1, tmc9660::tmcl::AdcInversion &inv2, tmc9660::tmcl::AdcInversion &inv3) noexcept
 Get ADC inversion (Parameters 30-33: ADC_I0_INVERTED ... ADC_I3_INVERTED).
 
bool setOffsets (int16_t offset0, int16_t offset1, int16_t offset2, int16_t offset3) noexcept
 Set ADC offset (Parameters 34-37: ADC_I0_OFFSET ... ADC_I3_OFFSET).
 
bool getOffsets (int16_t &offset0, int16_t &offset1, int16_t &offset2, int16_t &offset3) noexcept
 Get ADC offset (Parameters 34-37: ADC_I0_OFFSET ... ADC_I3_OFFSET).
 
bool readScaledAndOffset (int16_t &adc0, int16_t &adc1, int16_t &adc2, int16_t &adc3) noexcept
 Read scaled and offset-compensated ADC values (Parameters 38-41: ADC_I0 ... ADC_I3).
 
bool calibrateOffsets (bool waitForCompletion=false, uint32_t timeoutMs=1000) noexcept
 Calibrate the ADC offsets for current measurement.
 
bool getCalibrationStatus (bool &isCalibrated) noexcept
 Check if ADC offset calibration has been completed.
 

Private Member Functions

 CurrentSensing (TMC9660 &parent) noexcept
 

Private Attributes

TMC9660driver
 

Friends

class TMC9660
 

Detailed Description

Subsystem for configuring ADC-based current measurement.

Constructor & Destructor Documentation

◆ CurrentSensing()

TMC9660::CurrentSensing::CurrentSensing ( TMC9660 parent)
inlineexplicitprivatenoexcept

Member Function Documentation

◆ calibrateOffsets()

bool TMC9660::CurrentSensing::calibrateOffsets ( bool  waitForCompletion = false,
uint32_t  timeoutMs = 1000 
)
noexcept

Calibrate the ADC offsets for current measurement.

Initiates a calibration sequence for the ADCs. This should be done:

  1. With the motor stationary
  2. With the commutation mode set to off
Parameters
waitForCompletionIf true, wait until calibration is completed
timeoutMsTimeout in milliseconds if waiting for completion
Returns
true if calibration was started (and completed if waitForCompletion is true)

◆ getCalibrationStatus()

bool TMC9660::CurrentSensing::getCalibrationStatus ( bool &  isCalibrated)
noexcept

Check if ADC offset calibration has been completed.

Parameters
[out]isCalibratedSet to true if calibration is complete
Returns
true if the status was read successfully

◆ getCSAFilter()

bool TMC9660::CurrentSensing::getCSAFilter ( tmc9660::tmcl::CsaFilter filter012,
tmc9660::tmcl::CsaFilter filter3 
)
noexcept

Get current sense amplifier filter (Parameters 19/20: CSA_FILTER_ADC_I0_TO_ADC_I2, CSA_FILTER_ADC_I3).

Parameters
[out]filter012CsaFilter enum value for ADC I0/I1/I2
[out]filter3CsaFilter enum value for ADC I3
Returns
true if successful

◆ getCSAGain()

bool TMC9660::CurrentSensing::getCSAGain ( tmc9660::tmcl::CsaGain gain012,
tmc9660::tmcl::CsaGain gain3 
)
noexcept

Get current sense amplifier gain (Parameters 17/18: CSA_GAIN_ADC_I0_TO_ADC_I2, CSA_GAIN_ADC_I3).

Parameters
[out]gain012CsaGain enum value for ADC I0/I1/I2
[out]gain3CsaGain enum value for ADC I3
Returns
true if successful

◆ getInversion()

bool TMC9660::CurrentSensing::getInversion ( tmc9660::tmcl::AdcInversion inv0,
tmc9660::tmcl::AdcInversion inv1,
tmc9660::tmcl::AdcInversion inv2,
tmc9660::tmcl::AdcInversion inv3 
)
noexcept

Get ADC inversion (Parameters 30-33: ADC_I0_INVERTED ... ADC_I3_INVERTED).

Parameters
[out]inv0AdcInversion enum value for ADC I0
[out]inv1AdcInversion enum value for ADC I1
[out]inv2AdcInversion enum value for ADC I2
[out]inv3AdcInversion enum value for ADC I3
Returns
true if all inversion flags were retrieved successfully

◆ getOffsets()

bool TMC9660::CurrentSensing::getOffsets ( int16_t &  offset0,
int16_t &  offset1,
int16_t &  offset2,
int16_t &  offset3 
)
noexcept

Get ADC offset (Parameters 34-37: ADC_I0_OFFSET ... ADC_I3_OFFSET).

Parameters
[out]offset0Offset for ADC I0 (-32768...32767)
[out]offset1Offset for ADC I1 (-32768...32767)
[out]offset2Offset for ADC I2 (-32768...32767)
[out]offset3Offset for ADC I3 (-32768...32767)
Returns
true if all offsets were retrieved successfully

◆ getPhaseAdcMapping()

bool TMC9660::CurrentSensing::getPhaseAdcMapping ( tmc9660::tmcl::AdcMapping ux1,
tmc9660::tmcl::AdcMapping vx2,
tmc9660::tmcl::AdcMapping wy1,
tmc9660::tmcl::AdcMapping y2 
)
noexcept

Get ADC mapping for each phase (Parameters 22-25: PHASE_UX1_ADC_MAPPING ... PHASE_Y2_ADC_MAPPING).

Parameters
[out]ux1AdcMapping enum value for UX1
[out]vx2AdcMapping enum value for VX2
[out]wy1AdcMapping enum value for WY1
[out]y2AdcMapping enum value for Y2
Returns
true if all mappings were retrieved successfully

◆ getScalingFactor()

bool TMC9660::CurrentSensing::getScalingFactor ( uint16_t &  scalingFactor)
noexcept

Get current scaling factor (Parameter 21: CURRENT_SCALING_FACTOR).

Parameters
[out]scalingFactorScaling factor (1...65535)
Returns
true if successful

◆ getScalingFactors()

bool TMC9660::CurrentSensing::getScalingFactors ( uint16_t &  scale0,
uint16_t &  scale1,
uint16_t &  scale2,
uint16_t &  scale3 
)
noexcept

Get individual ADC scaling factors (Parameters 26-29: ADC_I0_SCALE ... ADC_I3_SCALE).

Parameters
[out]scale0Scaling factor for ADC I0 (1...32767)
[out]scale1Scaling factor for ADC I1 (1...32767)
[out]scale2Scaling factor for ADC I2 (1...32767)
[out]scale3Scaling factor for ADC I3 (1...32767)
Returns
true if all scales were retrieved successfully

◆ getShuntType()

bool TMC9660::CurrentSensing::getShuntType ( tmc9660::tmcl::AdcShuntType shuntType)
noexcept

Get the ADC shunt type (Parameter 12: ADC_SHUNT_TYPE).

Parameters
[out]shuntTypeAdcShuntType enum value
Returns
true if successful

◆ readRaw()

bool TMC9660::CurrentSensing::readRaw ( int16_t &  adc0,
int16_t &  adc1,
int16_t &  adc2,
int16_t &  adc3 
)
noexcept

Read raw ADC values (Parameters 13-16: ADC_I0_RAW ... ADC_I3_RAW).

Parameters
[out]adc0Raw ADC I0
[out]adc1Raw ADC I1
[out]adc2Raw ADC I2
[out]adc3Raw ADC I3
Returns
true if all values were read successfully

◆ readScaledAndOffset()

bool TMC9660::CurrentSensing::readScaledAndOffset ( int16_t &  adc0,
int16_t &  adc1,
int16_t &  adc2,
int16_t &  adc3 
)
noexcept

Read scaled and offset-compensated ADC values (Parameters 38-41: ADC_I0 ... ADC_I3).

Parameters
[out]adc0Scaled/offset ADC I0
[out]adc1Scaled/offset ADC I1
[out]adc2Scaled/offset ADC I2
[out]adc3Scaled/offset ADC I3
Returns
true if all values were read successfully

◆ setCSAFilter()

bool TMC9660::CurrentSensing::setCSAFilter ( tmc9660::tmcl::CsaFilter  filter012,
tmc9660::tmcl::CsaFilter  filter3 
)
noexcept

Set current sense amplifier filter (Parameters 19/20: CSA_FILTER_ADC_I0_TO_ADC_I2, CSA_FILTER_ADC_I3).

Parameters
filter012CsaFilter enum value for ADC I0/I1/I2
filter3CsaFilter enum value for ADC I3
Returns
true if successful

◆ setCSAGain()

bool TMC9660::CurrentSensing::setCSAGain ( tmc9660::tmcl::CsaGain  gain012,
tmc9660::tmcl::CsaGain  gain3 
)
noexcept

Set current sense amplifier gain (Parameters 17/18: CSA_GAIN_ADC_I0_TO_ADC_I2, CSA_GAIN_ADC_I3).

Parameters
gain012CsaGain enum value for ADC I0/I1/I2
gain3CsaGain enum value for ADC I3
Returns
true if successful

◆ setInversion()

bool TMC9660::CurrentSensing::setInversion ( tmc9660::tmcl::AdcInversion  inv0,
tmc9660::tmcl::AdcInversion  inv1,
tmc9660::tmcl::AdcInversion  inv2,
tmc9660::tmcl::AdcInversion  inv3 
)
noexcept

Set ADC inversion (Parameters 30-33: ADC_I0_INVERTED ... ADC_I3_INVERTED).

Parameters
inv0AdcInversion enum value for ADC I0
inv1AdcInversion enum value for ADC I1
inv2AdcInversion enum value for ADC I2
inv3AdcInversion enum value for ADC I3
Returns
true if all inversion flags were set successfully

◆ setOffsets()

bool TMC9660::CurrentSensing::setOffsets ( int16_t  offset0,
int16_t  offset1,
int16_t  offset2,
int16_t  offset3 
)
noexcept

Set ADC offset (Parameters 34-37: ADC_I0_OFFSET ... ADC_I3_OFFSET).

Parameters
offset0Offset for ADC I0 (-32768...32767)
offset1Offset for ADC I1 (-32768...32767)
offset2Offset for ADC I2 (-32768...32767)
offset3Offset for ADC I3 (-32768...32767)
Returns
true if all offsets were set successfully

◆ setPhaseAdcMapping()

bool TMC9660::CurrentSensing::setPhaseAdcMapping ( tmc9660::tmcl::AdcMapping  ux1,
tmc9660::tmcl::AdcMapping  vx2,
tmc9660::tmcl::AdcMapping  wy1,
tmc9660::tmcl::AdcMapping  y2 
)
noexcept

Set ADC mapping for each phase (Parameters 22-25: PHASE_UX1_ADC_MAPPING ... PHASE_Y2_ADC_MAPPING).

Parameters
ux1AdcMapping enum value for UX1
vx2AdcMapping enum value for VX2
wy1AdcMapping enum value for WY1
y2AdcMapping enum value for Y2
Returns
true if all mappings were set successfully

◆ setScalingFactor()

bool TMC9660::CurrentSensing::setScalingFactor ( uint16_t  scalingFactor)
noexcept

Set current scaling factor (Parameter 21: CURRENT_SCALING_FACTOR).

Parameters
scalingFactorScaling factor (1...65535)
Returns
true if successful

◆ setScalingFactors()

bool TMC9660::CurrentSensing::setScalingFactors ( uint16_t  scale0,
uint16_t  scale1,
uint16_t  scale2,
uint16_t  scale3 
)
noexcept

Set individual ADC scaling factors (Parameters 26-29: ADC_I0_SCALE ... ADC_I3_SCALE).

Parameters
scale0Scaling factor for ADC I0 (1...32767)
scale1Scaling factor for ADC I1 (1...32767)
scale2Scaling factor for ADC I2 (1...32767)
scale3Scaling factor for ADC I3 (1...32767)
Returns
true if all scales were set successfully

◆ setShuntType()

bool TMC9660::CurrentSensing::setShuntType ( tmc9660::tmcl::AdcShuntType  shuntType)
noexcept

Set the ADC shunt type (Parameter 12: ADC_SHUNT_TYPE).

Parameters
shuntTypeAdcShuntType enum value
Returns
true if successful

Friends And Related Symbol Documentation

◆ TMC9660

friend class TMC9660
friend

Member Data Documentation

◆ driver

TMC9660& TMC9660::CurrentSensing::driver
private

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