I have written code to talk to the MC33771 part. After initialization of the INIT register I can read registers and get what appears to be good data with valid CRCs without fail for what appears to be exactly 1 second and then I begin getting invalid replies. I'm using the SPI port. What I'm looking for is any ideas as to whether the 1 second timeout is normal or is a clue for what I am doing wrong. Shouldn't the chip keep responding indefinitely after proper initialization?
Investigating further I figured out a little bit more. As mentioned above, I can do an initialization sequence and immediately follow that with good reads. If I wait a second, subsequent reads are invalid. They are all 0's with what is probably a good crc on it, but useless as far as reading a register. What I learned just now is that, after it starts failing, if I issue another read to the INIT register but using the CID-unassigned value of all 0's, it responds properly. The INIT register is a good place to experiment because it can be read using CID=0 when unassigned and CID=xx after assigning the address to it. So, it's as if it has forgotten that I assigned the device with the CID address in the init sequence if I wait long enough. Under what circumstances can the part forget it's CID address?