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:不正确的器件 ID

Guru**** 1123190 points
Other Parts Discussed in Thread: ADS1298
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1329154/ads1298-incorrect-device-id

器件型号:ADS1298

您好!

我目前正在将 ADS1298与 STM32F407微控制器相连。 我曾尝试将 ADS1298置于待机模式、以验证 SPI 的功能。 它读取的器件 ID 为0x7F (0111 1111)。 但是、我可以正确写入和读取其他寄存器。 我已经尝试根据数据表85页指定的上电顺序进行调试。 测得的 VCAP1电压 I 为1.194V。 那么、问题的原因可能是什么? 以下代码是我正在使用的 ADS1298初始化函数。

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;
}