TPS23881 Datasheet Reference
Texas Instruments TPS23881 - Type-4 4-Pair 8-Channel PoE 2 PSE Controller with SRAM and 200 mOhm RSENSE
Datasheet: SLVSF02E - MARCH 2019 - REVISED MAY 2023
This document is used as a reference for driver validation. All register addresses, bit fields, enumerations, and conversion formulas are sourced from the TPS23881 datasheet.
Device Overview
- 8-channel PSE controller (4 ports, each port = 2 channels)
- IEEE 802.3bt Type 3/4 compliant (2-pair and 4-pair)
- I2C interface, up to 400 kHz
- RSENSE = 0.200 Ohm
- 2-Pair PCUT range: 2 W to 65 W
- 4-Pair PCUT range: 4 W to 127 W
- 4-Pair PCUT accuracy: +/-2.5%
- Capacitance measurement range: 1 uF to 12 uF
- 16 kB programmable SRAM
- ULA packaging available (TPS23881A)
- VDD: 3.0 V to 3.6 V (typ 3.3 V)
- VPWR: 44 V to 57 V
- Junction temperature: -40 C to 125 C
I2C Addressing
- Address pins: A1-A4 (internally pulled up to VDD)
- Configuration A (8-bit, nbitACC=0): Two 4-channel devices with 2 consecutive slave addresses
- Configuration B (16-bit, nbitACC=1): Single device address (A0=0)
- Broadcast address available
Operating Modes
| Value |
Mode |
Description |
| 0b00 |
OFF |
Channel is off |
| 0b01 |
Manual/Diagnostic |
Manual control of detection, classification, and power |
| 0b10 |
Semi-Auto |
Detection/classification cycle with manual power-on (PWON command) |
| 0b11 |
Auto |
Fully automatic detection, classification, and power-on |
Complete Register Map
Interrupt Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x00 |
INTERRUPT |
RO |
1 |
0x80 |
Interrupt status (active high) |
| 0x01 |
INTERRUPT MASK |
R/W |
1 |
0x80 |
Interrupt mask |
Event Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x02 |
POWER EVENT |
RO |
1 |
0x00 |
Power good/enable change events |
| 0x03 |
POWER EVENT (CoR) |
CoR |
1 |
0x00 |
Clear on Read version of 0x02 |
| 0x04 |
DETECTION EVENT |
RO |
1 |
0x00 |
Detection/classification events |
| 0x05 |
DETECTION EVENT (CoR) |
CoR |
1 |
0x00 |
Clear on Read version of 0x04 |
| 0x06 |
FAULT EVENT |
RO |
1 |
0x00 |
Disconnect/PCUT fault events |
| 0x07 |
FAULT EVENT (CoR) |
CoR |
1 |
0x00 |
Clear on Read version of 0x06 |
| 0x08 |
START/ILIM EVENT |
RO |
1 |
0x00 |
Inrush/current limit events |
| 0x09 |
START/ILIM EVENT (CoR) |
CoR |
1 |
0x00 |
Clear on Read version of 0x08 |
| 0x0A |
SUPPLY/FAULT EVENT |
RO |
1 |
0x00 |
Supply and 4P fault events |
| 0x0B |
SUPPLY/FAULT EVENT (CoR) |
CoR |
1 |
0x00 |
Clear on Read version of 0x0A |
Discovery/Status Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x0C |
CHANNEL 1 DISCOVERY |
RO |
1 |
0x00 |
Ch1 detection result + requested class |
| 0x0D |
CHANNEL 2 DISCOVERY |
RO |
1 |
0x00 |
Ch2 detection result + requested class |
| 0x0E |
CHANNEL 3 DISCOVERY |
RO |
1 |
0x00 |
Ch3 detection result + requested class |
| 0x0F |
CHANNEL 4 DISCOVERY |
RO |
1 |
0x00 |
Ch4 detection result + requested class |
| 0x10 |
POWER STATUS |
RO |
1 |
0x00 |
Power good and power enable status |
| 0x11 |
PIN STATUS |
RO |
1 |
- |
I2C address pin status |
Configuration Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x12 |
OPERATING MODE |
R/W |
1 |
0x00 |
Operating mode per channel (2 bits each) |
| 0x13 |
DISCONNECT ENABLE |
R/W |
1 |
0x0F |
DC disconnect enable per channel |
| 0x14 |
DETECT/CLASS ENABLE |
R/W |
1 |
0x00 |
Detection and classification enable per channel |
| 0x15 |
POWER PRIO / PCUT DISABLE |
R/W |
1 |
0x00 |
OSS priority and PCUT disable per channel |
| 0x16 |
TIMING CONFIGURATION |
R/W |
1 |
0x00 |
TLIM, TSTART, TOVLD, TMPDO timing |
| 0x17 |
GENERAL MASK |
R/W |
1 |
0x00 |
INTEN, nbitACC, MbitPrty, CLCHE, DECHE |
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x18 |
DETECT/CLASS RESTART |
R/W |
1 |
0x00 |
Restart detection/classification per channel |
| 0x19 |
POWER ENABLE |
R/W |
1 |
0x00 |
Power on/off command per channel |
| 0x1A |
RESET |
R/W |
1 |
0x00 |
Reset commands (CLRAIN, CLINP, RESAL, RESPn) |
ID and Policing Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x1B |
ID |
R/W |
1 |
0x55 |
Manufacturer ID (bits 7-3) and IC version (bits 2-0) |
| 0x1C |
CONN CHECK / AUTO CLASS STATUS |
RO |
1 |
0x00 |
Connection check result + auto class status |
| 0x1E |
2-PAIR POLICE CH1 |
R/W |
1 |
0xFF |
2-pair policing threshold Ch1 (0.5 W/LSB) |
| 0x1F |
2-PAIR POLICE CH2 |
R/W |
1 |
0xFF |
2-pair policing threshold Ch2 (0.5 W/LSB) |
| 0x20 |
2-PAIR POLICE CH3 |
R/W |
1 |
0xFF |
2-pair policing threshold Ch3 (0.5 W/LSB) |
| 0x21 |
2-PAIR POLICE CH4 |
R/W |
1 |
0xFF |
2-pair policing threshold Ch4 (0.5 W/LSB) |
Detection/Fault/Remapping Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x22 |
CAPACITANCE DETECTION |
R/W |
1 |
0x00 |
Enable capacitance detection per channel |
| 0x24 |
POWER-ON FAULT |
RO |
1 |
0x00 |
Power-on fault status (2 bits per channel) |
| 0x25 |
POWER-ON FAULT (CoR) |
CoR |
1 |
0x00 |
Clear on Read version of 0x24 |
| 0x26 |
PORT RE-MAPPING |
R/W |
1 |
0x00 |
Physical channel remapping (2 bits each) |
Priority and Power Allocation Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x27 |
MULTI-BIT PRIORITY CH 1&2 |
R/W |
1 |
0x00 |
3-bit priority for channels 1 and 2 |
| 0x28 |
MULTI-BIT PRIORITY CH 3&4 |
R/W |
1 |
0x00 |
3-bit priority for channels 3 and 4 |
| 0x29 |
PORT POWER ALLOCATION |
R/W |
1 |
0x00 |
4-pair wired config + power allocation |
4-Pair Policing and Fault Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x2A |
4-PAIR POLICE CH 1&2 |
R/W |
1 |
0xFF |
4-pair policing threshold Ch1&2 (0.5 W/LSB) |
| 0x2B |
4-PAIR POLICE CH 3&4 |
R/W |
1 |
0xFF |
4-pair policing threshold Ch3&4 (0.5 W/LSB) |
| 0x2C |
TEMPERATURE |
RO |
1 |
0x00 |
Die temperature measurement |
| 0x2D |
4-PAIR FAULT CONFIG |
R/W |
1 |
0x00 |
NLM, NCT, 4PPCT, DCDT per channel pair |
| 0x2E |
INPUT VOLTAGE |
RO |
2 |
0x0000 |
VPWR input voltage measurement |
Channel Current and Voltage Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x30 |
CHANNEL 1 CURRENT |
RO |
2 |
0x0000 |
Ch1 current (14-bit, LSByte first) |
| 0x32 |
CHANNEL 1 VOLTAGE |
RO |
2 |
0x0000 |
Ch1 voltage (14-bit, LSByte first) |
| 0x34 |
CHANNEL 2 CURRENT |
RO |
2 |
0x0000 |
Ch2 current (14-bit, LSByte first) |
| 0x36 |
CHANNEL 2 VOLTAGE |
RO |
2 |
0x0000 |
Ch2 voltage (14-bit, LSByte first) |
| 0x38 |
CHANNEL 3 CURRENT |
RO |
2 |
0x0000 |
Ch3 current (14-bit, LSByte first) |
| 0x3A |
CHANNEL 3 VOLTAGE |
RO |
2 |
0x0000 |
Ch3 voltage (14-bit, LSByte first) |
| 0x3C |
CHANNEL 4 CURRENT |
RO |
2 |
0x0000 |
Ch4 current (14-bit, LSByte first) |
| 0x3E |
CHANNEL 4 VOLTAGE |
RO |
2 |
0x0000 |
Ch4 voltage (14-bit, LSByte first) |
Configuration/Others Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x40 |
2x FOLDBACK SELECTION |
R/W |
1 |
0x00 |
2xFBn and MPOLn per channel |
| 0x41 |
FIRMWARE REVISION |
RO |
1 |
0x00 |
SRAM firmware revision (0xFF = safe mode) |
| 0x42 |
I2C WATCHDOG |
R/W |
1 |
0x16 |
Watchdog configuration (2 sec timeout) |
| 0x43 |
DEVICE ID |
RO |
1 |
0x22 |
Device ID (bits 7-4) and silicon revision (bits 3-0) |
Signature Measurement Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x44 |
CH1 DETECT RESISTANCE |
RO |
1 |
0x00 |
Channel 1 detection resistance |
| 0x45 |
CH2 DETECT RESISTANCE |
RO |
1 |
0x00 |
Channel 2 detection resistance |
| 0x46 |
CH3 DETECT RESISTANCE |
RO |
1 |
0x00 |
Channel 3 detection resistance |
| 0x47 |
CH4 DETECT RESISTANCE |
RO |
1 |
0x00 |
Channel 4 detection resistance |
| 0x48 |
CH1 DETECT CAPACITANCE |
RO |
1 |
0x00 |
Channel 1 capacitance (requires SRAM) |
| 0x49 |
CH2 DETECT CAPACITANCE |
RO |
1 |
0x00 |
Channel 2 capacitance (requires SRAM) |
| 0x4A |
CH3 DETECT CAPACITANCE |
RO |
1 |
0x00 |
Channel 3 capacitance (requires SRAM) |
| 0x4B |
CH4 DETECT CAPACITANCE |
RO |
1 |
0x00 |
Channel 4 capacitance (requires SRAM) |
Assigned Class Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x4C |
CH1 ASSIGNED CLASS |
RO |
1 |
0x00 |
Assigned class + previous class Ch1 |
| 0x4D |
CH2 ASSIGNED CLASS |
RO |
1 |
0x00 |
Assigned class + previous class Ch2 |
| 0x4E |
CH3 ASSIGNED CLASS |
RO |
1 |
0x00 |
Assigned class + previous class Ch3 |
| 0x4F |
CH4 ASSIGNED CLASS |
RO |
1 |
0x00 |
Assigned class + previous class Ch4 |
Auto Class Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x50 |
AUTO CLASS CONTROL |
R/W |
1 |
0x00 |
MACn (manual trigger) and AACn (auto adjust) |
| 0x51 |
CH1 AUTO CLASS POWER |
RO |
1 |
0x00 |
Channel 1 autoclass power measurement |
| 0x52 |
CH2 AUTO CLASS POWER |
RO |
1 |
0x00 |
Channel 2 autoclass power measurement |
| 0x53 |
CH3 AUTO CLASS POWER |
RO |
1 |
0x00 |
Channel 3 autoclass power measurement |
| 0x54 |
CH4 AUTO CLASS POWER |
RO |
1 |
0x00 |
Channel 4 autoclass power measurement |
Miscellaneous Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x55 |
ALTERNATIVE FOLDBACK |
R/W |
1 |
0x00 |
ALTFBn (foldback curve) and ALTIRn (inrush) |
| 0x56-0x5F |
RESERVED |
R/W |
- |
0x00 |
Reserved |
SRAM Registers
| Address |
Name |
R/W |
Bytes |
Reset |
Description |
| 0x60 |
SRAM CONTROL |
R/W |
1 |
0x00 |
SRAM programming control |
| 0x61 |
SRAM DATA |
R/W |
- |
- |
SRAM data read/write (continuous) |
| 0x62 |
SRAM START ADDRESS (LSB) |
R/W |
1 |
0x00 |
Programming start address LSB |
| 0x63 |
SRAM START ADDRESS (MSB) |
R/W |
1 |
0x00 |
Programming start address MSB |
| 0x64-0x6F |
RESERVED |
R/W |
- |
0x00 |
Reserved |
Detailed Register Bit Fields
0x00 - INTERRUPT Register (RO)
Active high, each bit corresponds to a particular event. Reading the corresponding event register clears the associated interrupt bit.
| Bit |
Field |
Reset |
Description |
| 7 |
SUPF |
1 |
Supply Event Fault or SRAM memory fault. SUPF = TSD || VDUV || VDWRN || VPUV || RAMFLT |
| 6 |
STRTF |
0 |
tSTART Fault on at least one channel. STRTF = STRT1 || STRT2 || STRT3 || STRT4 |
| 5 |
IFAULT |
0 |
tOVLD or tLIM Fault. IFAULT = PCUT1-4 || PCUT34 || PCUT12 || ILIM1-4 |
| 4 |
CLASC |
0 |
Classification cycle occurred. CLASC = CLSC1 || CLSC2 || CLSC3 || CLSC4 |
| 3 |
DETC |
0 |
Detection cycle occurred. DETC = DETC1 || DETC2 || DETC3 || DETC4 |
| 2 |
DISF |
0 |
Disconnect event occurred. DISF = DISF1 || DISF2 || DISF3 || DISF4 |
| 1 |
PGC |
0 |
Power good status change. PGC = PGC1 || PGC2 || PGC3 || PGC4 |
| 0 |
PEC |
0 |
Power enable status change. PEC = PEC1 || PEC2 || PEC3 || PEC4 |
0x01 - INTERRUPT MASK Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
SUMSK |
1 |
Supply event mask (1=enabled) |
| 6 |
STMSK |
0 |
Start fault mask |
| 5 |
IFMSK |
0 |
Current fault mask |
| 4 |
CLMSK |
0 |
Classification mask |
| 3 |
DEMSK |
0 |
Detection mask |
| 2 |
DIMSK |
0 |
Disconnect mask |
| 1 |
PGMSK |
0 |
Power good mask |
| 0 |
PEMSK |
0 |
Power enable mask |
0x02/0x03 - POWER EVENT Register (RO / CoR)
| Bit |
Field |
Reset |
Description |
| 7 |
PGC4 |
0 |
Power good status change Ch4 |
| 6 |
PGC3 |
0 |
Power good status change Ch3 |
| 5 |
PGC2 |
0 |
Power good status change Ch2 |
| 4 |
PGC1 |
0 |
Power good status change Ch1 |
| 3 |
PEC4 |
0 |
Power enable status change Ch4 |
| 2 |
PEC3 |
0 |
Power enable status change Ch3 |
| 1 |
PEC2 |
0 |
Power enable status change Ch2 |
| 0 |
PEC1 |
0 |
Power enable status change Ch1 |
0x04/0x05 - DETECTION EVENT Register (RO / CoR)
| Bit |
Field |
Reset |
Description |
| 7 |
CLSC4 |
0 |
Classification cycle completed Ch4 (or class change if CLCHE=1) |
| 6 |
CLSC3 |
0 |
Classification cycle completed Ch3 |
| 5 |
CLSC2 |
0 |
Classification cycle completed Ch2 |
| 4 |
CLSC1 |
0 |
Classification cycle completed Ch1 |
| 3 |
DETC4 |
0 |
Detection cycle completed Ch4 (or detection change if DECHE=1) |
| 2 |
DETC3 |
0 |
Detection cycle completed Ch3 |
| 1 |
DETC2 |
0 |
Detection cycle completed Ch2 |
| 0 |
DETC1 |
0 |
Detection cycle completed Ch1 |
0x06/0x07 - FAULT EVENT Register (RO / CoR)
| Bit |
Field |
Reset |
Description |
| 7 |
DISF4 |
0 |
DC disconnect fault Ch4 |
| 6 |
DISF3 |
0 |
DC disconnect fault Ch3 |
| 5 |
DISF2 |
0 |
DC disconnect fault Ch2 |
| 4 |
DISF1 |
0 |
DC disconnect fault Ch1 |
| 3 |
PCUT4 |
0 |
2-pair PCUT fault Ch4 |
| 2 |
PCUT3 |
0 |
2-pair PCUT fault Ch3 |
| 1 |
PCUT2 |
0 |
2-pair PCUT fault Ch2 |
| 0 |
PCUT1 |
0 |
2-pair PCUT fault Ch1 |
0x08/0x09 - START/ILIM EVENT Register (RO / CoR)
| Bit |
Field |
Reset |
Description |
| 7 |
ILIM4 |
0 |
Current limit fault Ch4 |
| 6 |
ILIM3 |
0 |
Current limit fault Ch3 |
| 5 |
ILIM2 |
0 |
Current limit fault Ch2 |
| 4 |
ILIM1 |
0 |
Current limit fault Ch1 |
| 3 |
STRT4 |
0 |
tSTART (inrush) fault Ch4 |
| 2 |
STRT3 |
0 |
tSTART (inrush) fault Ch3 |
| 1 |
STRT2 |
0 |
tSTART (inrush) fault Ch2 |
| 0 |
STRT1 |
0 |
tSTART (inrush) fault Ch1 |
0x0A/0x0B - SUPPLY/FAULT EVENT Register (RO / CoR)
| Bit |
Field |
Reset |
Description |
| 7 |
TSD |
0 |
Thermal shutdown occurred (junction temp exceeded ~150 C) |
| 6 |
VDUV |
* |
VDD undervoltage event (follows VDD state at POR) |
| 5 |
VDWRN |
* |
VDD undervoltage warning |
| 4 |
VPUV |
* |
VPWR undervoltage event (follows VPWR state at POR) |
| 3 |
PCUT34 |
0 |
4-pair PCUT fault on port 3&4 |
| 2 |
PCUT12 |
0 |
4-pair PCUT fault on port 1&2 |
| 1 |
OSSE |
0 |
OSS (over-current shutdown) event occurred |
| 0 |
RAMFLT |
0 |
SRAM fault detected (device enters safe mode) |
Note: When RAMFLT is set, the device enters "safe mode" - all channels are turned off. SRAM must be reloaded and RAMFLT cleared before setting RAM_EN.
0x0C-0x0F - CHANNEL 1-4 DISCOVERY Registers (RO)
| Bit |
Field |
Description |
| 7-4 |
REQUESTED CLASS |
Requested class result (see CLASS enum) |
| 3-0 |
DETECT |
Detection result (see DETECTRESULT enum) |
DETECTRESULT Enumeration
| Value |
Name |
Description |
| 0b0000 |
Unknown |
Detection not performed or unknown |
| 0b0001 |
ShortCircuit |
Short circuit detected |
| 0b0010 |
Reserved1 |
Reserved |
| 0b0011 |
TooLow |
Resistance too low |
| 0b0100 |
Valid |
Valid PD signature detected (23.75 kOhm to 26.25 kOhm) |
| 0b0101 |
TooHigh |
Resistance too high |
| 0b0110 |
OpenCircuit |
Open circuit |
| 0b0111 |
Reserved2 |
Reserved |
| 0b1110 |
MosfetFault |
MOSFET fault |
RCLASS / Requested Class Enumeration
| Value |
Name |
Description |
| 0b0000 |
Unknown |
Unknown or not classified |
| 0b0001 |
Class1 |
Class 1 (3.84 W) |
| 0b0010 |
Class2 |
Class 2 (6.49 W) |
| 0b0011 |
Class3 |
Class 3 (12.95 W) |
| 0b0100 |
Class4 |
Class 4 (25.5 W) |
| 0b0101 |
Res_cl0 |
Reserved / Class 0 alternate |
| 0b0110 |
Class0 |
Class 0 (12.95 W) |
| 0b0111 |
Overcurr |
Over-current during classification |
| 0b1000 |
Class_5 |
Class 5 (40 W) |
| 0b1001 |
Class_6 |
Class 6 (51 W) |
| 0b1010 |
Class_7 |
Class 7 (62 W - single signature) |
| 0b1011 |
Class_8 |
Class 8 (71.3 W - single signature) |
| 0b1100 |
Class4plus |
Class 4+ (>25.5 W autoclass) |
| 0b1101 |
Class5d |
Class 5 dual signature |
| 0b1110 |
Res |
Reserved |
| 0b1111 |
Mismatch |
Class mismatch |
0x10 - POWER STATUS Register (RO)
| Bit |
Field |
Reset |
Description |
| 7 |
PG4 |
0 |
Power good Ch4 (DRAIN voltage below threshold) |
| 6 |
PG3 |
0 |
Power good Ch3 |
| 5 |
PG2 |
0 |
Power good Ch2 |
| 4 |
PG1 |
0 |
Power good Ch1 |
| 3 |
PE4 |
0 |
Power enable Ch4 (channel ON/OFF state) |
| 2 |
PE3 |
0 |
Power enable Ch3 |
| 1 |
PE2 |
0 |
Power enable Ch2 |
| 0 |
PE1 |
0 |
Power enable Ch1 |
0x11 - PIN STATUS Register (RO)
| Bit |
Field |
Description |
| 6-3 |
SLA4-SLA1 |
I2C address pin A4-A1 status |
| 2 |
SLA0 |
Config A: 0 or 1; Config B: 0 |
| 7, 1-0 |
Reserved |
Reserved |
0x12 - OPERATING MODE Register (R/W)
2 bits per channel:
| Bits |
Field |
Description |
| 7-6 |
CH4 |
Operating mode for channel 4 |
| 5-4 |
CH3 |
Operating mode for channel 3 |
| 3-2 |
CH2 |
Operating mode for channel 2 |
| 1-0 |
CH1 |
Operating mode for channel 1 |
OperatingModes Enumeration
| Value |
Name |
Description |
| 0b00 |
OFF |
Channel powered off |
| 0b01 |
Manual |
Manual/Diagnostic mode |
| 0b10 |
SemiAuto |
Semi-automatic mode |
| 0b11 |
Auto |
Fully automatic mode |
0x13 - DISCONNECT ENABLE Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7-4 |
Reserved |
0 |
Reserved |
| 3 |
DCDE4 |
1 |
DC disconnect enable Ch4 (1=enabled) |
| 2 |
DCDE3 |
1 |
DC disconnect enable Ch3 |
| 1 |
DCDE2 |
1 |
DC disconnect enable Ch2 |
| 0 |
DCDE1 |
1 |
DC disconnect enable Ch1 |
0x14 - DETECT/CLASS ENABLE Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
CLE4 |
0 |
Classification enable Ch4 |
| 6 |
CLE3 |
0 |
Classification enable Ch3 |
| 5 |
CLE2 |
0 |
Classification enable Ch2 |
| 4 |
CLE1 |
0 |
Classification enable Ch1 |
| 3 |
DETE4 |
0 |
Detection enable Ch4 |
| 2 |
DETE3 |
0 |
Detection enable Ch3 |
| 1 |
DETE2 |
0 |
Detection enable Ch2 |
| 0 |
DETE1 |
0 |
Detection enable Ch1 |
0x15 - POWER PRIORITY / 2-PAIR PCUT DISABLE Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
OSS4 |
0 |
OSS shutdown priority Ch4 (1-bit mode) |
| 6 |
OSS3 |
0 |
OSS shutdown priority Ch3 |
| 5 |
OSS2 |
0 |
OSS shutdown priority Ch2 |
| 4 |
OSS1 |
0 |
OSS shutdown priority Ch1 |
| 3 |
DCUT4 |
0 |
2-pair PCUT disable Ch4 (1=disabled) |
| 2 |
DCUT3 |
0 |
2-pair PCUT disable Ch3 |
| 1 |
DCUT2 |
0 |
2-pair PCUT disable Ch2 |
| 0 |
DCUT1 |
0 |
2-pair PCUT disable Ch1 |
0x16 - TIMING CONFIGURATION Register (R/W)
| Bits |
Field |
Reset |
Description |
| 7-6 |
TLIM |
0b00 |
tLIM timing selection |
| 5-4 |
TSTART |
0b00 |
tSTART (inrush) timing selection |
| 3-2 |
TOVLD |
0b00 |
tOVLD (overload) timing selection |
| 1-0 |
TMPDO |
0b00 |
tMPDO timing selection |
TLIMType Enumeration
| Value |
Name |
Timing |
| 0b00 |
T58ms |
58 ms |
| 0b01 |
T15ms |
15 ms |
| 0b10 |
T10ms |
10 ms |
| 0b11 |
T06ms |
6 ms |
TSTARTType Enumeration
| Value |
Name |
Timing |
| 0b00 |
T58ms |
58 ms |
| 0b01 |
T15ms |
15 ms |
| 0b10 |
T10ms |
10 ms |
| 0b11 |
T06ms |
6 ms |
TOVLDType Enumeration
| Value |
Name |
Timing |
| 0b00 |
T60ms |
60 ms |
| 0b01 |
T30ms |
30 ms |
| 0b10 |
T120ms |
120 ms |
| 0b11 |
T240ms |
240 ms |
TMPDOType Enumeration
| Value |
Name |
Timing |
| 0b00 |
T360ms |
360 ms |
| 0b01 |
T90ms |
90 ms |
| 0b10 |
T180ms1 |
180 ms |
| 0b11 |
T180ms2 |
180 ms |
0x17 - GENERAL MASK Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
INTEN |
0 |
INT output enable. 1=unmasked interrupts can activate INT pin |
| 6 |
Reserved |
0 |
Reserved |
| 5 |
nbitACC |
0 |
I2C access config. 1=16-bit (Config B), 0=8-bit (Config A) |
| 4 |
MbitPrty |
0 |
Multi-bit priority. 1=3-bit priority (reg 0x27/0x28), 0=1-bit (reg 0x15) |
| 3 |
CLCHE |
0 |
Class change enable. 1=CLSCn only on class change |
| 2 |
DECHE |
0 |
Detect change enable. 1=DETCn only on detection change |
| 1-0 |
Reserved |
0 |
Reserved |
0x18 - DETECT/CLASS RESTART Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
RCL4 |
0 |
Restart classification Ch4 |
| 6 |
RCL3 |
0 |
Restart classification Ch3 |
| 5 |
RCL2 |
0 |
Restart classification Ch2 |
| 4 |
RCL1 |
0 |
Restart classification Ch1 |
| 3 |
RDET4 |
0 |
Restart detection Ch4 |
| 2 |
RDET3 |
0 |
Restart detection Ch3 |
| 1 |
RDET2 |
0 |
Restart detection Ch2 |
| 0 |
RDET1 |
0 |
Restart detection Ch1 |
0x19 - POWER ENABLE Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
POFF4 |
0 |
Power off Ch4 |
| 6 |
POFF3 |
0 |
Power off Ch3 |
| 5 |
POFF2 |
0 |
Power off Ch2 |
| 4 |
POFF1 |
0 |
Power off Ch1 |
| 3 |
PWON4 |
0 |
Power on Ch4 |
| 2 |
PWON3 |
0 |
Power on Ch3 |
| 1 |
PWON2 |
0 |
Power on Ch2 |
| 0 |
PWON1 |
0 |
Power on Ch1 |
0x1A - RESET Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
CLRAIN |
0 |
Clear all interrupts. Clears all event registers and INT pin |
| 6 |
CLINP |
0 |
Clear INT pin without affecting event registers |
| 5 |
Reserved |
0 |
Reserved |
| 4 |
RESAL |
0 |
Reset all. Restores I2C registers to POR state (with exceptions) |
| 3 |
RESP4 |
0 |
Reset channel 4 (immediate turn-off) |
| 2 |
RESP3 |
0 |
Reset channel 3 |
| 1 |
RESP2 |
0 |
Reset channel 2 |
| 0 |
RESP1 |
0 |
Reset channel 1 |
Note: For 4-pair wired ports, setting RESPn for either channel resets both channels. RESAL preserves: 0x00 (all), 0x0A/B (TSD/VPUV/VDWRN/VPUV), 0x26 (all), 0x2C/0x2E (all), 0x41 (all).
0x1B - ID Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7-3 |
MFR ID |
0b01010 |
Manufacturer ID (Texas Instruments = 0x0A) |
| 2-0 |
ICV |
0b101 |
IC version number |
0x1C - CONNECTION CHECK / AUTO CLASS STATUS Register (RO)
| Bit |
Field |
Reset |
Description |
| 7 |
AC4 |
0 |
Auto class supported by PD on Ch4 |
| 6 |
AC3 |
0 |
Auto class supported by PD on Ch3 |
| 5 |
AC2 |
0 |
Auto class supported by PD on Ch2 |
| 4 |
AC1 |
0 |
Auto class supported by PD on Ch1 |
| 3-2 |
CC34 |
0b00 |
Connection check result port 3&4 |
| 1-0 |
CC12 |
0b00 |
Connection check result port 1&2 |
ConnCheckResult Enumeration
| Value |
Name |
Description |
| 0b00 |
Unknown |
Not yet determined |
| 0b01 |
SS |
Single Signature PD |
| 0b10 |
DS |
Dual Signature PD |
| 0b11 |
Reserved |
Reserved |
0x1E-0x21 - 2-PAIR POLICE CH1-4 Registers (R/W)
8-bit value, conversion: Power (W) = Value x 0.5
- Default: 0xFF (127.5 W)
- Range: 2 W to 65 W
0x22 - CAPACITANCE DETECTION Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
Reserved |
0 |
Reserved |
| 6 |
CDET4 |
0 |
Capacitance detection enable Ch4 |
| 5 |
Reserved |
0 |
Reserved |
| 4 |
CDET3 |
0 |
Capacitance detection enable Ch3 |
| 3 |
Reserved |
0 |
Reserved |
| 2 |
CDET2 |
0 |
Capacitance detection enable Ch2 |
| 1 |
Reserved |
0 |
Reserved |
| 0 |
CDET1 |
0 |
Capacitance detection enable Ch1 |
Note: Capacitance measurement requires SRAM to be programmed. Only supported in Manual/Diagnostic mode. No measurement if resistance detection returns "valid".
0x24/0x25 - POWER-ON FAULT Register (RO / CoR)
2 bits per channel (PF4: bits 7-6, PF3: bits 5-4, PF2: bits 3-2, PF1: bits 1-0)
PowerOnFaultType Enumeration
| Value |
Name |
Description |
| 0b00 |
NoFault |
No fault |
| 0b01 |
InvalidDetection |
Detection invalid at power-on |
| 0b10 |
ClassificationError |
Classification error at power-on |
| 0b11 |
InsufficientPower |
Insufficient power allocation |
0x26 - PORT RE-MAPPING Register (R/W)
2 bits per channel mapping logical to physical channel:
| Bits |
Field |
Reset |
Description |
| 7-6 |
CH4 |
0b00 |
Physical channel for logical Ch4 |
| 5-4 |
CH3 |
0b00 |
Physical channel for logical Ch3 |
| 3-2 |
CH2 |
0b00 |
Physical channel for logical Ch2 |
| 1-0 |
CH1 |
0b00 |
Physical channel for logical Ch1 |
PhysicalChannel Enumeration
| Value |
Name |
| 0b00 |
CH1 |
| 0b01 |
CH2 |
| 0b10 |
CH3 |
| 0b11 |
CH4 |
0x27 - MULTI-BIT PRIORITY CH 1&2 Register (R/W)
| Bits |
Field |
Reset |
Description |
| 6-4 |
MBP2 |
0b000 |
3-bit priority for Ch2 (with bit 7 for OSS action) |
| 2-0 |
MBP1 |
0b000 |
3-bit priority for Ch1 (with bit 3 for OSS action) |
0x28 - MULTI-BIT PRIORITY CH 3&4 Register (R/W)
Same layout as 0x27 but for channels 3 and 4.
PrioType Enumeration
| Value |
Name |
Description |
| 0b000 |
Prio1 |
Highest priority (last to be shut down) |
| 0b001 |
Prio2 |
Priority 2 |
| 0b010 |
Prio3 |
Priority 3 |
| 0b011 |
Prio4 |
Priority 4 |
| 0b100 |
Prio5 |
Priority 5 |
| 0b101 |
Prio6 |
Priority 6 |
| 0b111 |
Prio7 |
Lowest priority (first to be shut down) |
0x29 - 4-PAIR WIRED AND PORT POWER ALLOCATION Register (R/W)
| Bits |
Field |
Reset |
Description |
| 7 |
4PW34 |
0 |
4-pair wired enable port 3&4 |
| 6-4 |
MC34 |
0b000 |
Power allocation for port 3&4 |
| 3 |
4PW12 |
0 |
4-pair wired enable port 1&2 |
| 2-0 |
MC12 |
0b000 |
Power allocation for port 1&2 |
PortPowerAllocationType Enumeration
| Value |
Name |
Power |
| 0b0000 |
DP15W |
2-pair 15.4 W (Class 0-3) |
| 0b0011 |
DP30W |
2-pair 30 W (Class 4) |
| 0b1000 |
QP15W |
4-pair 15.4 W |
| 0b1011 |
QP30W |
4-pair 30 W |
| 0b1100 |
QP60W |
4-pair 60 W (Class 6) |
| 0b1110 |
QP75W |
4-pair 75 W (Class 7) |
| 0b1111 |
QP90W |
4-pair 90 W (Class 8) |
0x2A/0x2B - 4-PAIR POLICE CH 1&2 / CH 3&4 Registers (R/W)
8-bit value, conversion: Power (W) = Value x 0.5
- Default: 0xFF (127.5 W)
- Range: 4 W to 127 W
0x2C - TEMPERATURE Register (RO)
8-bit temperature measurement.
Conversion: T (C) = -20 + N x 0.652
- Range: -20 C to ~146 C
- Update rate: ~1 Hz
0x2D - 4-PAIR FAULT CONFIGURATION Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
NLM34 |
0 |
No-load mirror port 3&4: 1=both channels disabled on 2P PCUT fault |
| 6 |
NLM12 |
0 |
No-load mirror port 1&2 |
| 5 |
NCT34 |
0 |
No-current trip port 3&4: 1=both disabled on ILIM fault |
| 4 |
NCT12 |
0 |
No-current trip port 1&2 |
| 3 |
4PPCT34 |
0 |
4-pair PCUT enable port 3&4 |
| 2 |
4PPCT12 |
0 |
4-pair PCUT enable port 1&2 |
| 1 |
DCDT34 |
0 |
DC disconnect threshold port 3&4: 1=4.5mA, 0=default |
| 0 |
DCDT12 |
0 |
DC disconnect threshold port 1&2 |
14-bit measurement (LSByte first, MSByte second).
Conversion: VPWR (V) = N x 3.662 mV
0x30-0x3E - CHANNEL CURRENT Registers (RO, 2 bytes each)
14-bit measurement (LSByte first, MSByte second). Bits 15-14 of MSByte are reserved.
Conversion: I (A) = N x 89.445 uA (with RSENSE = 0.200 Ohm)
| Address |
Channel |
| 0x30 |
Ch1 Current |
| 0x34 |
Ch2 Current |
| 0x38 |
Ch3 Current |
| 0x3C |
Ch4 Current |
0x32-0x3E - CHANNEL VOLTAGE Registers (RO, 2 bytes each)
14-bit measurement (LSByte first, MSByte second). Bits 15-14 of MSByte are reserved.
Conversion: V (V) = N x 3.662 mV
| Address |
Channel |
| 0x32 |
Ch1 Voltage |
| 0x36 |
Ch2 Voltage |
| 0x3A |
Ch3 Voltage |
| 0x3E |
Ch4 Voltage |
0x40 - 2x FOLDBACK SELECTION Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
2xFB4 |
0 |
2x foldback mode Ch4 (1=2x curve, 0=1x curve) |
| 6 |
2xFB3 |
0 |
2x foldback mode Ch3 |
| 5 |
2xFB2 |
0 |
2x foldback mode Ch2 |
| 4 |
2xFB1 |
0 |
2x foldback mode Ch1 |
| 3 |
MPOL4 |
0 |
Manual policing lock Ch4 (1=PCUT/2xFB not changed at turn-on) |
| 2 |
MPOL3 |
0 |
Manual policing lock Ch3 |
| 1 |
MPOL2 |
0 |
Manual policing lock Ch2 |
| 0 |
MPOL1 |
0 |
Manual policing lock Ch1 |
0x41 - FIRMWARE REVISION Register (RO)
| Bit |
Field |
Description |
| 7-0 |
FRV |
SRAM firmware revision. 0x00=after reset/POR. 0xFF=safe mode. 0x01-0xFE=valid version |
0x42 - I2C WATCHDOG Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7-5 |
Reserved |
- |
Reserved |
| 4-1 |
IWDD3-0 |
0b0110 |
Watchdog disable code. 0b1011=disabled, any other=enabled |
| 0 |
WDS |
0 |
Watchdog status. 1=watchdog expired (all channels turned off) |
Note: Watchdog timeout is nominally 2 seconds. Timer is reset by any SCL edge.
0x43 - DEVICE ID Register (RO)
| Bit |
Field |
Reset |
Description |
| 7-4 |
DID |
0b0010 |
Device ID number |
| 3-0 |
SR |
0b0010 |
Silicon revision number |
0x44-0x47 - CHANNEL DETECT RESISTANCE Registers (RO)
8-bit detection resistance measurement per channel.
| Address |
Channel |
| 0x44 |
Ch1 |
| 0x45 |
Ch2 |
| 0x46 |
Ch3 |
| 0x47 |
Ch4 |
0x48-0x4B - CHANNEL DETECT CAPACITANCE Registers (RO)
8-bit capacitance measurement per channel. Requires SRAM programming.
| Address |
Channel |
| 0x48 |
Ch1 |
| 0x49 |
Ch2 |
| 0x4A |
Ch3 |
| 0x4B |
Ch4 |
0x4C-0x4F - CHANNEL ASSIGNED CLASS Registers (RO)
| Bits |
Field |
Description |
| 7-4 |
Assigned Class |
Current assigned class (see CLASS enum) |
| 3-0 |
Previous Class |
Previous assigned class |
0x50 - AUTO CLASS CONTROL Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
MAC4 |
0 |
Manual auto class measurement trigger Ch4 |
| 6 |
MAC3 |
0 |
Manual auto class measurement trigger Ch3 |
| 5 |
MAC2 |
0 |
Manual auto class measurement trigger Ch2 |
| 4 |
MAC1 |
0 |
Manual auto class measurement trigger Ch1 |
| 3 |
AAC4 |
0 |
Auto class auto-adjust enable Ch4 (auto PCUT from PAC) |
| 2 |
AAC3 |
0 |
Auto class auto-adjust enable Ch3 |
| 1 |
AAC2 |
0 |
Auto class auto-adjust enable Ch2 |
| 0 |
AAC1 |
0 |
Auto class auto-adjust enable Ch1 |
0x51-0x54 - CHANNEL AUTO CLASS POWER Registers (RO)
Auto class power measurement result per channel.
0x55 - ALTERNATIVE FOLDBACK Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
ALTFB4 |
0 |
Alternative foldback curve Ch4 |
| 6 |
ALTFB3 |
0 |
Alternative foldback curve Ch3 |
| 5 |
ALTFB2 |
0 |
Alternative foldback curve Ch2 |
| 4 |
ALTFB1 |
0 |
Alternative foldback curve Ch1 |
| 3 |
ALTIR4 |
0 |
Alternative inrush enable Ch4 |
| 2 |
ALTIR3 |
0 |
Alternative inrush enable Ch3 |
| 1 |
ALTIR2 |
0 |
Alternative inrush enable Ch2 |
| 0 |
ALTIR1 |
0 |
Alternative inrush enable Ch1 |
0x60 - SRAM CONTROL Register (R/W)
| Bit |
Field |
Reset |
Description |
| 7 |
PROG_SEL |
0 |
SRAM I2C read/write enable. 1=SRAM access enabled |
| 6 |
CPU_RST |
0 |
CPU reset. 1=internal CPU held in reset |
| 5 |
Reserved |
0 |
Reserved |
| 4 |
PAR_EN |
0 |
SRAM parity check enable |
| 3 |
RAM_EN |
0 |
SRAM enable. 1=CPU runs from SRAM+ROM. Set after programming |
| 2 |
PAR_SEL |
0 |
Parity select. 1=parity bits R/W enabled (with R/WZ) |
| 1 |
R/WZ |
0 |
Read/Write select. 0=SRAM write via 0x61, 1=SRAM read via 0x61 |
| 0 |
CLR_PTR |
0 |
Clear pointer. 1=reset memory address pointer. Toggle 0-1-0 before R/W |
0x62/0x63 - SRAM START ADDRESS Registers (R/W)
- 0x62: Start address LSB (SA[7:0])
- 0x63: Start address MSB (SA[15:8])
| Measurement |
Formula |
LSB Resolution |
| Channel Current |
I = N x 89.445 uA |
89.445 uA (RSENSE=0.200 Ohm) |
| Channel Voltage |
V = N x 3.662 mV |
3.662 mV |
| Input Voltage |
V = N x 3.662 mV |
3.662 mV |
| Temperature |
T = -20 + N x 0.652 C |
0.652 C |
| 2P Police |
P = N x 0.5 W |
0.5 W |
| 4P Police |
P = N x 0.5 W |
0.5 W |
SRAM Programming Procedure
- Set CPU_RST = 1 (reg 0x60, bit 6) to hold CPU in reset
- Set PROG_SEL = 1 (reg 0x60, bit 7) to enable SRAM access
- Toggle CLR_PTR (0-1-0) to reset address pointer
- Write firmware data to reg 0x61 (continuous writes)
- Clear PROG_SEL = 0
- If parity is used: Set PAR_SEL = 1, toggle CLR_PTR, write parity data, clear PAR_SEL
- Set PAR_EN = 1 if parity was loaded
- Set RAM_EN = 1 to enable SRAM execution
- Clear CPU_RST = 0 to release CPU
- Verify firmware revision (reg 0x41) shows expected version
- If reg 0x41 = 0xFF, device is in safe mode - reprogram SRAM
Auto Class Pcut Margins
| Measured Power (PAC) |
PAC_MARGIN |
| PAC < 18.5 W |
0.5 W |
| 19 W < PAC < 25.5 W |
1 W |
| 26 W < PAC < 36.5 W |
2 W |
| 36.5 W < PAC < 45 W |
3 W |
| 45 W < PAC < 51.5 W |
4 W |
| 51.5 W < PAC < 58 W |
5 W |
| 58 W < PAC < 63 W |
6 W |
| 63 W < PAC < 68 W |
7 W |
| 68 W < PAC < 73 W |
8 W |
| PAC > 73 W |
9 W |
- 2-Pair/Dual Signature:
2P-PCut = PAC + PAC_MARGIN
- Single Signature 4-Pair:
4P-PCut = PAC_ALTA + PAC_ALTB + PAC_MARGIN