Part Number: ADS7953
Other Parts Discussed in Thread: TMS570LS1227
We are using an TMS570LS1227 to interface over one SPI with two devices, one of them ADS7953 (each with its own CS line). We have the system up and running and it has been working fine for a while now, but the customer first reported an issue about 2 months ago and has reported another instance of the same last week, so I am looking into it. The issue happens at startup, but it only ever happens very very rarely, 99.9% of the time works fine. Also, I should say that the 2 times it happened, it was only solved after power cycling the whole system. In all cases, if the device started without the issue, then it carried on working without problems.
Our normal sequence at startup is: we send a reset command, then get the device into auto mode 2 and from there simply toggle the CS line ( data to ADS = 0) and read the channels data with the ID. This data is used in some safety functions that would trigger a fault if wrong data is received. This is what happened the 2 times so far this issue has been triggered. Of the first incident I don't have much data. After that, I gave the customer some special version of the fw that would allow us to know what the micro is reading from the ADS instead of just triggering the fault. When the second fault happened we saw that we are reading 0x3FFF data back from the ADS all the time. Given that this is not 0xFFFF (something got stuck high for example), to me it looks like the ADS was not configured properly in auto mode 2 (as per our startup sequence), but rather it got stuck in manual mode and reporting all the time channel 4 (first 4 bits is the ID). It also looks like the voltage range was not selected correctly (again as part of the startup) since we use 5V. Channel 4 should sit around 4.5V, so if the voltage range wasn't configured correctly either, we would be reading 0xFFF. This is my theory behind why we are reading 0x3FFF. Somehow the startup sequence got messed up leading to the device stuck in the wrong mode and configuration.
I have seen another 2 posts with similar kind of issue but without answer:
Some questions:
- Given that the SPI link is shared with another device, is it possible that at startup it is mistakenly reading some data that is going to the other device and this data is getting the ADS stuck in a state that it cannot come out from later? During our power up sequence first command send is 0x4200, which should reset the ADS, so the rest of the configuration goes through correctly. My understanding is that, even if there was some spurious data being read by the ADS because of this, after sending the reset command it shouldn't matter?
- I have scoped the power-up sequence. In our board VA and VBD come up at the same time. It turns on for 5ms, then turn off (something to do with the micro bootloader), and then about 200ms later it turns on again and stays. During the turn-on VA is always higher than VBD, but I have noticed that when it turns off, the VA rails turns off faster than the VBD, and VBD is higher than VA for around 10ms while it turns off. Is this ok? Could this affect the device so when it powers up after the 200ms it might be in an unknown state?
-The device doesn't have any kind of state registers where we can read if it has correctly gone through the configuration and running in the mode we want it. Is there another way to detect this condition? And if we did, could we just rerun the startup sequence to get it to the right state?
- Any other idea of what might be going on?