ADS8331: EOC pin not changing even after conversion.

Part Number: ADS8331

Tool/software:

Hello,

I am interfacing an ADS8331 ADC with a dsPIC33EP128GP504 microcontroller using SPI.
I am facing an issue where the EOC pin never toggles during conversion. May be this is the issue that am not getting the same values in all the channels. 

My Configuration (CFR):

I tried writing and reading back the CFR register. The values read back match the written ones, so SPI seems OK. i tried the configurations like 0x037D,0x03FD along with the write command 0xE000. I read back the cfr value using the read cfr command 0xE000. so at that time i got the correct configuration what am trying to write . so am sure that reading and writing is working fine. 

In my code, I am pulsing CONVST as follows:

ADS8331_CONVST_LOW();
__delay_us(1);
ADS8331_CONVST_HIGH();

this my function for read the channel data 

uint16_t ADS8331_ReadChannel(uint8_t channel)
{
uint16_t tx, rx;
ADS8331_Status_t st;

// --- Select channel ---
tx = ADS8331_CMD_CH(channel);
ADS8331_CS_LOW();
st = ads_spi_exchange(tx, &rx, 2000);
ADS8331_CS_HIGH();
__delay_us(2);

// --- Start conversion ---
ADS8331_CONVST_LOW();
__delay_us(5);
ADS8331_CONVST_HIGH();

--- Wait for EOC ---
st = ADS8331_PollEOC(2000);
if (st != ADS8331_OK) {
return 0x1; // error
}

// --- Read result ---
tx = ADS8331_CMD_READ_DATA;
ADS8331_CS_LOW();
st = ads_spi_exchange(tx, &rx, 2000);
ADS8331_CS_HIGH();

return rx ;
}

I am trying manual trigger + manual channel select + EOC polling.
EOC pin stays constant (high or low depending on config), never toggles.

Point right Am I missing something in CFR config or in the read sequence?

Thanks.

  • Hi Antony, 

    Thank you for your post! 

    Could you please share your schematic so I can review it? Also, could you please share an oscilloscope/logic analyzer capture of the digital signals so I can see a capture and how the signals toggle? This will help my debug. 

    Best regards,

    Samiha