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.

ADS1258: automatical reset

Other Parts Discussed in Thread: ADS1258, SN74HCT541

Hi,

I'm using several ADS1258 with the following configuration:

in CS-Mode, i.e.

- different CS and DRDY for each ADS1258

- same DIN, SCLK, RST, DOUT for each ADS1258

fCLK = 16MHz, always nPDWN = START = 1

I use the Channel Data Read Command with DRDY indication

 

registers:

CONFIG0 = 0x12  (STAT = 1,  BYPAS = 1)

CONFIG1 = 0x50 (DLY = 0b101,  SBCS = 0,  DRATE = 0)  <- very slow

MUXSCH = 0x00

MUXDIF = 0x00

MUXSG0 = 0xFF

MUXSG1 = 0xFF

SYSRED = 0x00

GPIOC = 0x00

GPIOD = 0x02

ID = 0x8B

 

my problem:

After programming the registers. I verify the register setting with reading out them. Then I start to read out periodically all channels with status byte. It works fine for each data converter and each channel. After a certain time the data converters resets completely themselves at different time, sometimes only the first register (CONFIG0). I have a LED on GPIO for controlling indirectly the right register settings. Together with the oscilloscope, I can see whether all registers are disturbed or only the first one. Usually all registers were resetted. My general RESET-pin for all data converter is always high. What could be the cause/problem? How can I limit it? I monitor all digital channels and I cannot find an abnormality. All 40 bits are read quite good until the reset is coming. Then my DRDY-frequency is resetted and the reading is disturbed or not correct. As solution, I can re-write the register settings, but it is not sufficient.

Thanks in advance for your help!

Kind regards

André

 

  • André


    Do you have a fairly clean supply? If the supply droops then it might trigger the internal power-on reset in the part. If you don't have any bypass on the supply, they you might want to add some or make whatever you have larger.

    Another similar possibility comes from some sort of ESD event. I had worked on a couple ADCs where if I had a small static electricity shock discharged into a nearby ground or chassis, it would reset the board I was working on. In your case, there might be something similar happening.

    One last question, what do you do with the RESETn pin? Is it tied high? Can you tie it high? If it is being driven by a uC, you might want to add some low pass filter to clean any transients.


    Joseph Wu

  • Hello Joseph!

    Many thanks for your reply.

    Yes, my supplys are filtered and amount to: DVDD = 5,0 V, AVDD = 2,5V, AVSS = -2,5V - all with a random noise of ±25mV. There are some glitches from the clocking, but I think, neverheless that's ok. The ADS1258 are on a 4 layer-PCB with quite high signal quality and short signal paths.

    How can I verify ESD influences?!

    With my RESET-pin, I can reset all ADCs together at the same time. I control it with the µC (DIO). All my digital channels allocate transeivers/line drivers (SN74HCT541). So, the signal quality should be good enough. I verify the signal quality of the RESET-pin with the oscilloscope in front of the transeiver and it's quite good. If the RESET-pin is disturbed, all ADS1258 will be resetted at the same time, but this was not the problem. They are resetted at a different time.

    Now, I found out a little phenomenon: I do always the programming of my ADS1258 with the Channel Data Read Command (40 bits, DIN=0x30 + 32 Bit DOUT) because it was recommended in the datasheet on page 29, SPI Bus Sharing: "The ADS1258 can be connected to a shared SPI bus. DOUT tri-states when CS is deselected (high). When the ADS1258 is connected to a shared bus, data can be read only by the Channel Data Read command format". After I write my first post here in the forum, I try to read out the ADS1258 only with the Channel Data Direct Read (32 bits = Status-Byte + 3 Data-Bytes). And now, you will be surprise, it works continuously since two days, read out every two seconds. So, the DIN channel is disabled.

    What could be the reason? It could be a false DIN-command. How should I program the clocking transition from clock out the one DIN-byte and clock in the four DOUT-bytes, because of rising and falling edge?

    Greetings from Germany!

    André

     

  • Hi Andre, 

    What is sounds like is you may have the polarity of your communication may be incorrect. So, for example, when you think you are writing the Channel Data Read Command (0011 0000), the ADC may be reading it as the write register command (0110 0000). This would explain why at times the contents of only the CONFIG0 register look like they are being "reset." Actually, it does not sounds like they are being reset, they are probably just being overwritten as you accidentally write the write register command.

    In the ADS1258 the rising edge of SCLK is the critical edge. Therefore, make sure that the DIN is valid on the rising edge of SCLK and is changing on the falling edge of SCLK. Look into the polarity of your clock signals to make sure they match page 6 of the data sheet. You can also look at your SCLK and DIN lines on a scope to verify that they meet the data sheet timing requirements. 

    Let me know what you see. 

    Regards,

    Tony Calabria

  • Hello Tony!

    Many many many thanks for your answer!

    Your hint is almost the solution! I try to catch the error cases with the oscilloscope. It was not so easy with so many readings until the error occurs, but here is the result:

    At times, I have some problems with my clock (don't know why!?). But this explains the two error patterns: The first one is shown in the picture above. All registers are resetted because the ADS1258 receives erroneously the RESET-command (110...) after an automatic reset of the SPI interface (> 4096 internal clks). For the second error, it will be like you described: The ADS1258 probably receive the WRITE-command (011...) generated by the SCLK-error in the first DIN clock.

    Now, I have to found out why the SCLK is sometimes disturbed. But for me the Command Data Read Direct-Mode is a safer solution. Ok, one faulty value will be transferred if the SCLK error occurs, but this will be ok and all ADS1258 work fine. For explanation: my SCLK is not generated by oscillator but by programmed digital output. So, it could be a thread or output delay.

    Thank you, Tony and Joseph! Kind regards.

    André