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:关于ADS1299的VREFP,当配置为双极电源时,VREFP不会拉至2V

Guru**** 2553260 points
Other Parts Discussed in Thread: ADS1299

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/605095/ads1299-about-vrefp-of-ads1299-when-configure-to-bipolar-supplies-vrefp-is-not-pull-up-to-2v

部件号:ADS1299

大家好,我正在调试一个板,它与STM32F767和ADS1299之间的通信。 现在我遇到了一些问题。 我的ADS1299使用内部参考并配置为双极电源。 我按照数据表中的说明初始化系统。 我将0xE0写入CONFIGUURE3,并延迟几乎1秒。 但VREFP仍为-2.5V,电压转换为0x00。 寄存器可以正确写入和读取。 我不知道为什么。 有人能帮我吗,谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ming:

    您能否将您的示意图发送给我? 此外,VCAP1和AVSS之间的电压是多少?

    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您回复我。 现在Vrefp的问题已解决,Vcap1的电压高于1.1V。 但ADS1299的输出数据仍为0x00h,而寄存器可以正确读取。 但在单次激发模式下,输出不稳定,数据不可靠。 我使用STM32F7系列ARM,代码如下。 请帮我吗?

    内部主(无效)

    uINT8_t地址,数据,I;
    易失性UINT32_t RAW_DATA_32[8]={0,0,0,0,0,0,0];
    易失性UINT32_t temp_32;
    UINT8_t ADS1299_DATA_raw1[27];
    双ADS1299_voltage[8];

    HAL_Init();

    /*配置系统时钟*/
    SystemClock_Config();

    /*初始化所有已配置的外围设备*/
    mx_gPIO_Init();
    mx_SPI2_Init();


    //加电
    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);

    //重置
    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过低
    HAL_GPIO_WritePin (GPIOD,GPIO PIN_13,GPIO PIN_RESET);

    //SDATAC
    数据= 0x11;
    HAL_SPI_Transmit (&hspi2,&data,11000);

    //CS2低
    HAL_GPIO_WritePin (GPIOD,GPIO PIN_9,GPIO PIN_RESET);

    //SDATAC
    数据= SDATAC;
    HAL_SPI_Transmit (&hspi2,&data,11000);

    //将0xE0写入CONFIG3
    地址= 0x43;
    HAL_SPI_Transmit (&hspi2,&address,11000);

    数据= 0x00;
    HAL_SPI_Transmit (&hspi2,&data,11000);

    数据= 0xE0;
    HAL_SPI_Transmit (&hspi2,&data,11000);

    HAL_DELAY (1000);


    地址=0x40;
    HAL_SPI_Transmit (&hspi2,&address,11000);

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

    HAL_SPI_Transmit (&hspi2,ADS1299ReG_Conituous_setting,0x181000);

    HAL_DELAY (1000);

    地址= 0x20;
    HAL_SPI_Transmit (&hspi2,&address,11000);

    数据= 0x17;
    HAL_SPI_Transmit (&hspi2,&data,11000);
    HAL_SPI_receive (&hspi2,ADS1299_REG_2,241000);//读取要检查的寄存器数据

    HAL_GPIO_WritePin (GPIOD,GPIO PIN_14,GPIO PIN_RESET);//启动PIN设置为低
    HAL_DELAY (10);
    HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14,GPIO PIN_SET);//启动PIN设置高

    数据= RDATAC;
    HAL_SPI_Transmit (&hspi2,&data,11000);

    //CS2高
    HAL_GPIO_WritePin (GPIOD,GPIO PIN_9,GPIO PIN_SET);

    同时(1)

    }

    }

    以下代码是中断函数。当/DRDY引脚拉低时,该函数将从ADS1299中读取数据。

    void EXTI9_5_IRQHandler (void)

    /*用户代码BEGIN EXTI9_5_IRQn0 */
    //uint8_t地址,数据,i;
    //uint8_t reg[0x18];

    HAL_GPIO_WritePin (GPIOD,GPIO PIN_9,GPIO PIN_RESET);

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

    地址= 0x20;//读取要检查的寄存器数据
    HAL_SPI_Transmit (&hspi2,&address,1,50);
    数据= 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);

    /*用户代码END EXTI9_5_IRQn 0 */
    HAL_GPIO EXTI_IRQHandler (GPIO_PIN_8);
    /*用户代码BEGIN EXTI9_5_IRQn 1 */

    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ming:

    您能否在数据采集期间使用示波器或逻辑分析仪捕获SPI信号并将其发布在此处?

    此致,
    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的。 示波器的照片如下: 第一张图片是SCLK和CS信号,上部是CS波,下部是SCLK信号。 第二个是SCLK和miso信号,上部是miso,下部是SCLK。 第三幅和第四幅图像是SCLK和DRDY信号,上波是DRDY,下波是SCLK。 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请看第三张图片,前27个数据正在读取电压,全部为0x00,下一个数据正在读取ADS1299寄存器,它是正确的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这张图片是SCLK和DRDY在更长的时间内。在振荡器中显示的数据转换速率为250Hz。 很奇怪的是,DRDY信号在中间被拉下来。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ming:

    数据传输顺序似乎正确。 您是否介意发布您回顾的注册设置列表? 我想确保所有功能都已正确启用。

    您显示的DRDY和SCLK关系似乎是正确的。 DRDY将以数据速率从高转换为低。 这将独立于主中继器的任何通信进行,但将遵循寄存器中的数据速率设置。 DRDY将在SCLK的第一个下降边缘返回高位。

    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨,Pisani。 感谢您回复我。 下面列出了我读回的寄存器值。

    因为我使用内部参考电压,所以我将寄存器CONFIG3配置为0xe0,所以我在连续模式下操作ads1299,所以寄存器CONFIG4设置为 0x00。 寄存器的配置是否正确? 希望得到您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    顺便提一下,我可以在RDATA (单激发)模式下读取数据,但它不稳定。 我认为TI也许可以提供一些示例代码来向我们展示正确的操作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ming:

    在尝试不使用RDATA命令检索数据之前,是否发送了RDATAC命令? RDATAC命令将使转换自动加载到输出移位寄存器中。 这可以解释为什么您能够使用RDATA命令读取数据,但不能以其他方式读取数据。

    当您说数据不"稳定"时,您的意思是什么? 您是否可以共享您收集的一些数据?

    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Pisani,

    我按照您的手册中的说明对代码进行了编程,如下所示。

    在为RDATAC模式配置寄存器之后,我将起始引脚设置为高,并将RDATAC命令写入ADS1299,然后程序处于无限循环中。 代码为“Blow (吹气)

    地址=0x40;                           //将连续模式写入寄存器
    HAL_SPI_Transmit (&hspi2,&address,11000);

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

    HAL_SPI_Transmit (&hspi2,ADS1299ReG_CONTINUIENT_setting,0x181000);

    HAL_DELAY (10);

    地址= 0x20;     
    HAL_SPI_Transmit (&hspi2,&address,11000);

    数据= 0x17;
    HAL_SPI_Transmit (&hspi2,&data,11000);
    HAL_SPI_receive (&hspi2,ADS1299_REG,241000);

    HAL_GPIO_WritePin (GPIOD,GPIO PIN_14,GPIO PIN_RESET);//启动PIN设置为低
    HAL_DELAY (10);
    HAL_GPIO_WritePin (GPIOD,GPIO_PIN_14,GPIO PIN_SET);//启动PIN设置高
    数据=启动;
    HAL_SPI_Transmit (&hspi2,&data,1,50);
    HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13,GPIO_PIN_SET);// CS设置高

    HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13,GPIO PIN重置);// CS设置为低

    数据= RDATAC;                                       //发送RDATAC命令。
    HAL_SPI_Transmit (&hspi2,&data,1,50);
    //HAL_DELAY (10);
    HAL_GPIO_WritePin (GPIOD,GPIO_PIN_13,GPIO_PIN_SET);// CS设置高

    同时(1)


    }

    当转换完成且数据准备好检索时,PD12引脚将被拉低并运行到EXT中断程序中,如下所示。

    void EXTI15_10_IRQHandler (void)

    /*用户代码BEGIN EXTI15_10_IRQn 0 */

    uINT8_t地址,数据;
    HAL_GPIO_WritePin (GPIOD,GPIO PIN_13,GPIO PIN_RESET);      //CS设置为低
    HAL_SPI_receive (&hspi2,ADS1299_DATA_RAW,2.71万);           //从ads1299读取27字节

    地址= 0x20;                                             //读取寄存器进行检查
    HAL_SPI_Transmit (&hspi2,&address,1,50);

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

    HAL_SPI_receive (&hspi2,ADS1299_REG,24,50);
    HAL_GPIO_WritePin (GPIOD,GPIO PIN_13,GPIO PIN_SET);

    /*用户代码END EXTI15_10_IRQn 0 */
    HAL_GPIO EXTI_IRQHandler (GPIO_PIN_12);
    /*用户代码BEGIN EXTI15_10_IRQn 1 */



    /*用户代码END EXTI15_10_IRQn 1 */
    }

    这就是代码,谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ming:

    在几天前发送的图片中,有一张图片是您在尝试收集数据后立即读取寄存器数据的。 您在阅读该注册表之前是否还发送了SDATAC命令? 如果以前没有发送SDATAC命令,您将无法读取寄存器。 如果您没有发送SDATAC命令,但仍然能够读取寄存器,则可能表明您从未处于RDATAC模式。

    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Pisani,
    在尝试从AD检索数据后,我确实立即读取了注册数据,但我从未向AD发送SDATAC命令。 我向AD发送SDATAC命令的唯一操作是在开机后和AD初始化之前。 您的意思是在SDATAC模式下只能读取寄存器? 我确实向AD发送了RDATAC命令,并且/DRDY引脚以正确的采样速率下拉。 怎么会发生这种情况? 如何进入RDATAC模式? 我在拔出启动引脚或发送启动命令后将RDATAC命令发送到AD,是否正确?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     您好,Pisani,

    我在阅读您的回复后进行测试,您回答正确。 当我将RDATAC发送到ADS时,我无法读取寄存器。 在我发送SDATAC命令后,寄存器可以读取。 那么问题是什么呢? 我发送了RDATAC命令和/DRDY引脚切换,但无法读取电压数据,而我可以读取寄存器。

    我几乎为此疯狂了。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ming:

    感谢您耐心等待我们尝试确定问题的根源。

    因此,我们确定RDATAC命令不能读取寄存器。 因此,在您之前发布的图像中,您收集了数据,然后立即阅读了注册,这意味着设备处于SDATAC模式。 我们可以得出这样的结论,因为如果设备处于RDATAC模式,您将无法读取寄存器。

    在这种情况下,我们可以同意,对于该特定测试,您无法读取数据的原因是设备处于SDATAC模式。 这是因为当设备配置为SDATAC模式时,数据不会自动加载到输出移位寄存器中。 您是否尝试发送RDATAC然后收集数据?

    Brian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Brian
    感谢您耐心回答我的问题。 我在周末更换了我的开发库并解决了问题,非常感谢。