This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MCT8316Z: Unexpected results using SPI to write to MCT8316Z0R

Part Number: MCT8316Z
Other Parts Discussed in Thread: DRV8316

Tool/software:

I am working on a prototype to integrate an MCT8316Z0R into a servo application.  In order to ensure that I can properly configure the MCT8316Z0R using SPI, I have a very simple setup with the MCT8316 being supplied with VM/PGND (8.4V), nSLEEP held high, nFAULT held high, and the BUCK regulator and charge pump connected per the data sheet.  SPI connections are to an Arduino processor with SPI set up for 5MHZ clock rate, clock polarity 0 and clock phase 1.

As a first step, I write 03h to Control Register 1 in order to unlock the registers.  The log of this step is as follows:

Unlock registers (Control Register 1 (Offset 3h))
Write Offset 3 Output Data Word 0 000011 0 00000011 returns 00000000 00000000
Read Control Register 1 (Offset 3h)
Read Offset 3 Output Data Word 1 000011 0 00000000 returns 00000000 00000011

This suggests that writes and reads are working correctly.  Status Register 2 shows a "Charge Pump Under Voltage" fault, so I write to control register 2A to clear the fault:

Read Status Register 2 (Offset 2h)
Read Offset 2 Output Data Word 1 000010 1 00000000 returns 00000000 10001000

Clear fault (C2A (Offset 4))
Write Offset 4 Output Data Word 0 000100 0 00000001 returns 00000000 01100000

Read Status Register 2 (2)
Read Offset 2 Output Data Word 1 000010 1 00000000 returns 00000000 00000000

However, following this write, all control registers return 0:

heck control register reset values ->
Read C2A (4)
Read Offset 4 Output Data Word 1 000100 1 00000000 returns 00000000 00000000
Return in HEX 0
Read C3 (5)
Read Offset 5 Output Data Word 1 000101 0 00000000 returns 00000000 00000000
Return in HEX 0
Read C4 (6)
Read Offset 6 Output Data Word 1 000110 0 00000000 returns 00000000 00000000
Return in HEX 0
Read C7 (9)
Read Offset 9 Output Data Word 1 001001 0 00000000 returns 00000000 00000000
Return in HEX 0

If I do NOT clear the fault, reading the above registers return mostly sensible reset values:

heck control register reset values ->
Read C2A (4)
Read Offset 4 Output Data Word 1 000100 1 00000000 returns 00000000 01100000
Return in HEX 60
Read C3 (5)
Read Offset 5 Output Data Word 1 000101 0 00000000 returns 00000000 01000110
Return in HEX 46
Read C4 (6)
Read Offset 6 Output Data Word 1 000110 0 00000000 returns 00000000 00010000
Return in HEX 10
Read C7 (9)
Read Offset 9 Output Data Word 1 001001 0 00000000 returns 00000000 00000001
Return in HEX 1

I would also note that I am unable to generate any SPI fault.  I have tried using various faulty SPI constructs (wrong address, wrong parity) but cannot trigger a fault in the status register.

Finally, if I do not unlock the registers per the first step above, all writes return the reset values and no change is observed.  If you can provide some insights, I would be very grateful as it is quite frustrating.