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.
Am I missing something in CFR config or in the read sequence?
Thanks.