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.

关于ADS1299参考电压的问题

Other Parts Discussed in Thread: ADS1299

各位朋友大家好,我最近在调ADS1299和STM32的通信,采用的是如下图所示参考电压接线示意图。按照手册上面写的初始化的,powerdown低电平拉高->延时1s->reset信号->延时1s->SDATAC->写0xe0到CONFIGURE3寄存器->START->RDATAC, 各寄存器读写都正常,就是电压输出总是0x00,而VREFP引脚一直都是-2.5v,无法拉高到2v,我手头有一块ADS1299评估板,在开机后,VREFP迅速从-2.5v拉高到2v,不知道我的程序有什么问题,还有什么没做到的,请大家指教,谢谢。

  • 看下寄存器0X03h bit7是否将内部reference buffer给disable掉了。

  • configure3的值已经设为0xe0了,第一位置1的话是使用内部参考电压的,是吧。下面是我的程序。

    //CS1 HIGH
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13,GPIO_PIN_SET);

    //CS2 LOW
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_9,GPIO_PIN_RESET);

    //SDATAC
    data = SDATAC;
    HAL_SPI_Transmit(&hspi2,&data,1,50);

    //WRITE 0xE0 TO CONFIG3
    address = 0x43;
    HAL_SPI_Transmit(&hspi2,&address,1,50);

    data = 0x00;
    HAL_SPI_Transmit(&hspi2,&data,1,50);

    data = 0xE0;
    HAL_SPI_Transmit(&hspi2,&data,1,50);

    HAL_Delay(1000);

  • 多谢关注,现在Vrefp的电压已经上来了,与Vrefn之间电压为4.5v。但是输出都是0x00,用的是RDATAC模式,能够根据DRDY进入中断,有sclk信号,我在中断里面先采集数据,再采集寄存器的值,从示波器上能看到波形,如下图所示。   在RDATAC模式下是不是检测到了DRDY信号后直接读入27个数据就行了,还要发送RDATA命令吗?

  • 你好,现在VREFP参考电压已经有了,但是现在很奇怪的是,我采用RDATAC模式,每次进入中断,都采不到数据,ads1299输出都是0x00,而可以读出寄存器的数值,但是用RDATA模式的话,就可以读出电压值,请问这是怎么回事,RDATAC模式下,DRDY都有信号产生,和设置的采样频率一样,就是输出都是0x00。

  • 下面是我的程序,请哪位大神麻烦看一下,有什么问题没有,多谢了。

    int main(void)
    {

    uint8_t address,data,i;
    volatile uint32_t raw_DATA_32[8]={0,0,0,0,0,0,0,0};
    volatile uint32_t temp_32;
    uint8_t ADS1299_DATA_RAW1[27];
    double ADS1299_VOLTAGE[8];

    HAL_Init();

    /* Configure the system clock */
    SystemClock_Config();

    /* Initialize all configured peripherals */
    MX_GPIO_Init();
    MX_SPI2_Init();


    //POWER UP
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);
    HAL_Delay(2);
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);
    HAL_Delay(2);
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);

    HAL_Delay(1000);

    //RESET
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,GPIO_PIN_SET);
    HAL_Delay(2);
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,GPIO_PIN_RESET);
    HAL_Delay(2);
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,GPIO_PIN_SET);

    HAL_Delay(1000);

    //cs1 low
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13,GPIO_PIN_RESET);

    //SDATAC
    data = 0x11;
    HAL_SPI_Transmit(&hspi2,&data,1,1000);

    //CS2 LOW
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_9,GPIO_PIN_RESET);

    //SDATAC
    data = SDATAC;
    HAL_SPI_Transmit(&hspi2,&data,1,1000);

    //WRITE 0xE0 TO CONFIG3
    address = 0x43;
    HAL_SPI_Transmit(&hspi2,&address,1,1000);

    data = 0x00;
    HAL_SPI_Transmit(&hspi2,&data,1,1000);

    data = 0xE0;
    HAL_SPI_Transmit(&hspi2,&data,1,1000);

    HAL_Delay(1000);


    address =0x40;
    HAL_SPI_Transmit(&hspi2,&address,1,1000);

    data=0x17;
    HAL_SPI_Transmit(&hspi2,&data,1,50);

    HAL_SPI_Transmit(&hspi2,ADS1299Reg_Conituous_Setting,0x18,1000);

    HAL_Delay(1000);

    address = 0x20;
    HAL_SPI_Transmit(&hspi2,&address,1,1000);

    data = 0x17;
    HAL_SPI_Transmit(&hspi2,&data,1,1000);
    HAL_SPI_Receive(&hspi2,ADS1299_REG_2,24,1000); //READ THE REGISTERS DATA TO CHECK

    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_14,GPIO_PIN_RESET); //START PIN SET LOW
    HAL_Delay(10);
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_14,GPIO_PIN_SET); //START PIN SET HIGH

    data = RDATAC;
    HAL_SPI_Transmit(&hspi2,&data,1,1000);

    //CS2 HIGH
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_9,GPIO_PIN_SET);

    while(1)
    {

    }

    }

    下面的是中断服务程序。

    void EXTI9_5_IRQHandler(void)
    {
    /* USER CODE BEGIN EXTI9_5_IRQn0 */
    //uint8_t address,data,i;
    //uint8_t reg[0x18];

    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_9,GPIO_PIN_RESET);

    HAL_SPI_Receive(&hspi2,ADS1299_DATA_RAW,27,50);

    address = 0x20; //READ THE REGISTER DATA TO CHECK
    HAL_SPI_Transmit(&hspi2,&address,1,50);
    data = 0x17;
    HAL_SPI_Transmit(&hspi2,&data,1,50);

    HAL_SPI_Receive(&hspi2,ADS1299_REG_2,0x18,50);

    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_9,GPIO_PIN_SET);

    /* USER CODE END EXTI9_5_IRQn 0 */
    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_8);
    /* USER CODE BEGIN EXTI9_5_IRQn 1 */

    }

    谢谢大家了