Skip to content

Troubleshooting

Symptoms you may see while bringing up a TLE92466ED, their causes and the fix for each, cheapest check first.

Start with the error a call returns and, once Init() has passed, with GetAllFaults(): the error tells bus problems (no reply, bad replies) apart from chip state (wrong mode, a fault the chip reports).

Bring-up

Symptom Cause Fix
Init() returns DeviceNotResponding MISO idle: no VIO, CSN not reaching the chip, MISO not connected Measure VIO at pin 8; scope CSN and SO during Init()
Init() returns FaultDetected Every reply is a critical-fault frame VDD (4.5 V to 5.5 V at pin 29) first, then the clock source
Init() returns WrongDeviceID ICVID is not 0xC1xx: bits shifted by a wrong SPI mode, or another device on the same CSN SPI mode 1; one CSN per device
Init() returns ConfigurationError OTP_VIRGIN: the part's calibration OTP is not programmed Use a production part
CRCError or SPIFrameError now and then Frames not exactly 32 bits, CSN high time under 600 ns, clock too fast for the wiring One 4-byte transfer per CSN; lower SCK to 1 MHz; shorten the wires
Wrong values on a shared bus Another device's frame between the command and its reply Hold the bus lock for the whole TransferMulti() (Porting)

Channels

Symptom Cause Fix
EnableChannel() returns WrongMode Still in Config Mode EnterMissionMode() first
ConfigureChannel() or SetChannelMode() returns WrongMode In Mission Mode EnterConfigMode(), configure, then go back
Channel enabled, no current EN low (all channels off), setpoint 0, or the chip dropped to Config Mode Enable(); IsMissionMode(); GetAllFaults() for supply or watchdog faults
Channel drops out after a while SPI watchdog expired: the chip returns to Config Mode Reload it faster (Diagnostics) or leave it off
Current far from the setpoint No freewheeling diode at FWDx, setpoint above the specified 1.5 A, parallel_mode missing on a pair Hardware, Current control
SetCurrentSetpoint() returns InvalidParameter Above 2000 mA (4000 mA in parallel) Lower it; pass parallel_mode = true for a pair
A parallel pair drives half the current The slave was configured instead of the master Configure and drive CH0, CH1 or CH4 only

Feedback

Symptom Cause Fix
GetAverageCurrent() returns FeedbackNotReady DITHER_CLK_DIV still 0, so the measurement period is 0 ConfigureDither() or ConfigureDitherClock() on that channel
Feedback frozen at an old value FB_FRZ left set by an interrupted snapshot ReleaseFeedbackFreeze()
SampleChannelCurrents() sets rejected_chains Replies arrived out of order on the bus Bus integrity: shared-bus lock, wiring, SCK speed
ReadChannelFeedback() returns TimeoutError No feedback update within the timeout Longer timeout, or a faster dither (shorter measurement period)

Faults

Symptom Cause Fix
FAULTN low before Init() RESN low, or latched power-on flags Init() releases RESN and clears the power-on flags; then read GetAllFaults()
A fault returns right after ClearFaults() The cause is still there Read GetAllFaults(); the flag names the cause
open_load on a fitted coil Open-load threshold too high for the current, or the load is wired to the wrong LOAD pin Lower open_load_threshold; check the pin table
overcurrent on a channel A short, or a load below the coil resistance it was sized for Measure the load; the protection trips between 2.05 A and 6 A
REG_ECC_ERR comes back after every clear Known on some parts; Init() reports it and continues No action if the channels work

Debugging tips

  • Route Log() in your port to a console: the driver logs every mode change, each failed attempt and the decoded critical-fault byte.
  • PrintAllFaults() prints every fault flag; IsFault(true) does it when FAULTN is low.
  • ReadRegister(CentralReg::ICVID) is the cheapest end-to-end read; ReadAllSupplyVoltages() the cheapest 22-bit one.