Unable to read data on SPI MISO line with STM32G07 when communicating with ADS124S06.
Hii Team,
I'm using STM32G070RBT6 MCU to communicate with ADS124S06.
I've configured the SPI on the MCU for Mode1 and GPIOs CS, RST, START pins as output (NO pull up/ pull down) and DRDY as input (NO pull up/ pull down).
GPIO Configuration:

SPI Configuartion:


Clock Configuration:

Code :



the ADS124S06_Init function:
bool ADS124S06_Init(ADS124S06_Handle *dev) {
DEBUG_PRINT("Entered init Function");
// RESET pin sequence
HAL_GPIO_WritePin(dev->reset_port, dev->reset_pin, GPIO_PIN_RESET);
HAL_Delay(1);
HAL_GPIO_WritePin(dev->reset_port, dev->reset_pin, GPIO_PIN_SET);
HAL_Delay(5);
ADS124S06_WriteRegister(dev, 0x02, 0x54); // I/p MUX: AIN5-AIN4 0x54
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x03, 0x00); // GAIN: PGA=1, 20SPS
ADS124S06_WriteRegister(dev, 0x04, 0x14); // DataRAte : 20SPS, osc-4.096MHz
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x05, 0x0A); // REF : internal 2.5V On always.
ADS124S06_WriteRegister(dev, 0x06, 0x00); // IDACMAG
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x07, 0xFF); // IDACMUX
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x08, 0x00); // VBIAS
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x09, 0x10); // SYS
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x0A, 0x00);
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x0B, 0x00);
ADS124S06_WriteRegister(dev, 0x0C, 0x00);
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x0D, 0x00);
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x0E, 0x00);
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x0F, 0x40);
ADS124S06_WriteRegister(dev, 0x10, 0x00);
HAL_Delay(1);
ADS124S06_WriteRegister(dev, 0x11, 0x00);
HAL_Delay(1);
return true;
}
bool ADS124S06_WriteRegister(ADS124S06_Handle *dev, uint8_t reg, uint8_t data) {
uint8_t cmd[3] = { ADS_CMD_WREG | (reg & 0x1F), 0x00, data };
cs_low(dev);
bool ok = HAL_SPI_Transmit(dev->hspi, cmd, 3, ADS_TIMEOUT) == HAL_OK;
cs_high(dev);
return ok;
}
in the ADS124S06_ReadRegister function I'm just doing
{
uint8_t txData[20];
uint8_t rxData[20];
txData[0] = 0x20 ; //RREG
txData[1] = 0x11;
txData[2] = 0x00;
txData[3] = 0x00;
txData[4] = 0x00;
txData[5] = 0x00;
txData[6] = 0x00;
txData[7] = 0x00;
txData[8] = 0x00;
txData[9] = 0x00;
txData[10] = 0x00;
txData[11] = 0x00;
txData[12] = 0x00;
txData[13] = 0x00;
txData[14] = 0x00;
txData[15] = 0x00;
txData[16] = 0x00;
txData[17] = 0x00;
txData[18] = 0x00;
txData[19] = 0x00;
cs_low(dev);
HAL_SPI_TransmitReceive(dev->hspi, txData, rxData, sizeof(rxData), 100);
cs_high(dev);
for (uint8_t i =0; i<20;i++)
{
DEBUG_PRINT("rxdata[%d] = 0x%02X",i, rxData[i]);
}
///////////////////////
static void cs_low(ADS124S06_Handle *dev) {
HAL_GPIO_WritePin(dev->cs_port, dev->cs_pin, GPIO_PIN_RESET);
}
static void cs_high(ADS124S06_Handle *dev) {
HAL_GPIO_WritePin(dev->cs_port, dev->cs_pin, GPIO_PIN_SET);
}
this is what I'm doing. I've configured all the SPI settings as per the datasheet of ADS124S06 and able to receive the data on MISO line,
I've verified it using logic analyser.

written data zoom out view

read data RREG


by seeing the logic analyser output, I can say that the data is available on MISO line but through firmware unable to receive/store it into buffer.
in debug mode keeping the rxData[20] in global and addded it into LiveExpressions, I'm facing an issue that rxData is not filling.

in this only SPI1 is enabled and also uart for debugging.

Please help me out from this issue. I hope I've given all the necessary information to debug this issue in detail, I can also provide any further information needed regarding the same.
Thank you, Kindly Please help me.
Edited to apply source code formatting - please see How to insert source code for future reference.
