In Fusion, on the tab "Status Registers", there is the table "MFR_STATUS Rail#1".
When I press the button "Start Polling" and got the updated values, then "Stop Polling" to be able to access I2C with my microcontroller:
- in Fusion: bit #6 is on: "LOG_FULL"
- I write I2C to set the current rail to #1, i.e. write 1 payload byte (0) with command 0x0.
- do a I2C read of command 0xF3, length 4 bytes
- bit #2 is on: "Seq ON Timeout".
- No other bits are 'on' in either case
- it is both in the same byte (first one), so it can't be an issue of wrong byte order.
- I followed the code calls, in the debugger, down to the bare I2C library to confirm that it's exactly those bytes being sent, i.e. no code bug elsewhere
- I am successfully reading other status commands, logged faults, peaks, via the same method / code, everything perfectly matching what Fusion GUI shows
- so I don't think there's a general error somewhere in my i2c code
EDIT:
Just to be sure, I now unplugged the TI USB interface ribbon cable from the header with I2C, to put a logic analyzer on it.
The following I2C decoded sequences were captured by the logic analyzer:
For setting the active rail to #1 (i.e. page = 0)
Start
W addr 0x5b ack
W data 0x00 ack
W data 0x00 ack
Stop
Now reading the Mfr Status:
Start
W addr 0x5b ack
W data 0xf3 ack
repeat start
R addr 0x5b ack
R data 0x04 ack # i.e. bit2 is '1', instead of bit6 that Fusion shows
R data 0x00 ack
R data 0x00 ack
R data 0x00 Nack
Stop
What could be the cause for Fusion seeing a different value on MFR_STATUS than my read from 0xF3 gets?