This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1298: Incorrect device ID

Part Number: ADS1298

Hello,

I'm currently interfacing the ADS1298 with the STM32F407 microcontroller. I tried to put the ADS1298 in the standby mode to verify the functionalities of the SPI. The device ID it reads is 0x7F(0111 1111). However, I can write and read the other registers correctly. I have already tried to debug according to the power-up sequence as specified on page 85 in the data sheet. The VCAP1 voltage i measured is 1.194V. So what could be the cause of the issue? The following code is the ADS1298 initialization function that I'm using.

void ADS_Init(){
    if(verbose){
        HAL_Delay(6000);
        USB_Print("\n************************\n");
        USB_Print("Start ADS1298\n");
    }


    ADS_RESET();
    HAL_Delay(500);

    ADS_SDATAC();
    HAL_Delay(500);

    ADS_getDeviceID();
    HAL_Delay(1000);

    //Work Settings
    ADS_WREG(CONFIG1,0x06);
    HAL_Delay(100);
    ADS_WREG(CONFIG2,0x10);
    HAL_Delay(100);
    ADS_WREG(CONFIG3,0xDC);
    HAL_Delay(100);

    ADS_WREG(LOFF,0x00);
    HAL_Delay(10);

    ADS_WREG(CH1SET,0x60);
    HAL_Delay(10);
    ADS_WREG(CH2SET,0x60);
    HAL_Delay(10);
    ADS_WREG(CH3SET,0x60);
    HAL_Delay(10);
    ADS_WREG(CH4SET,0x60);
    HAL_Delay(10);
    ADS_WREG(CH5SET,0x60);
    HAL_Delay(10);
    ADS_WREG(CH6SET,0x60);
    HAL_Delay(10);
    ADS_WREG(CH7SET,0x60);
    HAL_Delay(10);
    ADS_WREG(CH8SET,0x60);
    HAL_Delay(10);

    ADS_WREG(BIAS_SENSN,0x00);
    HAL_Delay(10);
    ADS_WREG(BIAS_SENSP,0x00);
    HAL_Delay(10);

    ADS_WREG(LOFF_SENSN,0x00);
    HAL_Delay(10);
    ADS_WREG(LOFF_SENSP,0x00);
    HAL_Delay(10);
    ADS_WREG(LOFF_FLIP,0x00);
    HAL_Delay(10);
    ADS_WREG(LOFF_STATP,0x00);
    HAL_Delay(10);
    ADS_WREG(LOFF_STATN,0x00);
    HAL_Delay(10);
    ADS_WREG(GPIO,0x0F);
    HAL_Delay(10);

    ADS_WREG(PACE,0x00);
    HAL_Delay(10);
    ADS_WREG(RESP,0x00);
    HAL_Delay(10);
    ADS_WREG(CONFIG4,0x00);
    HAL_Delay(10);
    ADS_WREG(0x18,0x00);
    HAL_Delay(10);
    ADS_WREG(0x19,0x00);
    HAL_Delay(10);

    ADS_RREGS(0,17);
    HAL_Delay(1000);

    //ADS_START();
    //HAL_Delay(100);


    if(verbose){
        USB_Print("\nADS1298 configure DONE!\n");
        USB_Print("\n**********************\n");
        HAL_Delay(3000);
    }
}

void ADS_SDATAC(){

    HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin,GPIO_PIN_RESET);
    transferSPI(_SDATAC);
    HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin,GPIO_PIN_SET);
}

void ADS_RESET(){
    HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin,GPIO_PIN_RESET);
    transferSPI(_RESET);
    HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin,GPIO_PIN_SET);
}

uint8_t  ADS_getDeviceID(){

    uint8_t  data = ADS_RREG(ID);

    if(verbose){
        USB_Print("\nDevice ID: ");
        USB_SendBits(data);
    }
    return data;
}