Hello,
I've recently had a PCB made with the ADS8319 ADC on it and am having some real issues reading from it. I have the chip configured in it's "3-Wire CS mode w/out busy indicator" and connected to my STM32L4 micro like so:

Then on the STM32 I'm doing this (dwt_delay is a microsecond delay):
uint8_t adc_read(uint16_t* result) {
uint8_t data[2];
HAL_GPIO_WritePin(SPI2_CS_GPIO_Port, SPI2_CS_Pin, GPIO_PIN_SET);
dwt_delay(2); // Delay at least 1400ns
HAL_GPIO_WritePin(SPI2_CS_GPIO_Port, SPI2_CS_Pin, GPIO_PIN_RESET);
if (HAL_SPI_Receive(&hspi2, data, 2, 100) != HAL_OK) {
return 0;
}
*result = ((uint16_t)data[0] << 8) | data[1];
return 1;
}
As per the ADS8319 manual pg. 20 (
https://www.ti.com/lit/ds/symlink/ads8319.pdf) the CONVST (CS) pin needs to be taken high for at least 1400ns, during this time the chips data output will go tristate and then upon the CONVST pin going low the data output will be driven and at that stage it's just pulsing the clock 16 times and reading the 16 bit result. However all I ever get from this is an initial unexpectedly low value and then zeros after that. I have the ADC hooked up to a opamp that's biased by a rail splitter outputting 2V5 so I'd expect the ADC result to be half scale (~0x8000).
Here's what it looks like on the scope at first power: (Blue is CONVST, red is SCLK and green is SDO)

It looks to be alive and working here, the SDO goes high upon CONVST low and appears to change on the falling SCLK pulse as described in the manual. However on subsequent readings:

The ADS8319 seems to just stop working and the SDO pin is just floating/discharging.
Has anyone got any clue as to what may be going wrong? Any help would be greatly appreciated. I can supply more info if I've left anything out.
Thanks,
Josh