Data Structures | |
class | Tle94112 |
represents a basic TLE94112 More... | |
Macros | |
#define | TLE94112_NUM_HB 13 |
the number of halfbridges on a TLE94112 (including no halfbridge) | |
#define | TLE94112_NUM_PWM 4 |
the number of pwm modes for a halfbridge (including no pwm) | |
#define | TLE94112_NUM_CTRL_REGS 12 |
the number of control registers in a TLE94112 | |
#define | TLE94112_NUM_STATUS_REGS 7 |
the number of status registers in a TLE94112 | |
Error codes | |
enum | tle94112::Error_t { tle94112::OK = 0 , tle94112::INTF_ERROR = -1 , tle94112::CONF_ERROR = -2 , tle94112::READ_ERROR = -3 , tle94112::WRITE_ERROR = -4 } |
#define | REG_ACT_1 0x03 |
#define | REG_ACT_2 0x43 |
#define | REG_ACT_3 0x23 |
#define | REG_MODE_1 0x63 |
#define | REG_MODE_2 0x13 |
#define | REG_MODE_3 0x53 |
#define | REG_PWM_CH_FREQ 0x33 |
#define | REG_PWM_DC_1 0x73 |
#define | REG_PWM_DC_2 0x0B |
#define | REG_PWM_DC_3 0x4B |
#define | REG_SYS_DIAG 0x1B |
#define | REG_ERR1 0x5B |
#define | REG_ERR2 0x3B |
#define | REG_ERR3 0x7B |
#define | REG_ERR4 0x07 |
#define | REG_ERR5 0x47 |
#define | REG_ERR6 0x27 |
#define | REG_FW_OL 0x2B |
#define | REG_FW_CTRL 0x6B |
#define | HL_HL 0b10011001 |
#define | HL_LH 0b10010110 |
#define | LH_HL 0b01101001 |
#define | LH_LH 0b01100110 |
#define | HH_LL 0b10100101 |
#define | LL_HH 0b01011010 |
class Tle94112 |
represents a basic TLE94112
This class provides a simple API for connecting and controlling motors. Each motor is assigned to a Tle94112 which acts as output driver. Calls to Tle94112Motor instances are mapped to calls to Tle94112. Therefore, this class does not bring new features, it does only provide further abstraction.
Public Types | |
enum | HalfBridge { TLE_NOHB = 0 , TLE_HB1 , TLE_HB2 , TLE_HB3 , TLE_HB4 , TLE_HB5 , TLE_HB6 , TLE_HB7 , TLE_HB8 , TLE_HB9 , TLE_HB10 , TLE_HB11 , TLE_HB12 } |
enum for the halfbridges on a TLE94112 More... | |
enum | PWMChannel { TLE_NOPWM = 0 , TLE_PWM1 , TLE_PWM2 , TLE_PWM3 } |
enum for the PWM channels of a halfbridge on TLE94112 More... | |
enum | HBState { TLE_FLOATING = 0b00 , TLE_LOW = 0b01 , TLE_HIGH = 0b10 } |
enum for the output states of a halfbridge More... | |
enum | HBOCState { TLE_NONE = 0b00 , TLE_LOWSIDE = 0b01 , TLE_HIGHSIDE = 0b10 } |
enum for the overcurrent states of a halfbridge More... | |
enum | PWMFreq { TLE_FREQOFF = 0b00 , TLE_FREQ80HZ , TLE_FREQ100HZ , TLE_FREQ200HZ } |
enum for the frequencies of a PWM channel More... | |
enum | DiagFlag { TLE_SPI_ERROR = 0x80 , TLE_LOAD_ERROR = 0x40 , TLE_UNDER_VOLTAGE = 0x20 , TLE_OVER_VOLTAGE = 0x10 , TLE_POWER_ON_RESET = 0x08 , TLE_TEMP_SHUTDOWN = 0x04 , TLE_TEMP_WARNING = 0x02 } |
enum for the flags in the register SYS_DIAG1 More... | |
Public Member Functions | |
Tle94112 () | |
standard constructor with default pin assignment | |
Tle94112 (SPIC *sBus, GPIOC *cs, GPIOC *en, Timer *timer) | |
constructor with pal instances | |
~Tle94112 () | |
standard destructor switches shield off | |
void | begin (void) |
enables and initializes the TLE94112 | |
void | end (void) |
deactivates all outputs and disables the TLE94112 | |
void | configHB (HalfBridge hb, HBState state, PWMChannel pwm) |
sets the output state and the PWM channel for a halfbridge (only for passive freewheeling) | |
void | configHB (HalfBridge hb, HBState state, PWMChannel pwm, uint8_t activeFW) |
sets the output state and the PWM channel for a halfbridge (allows active freewheeling) | |
void | configPWM (PWMChannel pwm, PWMFreq freq, uint8_t dutyCycle) |
sets the frequency and duty cycle for a PWM channel | |
uint8_t | setLedMode (HalfBridge hb, uint8_t active) |
sets LED mode on compatible half bridges (half bridge 1 or 2 of TLE94112) | |
uint8_t | getSysDiagnosis () |
returns a diagnosis value for error detection | |
uint8_t | getSysDiagnosis (DiagFlag mask) |
shows if errors of a specific type have occurred | |
uint8_t | getSysDiagnosis (uint8_t mask) |
shows if errors of a specific type have occurred | |
uint8_t | getHBOverCurrent (HalfBridge hb) |
gets the overcurrent error flag bit for a specific halfbridge | |
uint8_t | getHBOpenLoad (HalfBridge hb) |
gets the openload error flag bit for a specific halfbridge | |
void | clearErrors () |
clears all clearable error flags | |
void | directWriteReg (uint8_t reg, uint8_t data) |
writes data bits directly to a register of the TLE94112 | |
uint8_t | readStatusReg (uint8_t reg) |
reads one byte from a status register of the TLE94112 | |
Data Fields | |
SPIC * | sBus |
GPIOC * | cs |
GPIOC * | en |
Timer * | timer |
Static Public Attributes | |
static const uint8_t | TLE_STATUS_OK = 0U |
Reference value of Status Register. | |
Protected Types | |
enum | CtrlRegisters { HB_ACT_1_CTRL = 0 , HB_ACT_2_CTRL , HB_ACT_3_CTRL , HB_MODE_1_CTRL , HB_MODE_2_CTRL , HB_MODE_3_CTRL , PWM_CH_FREQ_CTRL , PWM1_DC_CTRL , PWM2_DC_CTRL , PWM3_DC_CTRL , FW_OL_CTRL , FW_CTRL } |
enum for the control registers in a TLE94112 More... | |
enum | StatusRegisters { SYS_DIAG1 = 0 , OP_ERROR_1_STAT , OP_ERROR_2_STAT , OP_ERROR_3_STAT , OP_ERROR_4_STAT , OP_ERROR_5_STAT , OP_ERROR_6_STAT } |
enum for the status registers in a TLE94112 More... | |
Protected Member Functions | |
void | init (void) |
initializes this object, automatically called by begin() | |
void | _configHB (uint8_t hb, uint8_t state, uint8_t pwm, uint8_t activeFW) |
sets the output state and the PWM channel for a halfbridge automatically called by the public version of configHB | |
void | _configPWM (uint8_t pwm, uint8_t freq, uint8_t dutyCycle) |
sets the frequency and duty cycle for a PWM channel automatically called by the public version of configPWM | |
uint8_t | _getHBOverCurrent (uint8_t hb) |
gets the overcurrent error flag bit for a specific halfbridge automatically called by the public version of getHBOverCurrent | |
uint8_t | _getHBOpenLoad (uint8_t hb) |
gets the openload error flag bit for a specific halfbridge automatically called by the public version of getHBOpenLoad | |
void | writeReg (uint8_t reg, uint8_t mask, uint8_t shift, uint8_t data) |
writes data bits to a control register of the TLE94112 | |
uint8_t | readStatusReg (uint8_t reg, uint8_t mask, uint8_t shift) |
reads some bits from a status register of the TLE94112 | |
void | clearStatusReg (uint8_t reg) |
clears a status register by writing 0x00 to it | |
Protected Attributes | |
HalfBridge_t | mHalfBridges [TLE94112_NUM_HB] |
array of register locations for halfbridges | |
PWMchannel_t | mPwmChannels [TLE94112_NUM_PWM] |
array of register locations for PWM channels | |
uint8_t | mCtrlRegAddresses [TLE94112_NUM_CTRL_REGS] |
mapping array for control register addresses | |
uint8_t | mCtrlRegData [TLE94112_NUM_CTRL_REGS] |
mirror array for control register data | |
uint8_t | mStatusRegAddresses [TLE94112_NUM_STATUS_REGS] |
mapping array for status register addresses | |
uint8_t | mEnabled |
|
protected |
|
protected |
Tle94112::Tle94112 | ( | void | ) |
standard constructor with default pin assignment
constructor with pal instances
Tle94112::~Tle94112 | ( | ) |
standard destructor switches shield off
enables and initializes the TLE94112
deactivates all outputs and disables the TLE94112
void Tle94112::configHB | ( | HalfBridge | hb, |
HBState | state, | ||
PWMChannel | pwm | ||
) |
sets the output state and the PWM channel for a halfbridge (only for passive freewheeling)
hb | halfbridge which will be configured |
state | sets the output voltage to high, low or floating |
pwm | selects a PWM channel for PWM output |
void Tle94112::configHB | ( | HalfBridge | hb, |
HBState | state, | ||
PWMChannel | pwm, | ||
uint8_t | activeFW | ||
) |
sets the output state and the PWM channel for a halfbridge (allows active freewheeling)
hb | halfbridge which will be configured |
state | sets the output voltage to high, low or floating |
pwm | selects a PWM channel for PWM output |
activeFW | 1 for active freewheeling 0 for passive freewheeling (default) |
void Tle94112::configPWM | ( | PWMChannel | pwm, |
PWMFreq | freq, | ||
uint8_t | dutyCycle | ||
) |
sets the frequency and duty cycle for a PWM channel
pwm | PWM channel which will be configured |
freq | selects the PWM output frequency |
dutyCycle | a value from 0 to 255 which sets the dutyCycle |
uint8_t Tle94112::setLedMode | ( | HalfBridge | hb, |
uint8_t | active | ||
) |
sets LED mode on compatible half bridges (half bridge 1 or 2 of TLE94112)
hb | compatible half bridge to set LED mode |
active | LED mode active (1) or inactive (0) |
uint8_t Tle94112::getSysDiagnosis | ( | ) |
returns a diagnosis value for error detection
shows if errors of a specific type have occurred
mask | mask to filter for a specific flag |
shows if errors of a specific type have occurred
mask | mask to filter for one or more specific flags this can be a disjunction of DiagFlag values |
uint8_t Tle94112::getHBOverCurrent | ( | HalfBridge | hb | ) |
gets the overcurrent error flag bit for a specific halfbridge
hb | halfbridge thats overcurrent flag will be returned |
uint8_t Tle94112::getHBOpenLoad | ( | HalfBridge | hb | ) |
gets the openload error flag bit for a specific halfbridge
hb | halfbridge thats openload flag will be returned |
void Tle94112::clearErrors | ( | ) |
clears all clearable error flags
writes data bits directly to a register of the TLE94112
reg | address of the register to be written to. |
data | the data byte that has to be written. |
reads one byte from a status register of the TLE94112
reg | status register number(mapping array index / StatusRegisters constant) of the register |
|
protected |
initializes this object, automatically called by begin()
< initial control register configuration
< status register configuration
< bit masking for all halfbridges
< bit masking for all pwm channels
sets the output state and the PWM channel for a halfbridge automatically called by the public version of configHB
hb | halfbridge which will be configured |
state | sets the output voltage to high, low or floating |
pwm | selects a PWM channel for PWM output |
activeFW | 1 for active freewheeling 0 for passive freewheeling (default) |
sets the frequency and duty cycle for a PWM channel automatically called by the public version of configPWM
pwm | PWM channel which will be configured |
freq | selects the PWM output frequency |
dutyCycle | a value from 0 to 255 which sets the dutyCycle |
gets the overcurrent error flag bit for a specific halfbridge automatically called by the public version of getHBOverCurrent
hb | halfbridge thats overcurrent flag will be returned |
gets the openload error flag bit for a specific halfbridge automatically called by the public version of getHBOpenLoad
hb | halfbridge thats openload flag will be returned |
writes data bits to a control register of the TLE94112
reg | control register number(mapping array index / CtrlRegisters constant) of the register |
mask | mask for the bits that have to be written |
shift | data will be shifted left by this amount before masking. This is for the bit alignment of data |
data | the data byte that has to be written. It will be shifted and masked before |
reads some bits from a status register of the TLE94112
reg | status register number(mapping array index / StatusRegisters constant) of the register |
mask | mask for the bits that have to be read |
shift | data will be shifted right by this amount after masking. This is for the bit alignment of data |
clears a status register by writing 0x00 to it
reg | status register number(mapping array index / StatusRegisters constant) of the register |
SPIC* Tle94112::sBus |
GPIOC* Tle94112::cs |
GPIOC* Tle94112::en |
Timer* Tle94112::timer |
|
protected |
array of register locations for halfbridges
|
protected |
array of register locations for PWM channels
|
protected |
mapping array for control register addresses
|
protected |
mirror array for control register data
|
protected |
mapping array for status register addresses
|
protected |
#define REG_ACT_1 0x03 |
#define REG_ACT_2 0x43 |
#define REG_ACT_3 0x23 |
#define REG_MODE_1 0x63 |
#define REG_MODE_2 0x13 |
#define REG_MODE_3 0x53 |
#define REG_PWM_CH_FREQ 0x33 |
#define REG_PWM_DC_1 0x73 |
#define REG_PWM_DC_2 0x0B |
#define REG_PWM_DC_3 0x4B |
#define REG_SYS_DIAG 0x1B |
#define REG_ERR1 0x5B |
#define REG_ERR2 0x3B |
#define REG_ERR3 0x7B |
#define REG_ERR4 0x07 |
#define REG_ERR5 0x47 |
#define REG_ERR6 0x27 |
#define REG_FW_OL 0x2B |
#define REG_FW_CTRL 0x6B |
#define HL_HL 0b10011001 |
#define HL_LH 0b10010110 |
#define LH_HL 0b01101001 |
#define LH_LH 0b01100110 |
#define HH_LL 0b10100101 |
#define LL_HH 0b01011010 |
#define TLE94112_NUM_HB 13 |
the number of halfbridges on a TLE94112 (including no halfbridge)
#define TLE94112_NUM_PWM 4 |
the number of pwm modes for a halfbridge (including no pwm)
#define TLE94112_NUM_CTRL_REGS 12 |
the number of control registers in a TLE94112
#define TLE94112_NUM_STATUS_REGS 7 |
the number of status registers in a TLE94112
enum tle94112::Error_t |