75#include "max22200_version.h"
790 uint32_t hold_ma,
float hit_time_ms,
793 bool slew_rate_control_enabled =
false,
794 bool open_load_detection_enabled =
false,
795 bool plunger_movement_detection_enabled =
false,
796 bool hit_current_check_enabled =
false);
817 float hold_duty_percent,
float hit_time_ms,
820 bool slew_rate_control_enabled =
false,
821 bool open_load_detection_enabled =
false,
822 bool plunger_movement_detection_enabled =
false,
823 bool hit_current_check_enabled =
false);
859 mutable uint8_t last_fault_byte_;
864 void *fault_user_data_;
866 void *state_user_data_;
899 bool mode8 =
false)
const;
949 void updateStatistics(
bool success)
const;
Definition max22200.hpp:133
DriverStatus ReadRegister8(uint8_t bank, uint8_t &value) const
Read 8-bit MSB of a register (fast 8-bit mode)
Definition max22200.ipp:526
DriverStatus SetChannelEnabled(uint8_t channel, bool enable)
Set a channel on or off (convenience when toggling from a variable)
Definition max22200.ipp:273
DriverStatus DisableDevice()
Disable device (ENABLE pin low); low-power state.
Definition max22200.ipp:485
DriverStatus SetDeviceEnable(bool enable)
Set ENABLE pin state (true = on, false = off)
Definition max22200.ipp:490
MAX22200(const MAX22200 &)=delete
~MAX22200()
Destructor — calls Deinitialize() if initialized.
Definition max22200.ipp:36
DriverStatus WriteRegister8(uint8_t bank, uint8_t value)
Write 8-bit MSB of a register (fast 8-bit mode)
Definition max22200.ipp:532
DriverStatistics GetStatistics() const
Definition max22200.ipp:546
void SetBoardConfig(const BoardConfig &config)
Set board configuration (IFS, max current, max duty)
Definition max22200.ipp:745
bool IsInitialized() const
Check if driver is initialized.
Definition max22200.ipp:154
DriverStatus GetFaultPinState(bool &fault_active) const
Read nFAULT pin state (true = fault active, false = no fault)
Definition max22200.ipp:501
DriverStatus EnableDevice()
Enable device (ENABLE pin high); SPI and channels can be used.
Definition max22200.ipp:480
MAX22200 & operator=(MAX22200 &&)=delete
DriverStatus SetFullBridgeState(uint8_t pair_index, FullBridgeState state)
Set full-bridge state for a channel pair (datasheet Table 7)
Definition max22200.ipp:311
DriverStatus SetHoldDutyPercent(uint8_t channel, float percent)
Set HOLD duty cycle in percent (VDR mode)
Definition max22200.ipp:962
MAX22200 & operator=(const MAX22200 &)=delete
static DriverStatus GetDutyLimits(bool master_clock_80khz, ChopFreq chop_freq, bool slew_rate_control_enabled, DutyLimits &limits)
Get duty cycle limits (δMIN, δMAX) for a configuration.
Definition max22200.ipp:1046
DriverStatus ReadRegister32(uint8_t bank, uint32_t &value) const
Read a 32-bit register by bank address.
Definition max22200.ipp:515
DriverStatus ClearChannelFaults(uint8_t channel_mask, FaultStatus *out_faults=nullptr) const
Clear fault flags for selected channels only (MAX22200A)
Definition max22200.ipp:363
void SetFaultCallback(FaultCallback callback, void *user_data)
Definition max22200.ipp:560
DriverStatus ReadFaultFlags(StatusConfig &status) const
Read fault flags from STATUS register.
Definition max22200.ipp:394
DriverStatus Deinitialize()
Deinitialize — disable channels, ACTIVE=0, ENABLE low.
Definition max22200.ipp:132
DriverStatus ClearAllFaults()
Clear all fault flags (read FAULT register and discard)
Definition max22200.ipp:357
DriverStatus SetHoldCurrentA(uint8_t channel, float amps)
Set HOLD current in Amps (CDR mode)
Definition max22200.ipp:807
DriverStatus GetHitCurrentMa(uint8_t channel, uint32_t &ma) const
Get HIT current in milliamps (CDR mode)
Definition max22200.ipp:842
DriverStatus GetChannelConfig(uint8_t channel, ChannelConfig &config) const
Read a channel's configuration.
Definition max22200.ipp:215
DriverStatus WriteDpmConfig(const DpmConfig &config)
Write DPM algorithm configuration (CFG_DPM register)
Definition max22200.ipp:421
MAX22200(MAX22200 &&)=default
DriverStatus ConfigureAllChannels(const ChannelConfigArray &configs)
Configure all channels.
Definition max22200.ipp:233
DriverStatus GetAllChannelConfigs(ChannelConfigArray &configs) const
Get all channel configurations.
Definition max22200.ipp:246
static bool IsValidChannel(uint8_t channel)
Definition max22200.hpp:829
DriverStatus DisableAllChannels()
Turn off all channels.
Definition max22200.ipp:292
DriverStatus WriteStatus(const StatusConfig &status)
Write the STATUS register (writable bits only)
Definition max22200.ipp:174
static constexpr uint8_t GetDriverVersionPatch() noexcept
Get the compiled driver patch version number.
Definition max22200.hpp:851
DriverStatus SetHoldCurrentPercent(uint8_t channel, float percent)
Set HOLD current as percentage of IFS (CDR mode)
Definition max22200.ipp:828
DriverStatus GetHoldDutyPercent(uint8_t channel, float &percent) const
Get HOLD duty cycle in percent (VDR mode)
Definition max22200.ipp:1013
DriverStatus ConfigureDpm(float start_current_ma, float dip_threshold_ma, float debounce_ms)
Configure DPM in real units (easy API)
Definition max22200.ipp:448
DriverStatus SetHitCurrentA(uint8_t channel, float amps)
Set HIT current in Amps (CDR mode)
Definition max22200.ipp:802
DriverStatus ReadDpmConfig(DpmConfig &config) const
Read DPM algorithm configuration (CFG_DPM register)
Definition max22200.ipp:410
static constexpr uint8_t GetDriverVersionMinor() noexcept
Get the compiled driver minor version number.
Definition max22200.hpp:846
DriverStatus DisableChannel(uint8_t channel)
Turn off a channel (set ONCHx = 0)
Definition max22200.ipp:268
void ResetStatistics()
Definition max22200.ipp:551
DriverStatus SetHitCurrentMa(uint8_t channel, uint32_t ma)
Set HIT current in milliamps (CDR mode)
Definition max22200.ipp:759
DriverStatus SetChannelsOn(uint8_t channel_mask)
Definition max22200.ipp:303
BoardConfig GetBoardConfig() const
Get current board configuration.
Definition max22200.ipp:750
DriverStatus WriteRegister32(uint8_t bank, uint32_t value)
Write a 32-bit register by bank address.
Definition max22200.ipp:521
DriverStatus SetHitDutyPercent(uint8_t channel, float percent)
Set HIT duty cycle in percent (VDR mode)
Definition max22200.ipp:926
MAX22200(SpiType &spi_interface)
Constructor (SPI only; set board config later with SetBoardConfig())
Definition max22200.ipp:22
static constexpr const char * GetDriverVersion() noexcept
Get the compiled driver version string.
Definition max22200.hpp:836
DriverStatus ReadFaultRegisterSelectiveClear(uint8_t ocp_mask, uint8_t hhf_mask, uint8_t olf_mask, uint8_t dpm_mask, FaultStatus &faults) const
[Advanced] Read FAULT register with per-type selective clear (MAX22200A)
Definition max22200.ipp:375
DriverStatus ConfigureChannelCdr(uint8_t channel, uint32_t hit_ma, uint32_t hold_ma, float hit_time_ms, SideMode side_mode=SideMode::LOW_SIDE, ChopFreq chop_freq=ChopFreq::FMAIN_DIV4, bool slew_rate_control_enabled=false, bool open_load_detection_enabled=false, bool plunger_movement_detection_enabled=false, bool hit_current_check_enabled=false)
Configure channel in real units (CDR mode)
Definition max22200.ipp:1150
DriverStatus SetDpmEnabledChannels(uint8_t channel_mask)
Definition max22200.ipp:428
DriverStatus GetHoldCurrentMa(uint8_t channel, uint32_t &ma) const
Get HOLD current in milliamps (CDR mode)
Definition max22200.ipp:860
DriverStatus GetHitDutyPercent(uint8_t channel, float &percent) const
Get HIT duty cycle in percent (VDR mode)
Definition max22200.ipp:994
DriverStatus EnableChannel(uint8_t channel)
Turn on a channel (set ONCHx = 1)
Definition max22200.ipp:263
DriverStatus GetHoldCurrentPercent(uint8_t channel, float &percent) const
Get HOLD current as percentage of IFS (CDR mode)
Definition max22200.ipp:900
DriverStatus SetHoldCurrentMa(uint8_t channel, uint32_t ma)
Set HOLD current in milliamps (CDR mode)
Definition max22200.ipp:781
DriverStatus ConfigureChannel(uint8_t channel, const ChannelConfig &config)
Configure a channel (write full 32-bit CFG_CHx register)
Definition max22200.ipp:188
static constexpr uint8_t GetDriverVersionMajor() noexcept
Get the compiled driver major version number.
Definition max22200.hpp:841
DriverStatus GetHitTimeMs(uint8_t channel, float &ms) const
Get HIT time in milliseconds.
Definition max22200.ipp:1128
void SetStateChangeCallback(StateChangeCallback callback, void *user_data)
Definition max22200.ipp:567
DriverStatus GetHitCurrentPercent(uint8_t channel, float &percent) const
Get HIT current as percentage of IFS (CDR mode)
Definition max22200.ipp:878
DriverStatus SetHitCurrentPercent(uint8_t channel, float percent)
Set HIT current as percentage of IFS (CDR mode)
Definition max22200.ipp:812
DriverStatus SetHitTimeMs(uint8_t channel, float ms)
Set HIT time in milliseconds.
Definition max22200.ipp:1100
DriverStatus Initialize()
Initialize the driver per datasheet flowchart (Figure 6)
Definition max22200.ipp:47
DriverStatus ReadFaultRegister(FaultStatus &faults) const
Read per-channel fault register (FAULT)
Definition max22200.ipp:346
DriverStatus ClearFaultFlags()
Clear fault flags by reading STATUS register.
Definition max22200.ipp:399
DriverStatus SetAllChannelsEnabled(bool enable)
Set all channels on or off at once (convenience when toggling from a variable)
Definition max22200.ipp:297
DriverStatus ConfigureChannelVdr(uint8_t channel, float hit_duty_percent, float hold_duty_percent, float hit_time_ms, SideMode side_mode=SideMode::LOW_SIDE, ChopFreq chop_freq=ChopFreq::FMAIN_DIV4, bool slew_rate_control_enabled=false, bool open_load_detection_enabled=false, bool plunger_movement_detection_enabled=false, bool hit_current_check_enabled=false)
Configure channel in real units (VDR mode)
Definition max22200.ipp:1186
uint8_t GetLastFaultByte() const
Definition max22200.ipp:537
DriverStatus EnableAllChannels()
Turn on all channels.
Definition max22200.ipp:287
DriverStatus ReadStatus(StatusConfig &status) const
Read the full 32-bit STATUS register.
Definition max22200.ipp:163
Template implementation for MAX22200 driver.
Register definitions and constants for MAX22200 IC.
CRTP-based template interface for SPI communication.
Type definitions and structures for MAX22200 driver.
Definition max22200.ipp:15
std::array< ChannelConfig, NUM_CHANNELS_ > ChannelConfigArray
Array type for channel configurations.
Definition max22200_types.hpp:970
SideMode
High-side / Low-side selection (HSnLS bit in CFG_CHx[6])
Definition max22200_types.hpp:123
@ LOW_SIDE
Low-side driver (HSnLS = 0) — supports CDR and VDR.
DriverStatus
Driver status enumeration.
Definition max22200_types.hpp:923
FullBridgeState
Full-bridge state for a channel pair (datasheet Table 7)
Definition max22200_types.hpp:913
const char * GetDriverVersion() noexcept
Definition max22200.hpp:953
ChopFreq
Chopping frequency setting (FREQ_CFG bits in CFG_CHx[5:4])
Definition max22200_types.hpp:211
@ FMAIN_DIV4
FreqMain / 4 (fCHOP = 25kHz if FREQM=0, 20kHz if FREQM=1). Valid with SRC=1.
void(*)(uint8_t channel, ChannelState old_state, ChannelState new_state, void *user_data) StateChangeCallback
Callback function type for channel state changes.
Definition max22200_types.hpp:981
constexpr uint8_t NUM_CHANNELS_
Number of channels on the MAX22200.
Definition max22200_registers.hpp:60
void(*)(uint8_t channel, FaultType fault_type, void *user_data) FaultCallback
Callback function type for fault events.
Definition max22200_types.hpp:975
Board/scale configuration for unit-based APIs.
Definition max22200_types.hpp:1010
Channel configuration structure.
Definition max22200_types.hpp:360
DPM (Detection of Plunger Movement) algorithm configuration.
Definition max22200_types.hpp:882
Driver statistics structure.
Definition max22200_types.hpp:1082
Duty cycle limits (δMIN, δMAX) for a given configuration.
Definition max22200_types.hpp:1057
Per-channel fault information from FAULT register (0x09)
Definition max22200_types.hpp:805
STATUS register structure.
Definition max22200_types.hpp:634