Hello,
The hardware design I'm working with has six DRV89xx parts in a daisy chain. The chain looks like this:
8912:8912:8908:8912:8912:8908
Below is a log of the SPI data I'm seeing. I'm concerned that the output is not as one would expect, and in some cases appears to be invalid bit combinations:
Or, maybe I'm just not understanding the messaging and registers properly. In which case, I'm happy to be corrected.
All values are hex.
SDO: | 86 | 80 | 40 | 40 | 40 | 40 | 40 | 40 |
SDI: | E0 | 60 | 60 | 60 | 60 | 60 | 43 |
40 |
SDO: | 00 | 00 | 00 | 00 | 00 | 00 |
SDI: | 00 | 00 | 00 | 00 | 00 | 00 |
The intention of this message was to read the status register of each device. There is no global fault clearing in this message. This was the first message sent after power up.
Note that device #6 is reporting OTSD & OTW which it is not. Part is at ambient. Also, bit 7 is reserved, and shows to be '0' in the data sheet. (As an aside, I think the Table 54 notes in the right-most column are not completely accurate. Both bits 5 and 6 indicate over current, but they are over temp indicators)
Devices #5 through #1 are reporting OTSD & OTW, but are clearing MSb as per the data sheet. Again, parts are not at all warm.
Per the data sheet, the returning headers should match the sent headers. Obviously there is a mismatch.
Finally, the returned data from the reads is a stream of zeros. Somewhat expected. But, this information does not square with the status bytes sent earlier in the bit stream.
Without going into overwhelming detail, this sort of behavior exists with other messages. For the sake of everyone's patience, I'm omitting those SPI logs but I'm happy to provide them if they would be of use.
One glaring oddity is when writing to the control register (0x07) returns a part type of 000b for the 8912 devices (correct type) but the 8908 parts are returning 001b (incorrect type). The 001b code indicating that the part is actually an 8910 part. I'm doubting that the parts are incorrectly labeled.
I've double-checked and my processor is writing on the rising edge, and reading on the falling edge of the SCK signal which is compatible with Figure 75 on the data sheet.
Thank you in advance for your time,