NOTE: I am using device ADS7953-Q1.
NOTE: I am using datasheet ADS79xx (SLAS605C) in my references below, because it appears there are multiple errors in datasheet ADS79xx-Q1 (SBAS652A), i.e. Figure 54.
I am implementing an FPGA to control the SPI port of the ADS7953-Q1.
The design needs to sample all 16 channels at a pre-defined system frame rate (i.e. 10ms). The sequence repeats every 10ms. I wish to reset and reconfigure the device each frame.
Can you please verify the sequence I have listed below is acceptable:
Register | Action (For Next Frame) | Mode | SDI SPI Command |
Sample and Convert Channel; Frame | MUX Channel Selected |
SDO; Frame | Frame |
GPIO Program Register | Reset Device | Manual | 0x4200 | N/A | CH0 Manual | Don't Care | n-2 |
Auto-2 Program Register | Set Last Channel | Manual | 0x93C0 | CH0 Manual; n-2 | CH0 Manual | Don't Care | n-1 |
Auto-2 Mode Register | Change to Auto-2 Mode; Reset to CH0 | Auto-2 | 0x3C00 | CH0 Manual; n-1 | CH0 Manual | CH0 Manual; n-1 | n |
Auto-2 Mode Register | Auto-2 Mode; Increment Channel Mode | Auto-2 | 0x3800 | CH0 Manual; n | CH0 Auto-2 | CH0 Manual; n | n+1 |
Mode Control Register | Continued Operation | Auto-2 | 0x0000 | CH0 Auto-2; n+1 | CH1 Auto-2 | CH0 Auto-2; n+1 | n+2 |
Continued Operation | Auto-2 | 0x0000 | CH1 Auto-2; n+2 | CH2 Auto-2 | CH0 Auto-2; n+2 | n+3 | |
Continued Operation | Auto-2 | 0x0000 | CH2 Auto-2; n+3 | CH3 Auto-2 | CH0 Auto-2; n+3 | n+4 | |
Continued Operation | Auto-2 | 0x0000 | CH3 Auto-2; n+4 | CH4 Auto-2 | CH0 Auto-2; n+4 | n+5 | |
Continued Operation | Auto-2 | 0x0000 | CH4 Auto-2; n+5 | CH5 Auto-2 | CH0 Auto-2; n+5 | n+6 | |
Continued Operation | Auto-2 | 0x0000 | CH5 Auto-2; n+6 | CH6 Auto-2 | CH0 Auto-2; n+6 | n+7 | |
Continued Operation | Auto-2 | 0x0000 | CH6 Auto-2; n+7 | CH7 Auto-2 | CH0 Auto-2; n+7 | n+8 | |
Continued Operation | Auto-2 | 0x0000 | CH7 Auto-2; n+8 | CH8 Auto-2 | CH0 Auto-2; n+8 | n+9 | |
Continued Operation | Auto-2 | 0x0000 | CH8 Auto-2; n+9 | CH9 Auto-2 | CH0 Auto-2; n+9 | n+10 | |
Continued Operation | Auto-2 | 0x0000 | CH9 Auto-2; n+10 | CH10 Auto-2 | CH0 Auto-2; n+10 | n+11 | |
Continued Operation | Auto-2 | 0x0000 | CH10 Auto-2; n+11 | CH11 Auto-2 | CH0 Auto-2; n+11 | n+12 | |
Continued Operation | Auto-2 | 0x0000 | CH11 Auto-2; n+12 | CH12 Auto-2 | CH0 Auto-2; n+12 | n+13 | |
Continued Operation | Auto-2 | 0x0000 | CH12 Auto-2; n+13 | CH13 Auto-2 | CH0 Auto-2; n+13 | n+14 | |
Continued Operation | Auto-2 | 0x0000 | CH13 Auto-2; n+14 | CH14 Auto-2 | CH0 Auto-2; n+14 | n+15 | |
Continued Operation | Auto-2 | 0x0000 | CH14 Auto-2; n+15 | CH15 Auto-2 | CH0 Auto-2; n+15 | n+16 | |
Continued Operation | Auto-2 | 0x0000 | CH15 Auto-2; n+16 | CH0 Auto-2 | CH0 Auto-2; n+16 | n+17 |
Also, I am not entirely sure that the SPI write to 0x3C00 mentioned above is required, because the datasheet states in Figure 55, Frame 'n' that "DI10 = x. Device automatically resets to channel 0".
Can you confirm that the sequence below is also valid ... I just removed the first Auto-2 Mode Register command:
Register | Action (For Next Frame) | Mode | SDI SPI Command |
Sample and Convert Channel; Frame | MUX Channel Selected |
SDO; Frame | Frame |
GPIO Program Register | Reset Device | Manual | 0x4200 | N/A | CH0 Manual | Don't Care | n-2 |
Auto-2 Program Register | Set Last Channel | Manual | 0x93C0 | CH0 Manual; n-2 | CH0 Manual | Don't Care | n-1 |
Auto-2 Mode Register | Auto-2 Mode; Increment Channel Mode | Auto-2 | 0x3800 | CH0 Manual; n-1 | CH0 Auto-2 | CH0 Manual; n-1 | n |
Mode Control Register | Continued Operation | Auto-2 | 0x0000 | CH0 Auto-2; n | CH1 Auto-2 | CH0 Auto-2; n | n+1 |
Continued Operation | Auto-2 | 0x0000 | CH1 Auto-2; n+1 | CH2 Auto-2 | CH0 Auto-2; n+1 | n+2 | |
Continued Operation | Auto-2 | 0x0000 | CH2 Auto-2; n+2 | CH3 Auto-2 | CH0 Auto-2; n+2 | n+3 | |
Continued Operation | Auto-2 | 0x0000 | CH3 Auto-2; n+3 | CH4 Auto-2 | CH0 Auto-2; n+3 | n+4 | |
Continued Operation | Auto-2 | 0x0000 | CH4 Auto-2; n+4 | CH5 Auto-2 | CH0 Auto-2; n+4 | n+5 | |
Continued Operation | Auto-2 | 0x0000 | CH5 Auto-2; n+5 | CH6 Auto-2 | CH0 Auto-2; n+5 | n+6 | |
Continued Operation | Auto-2 | 0x0000 | CH6 Auto-2; n+6 | CH7 Auto-2 | CH0 Auto-2; n+6 | n+7 | |
Continued Operation | Auto-2 | 0x0000 | CH7 Auto-2; n+7 | CH8 Auto-2 | CH0 Auto-2; n+7 | n+8 | |
Continued Operation | Auto-2 | 0x0000 | CH8 Auto-2; n+8 | CH9 Auto-2 | CH0 Auto-2; n+8 | n+9 | |
Continued Operation | Auto-2 | 0x0000 | CH9 Auto-2; n+9 | CH10 Auto-2 | CH0 Auto-2; n+9 | n+10 | |
Continued Operation | Auto-2 | 0x0000 | CH10 Auto-2; n+10 | CH11 Auto-2 | CH0 Auto-2; n+10 | n+11 | |
Continued Operation | Auto-2 | 0x0000 | CH11 Auto-2; n+11 | CH12 Auto-2 | CH0 Auto-2; n+11 | n+12 | |
Continued Operation | Auto-2 | 0x0000 | CH12 Auto-2; n+12 | CH13 Auto-2 | CH0 Auto-2; n+12 | n+13 | |
Continued Operation | Auto-2 | 0x0000 | CH13 Auto-2; n+13 | CH14 Auto-2 | CH0 Auto-2; n+13 | n+14 | |
Continued Operation | Auto-2 | 0x0000 | CH14 Auto-2; n+14 | CH15 Auto-2 | CH0 Auto-2; n+14 | n+15 | |
Continued Operation | Auto-2 | 0x0000 | CH15 Auto-2; n+15 | CH0 Auto-2 | CH0 Auto-2; n+15 | n+16 |