微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 我在用ads1247驱动PT100时,数据采集不准确,求助啊

我在用ads1247驱动PT100时,数据采集不准确,求助啊

时间:10-02 整理:3721RD 点击:

我的原理图采用的时ads1247手册上的电路图,但是我在使用时得不到正确的值,我用程序读取ads1247内部的寄存器,可以得到初始化的值,说明程序是没问题的,芯片应该也没坏,但是参考电阻RRef=820的电阻上始终得不到1.64v的电压,VREfcom和VREFOUT之间的电容的电压是2.04V,我想采集不到正确的值,应该和RREF两端得不到1.64V的电压有关,但是我不知道哪里有问题了,求助啊

我的初始化代码如下

void ADS1247_init(void)
{
    SPI2_Config();
    Delay_ms(2);
    START_HIGH;
    Delay_ms(20);
    RESET_HIGH;
    Delay_ms(2);
    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8) == 1);
    CS_LOW;
    Delay_ms(2);
    SPI2_SendByte(CMD_Reset);
    Delay_ms(2);
    ADS1247_Calibrate();
    Delay_ms(2);
    SPI2_SendByte(CMD_RDataC);
    Delay_ms(2);
    ADS1247WREG(Reg_MUX0, 0x0A); ////¹Ø±ÕµçÁ÷Ô´£¬ÕýÊäÈëͨµÀAIN1£¬¸ºÊäÈëͨµÀAIN2.
    Delay_ms(2);
    ADS1247WREG(Reg_VBias, 0x00); //¹Ø±ÕÆ«Öõçѹ
    Delay_ms(2);
    ADS1247WREG(Reg_MUX1, 0x38); //ʽÖдò¿ªÄÚ²¿²Î¿¼
    Delay_ms(2);
    ADS1247WREG(Reg_SYS0, 0x22); //PGA=4, 20sps
    Delay_ms(2);
    ADS1247WREG(Reg_IDAC0, 0x06); //µçÁ÷Ô´µçÁ÷1ma
    Delay_ms(2);
    ADS1247WREG(Reg_IDAC1, 0x03); //µÚÒ»¸ö¼¤ÀøµçÁ÷Êä³öÒý½ÅAIN0£¬µÚ¶þ¸öÊÇAIN3
    Delay_ms(2);
    SPI2_SendByte(CMD_SYNC);
    Delay_ms(2);
    SPI2_SendByte(0xff);
    Delay_ms(2);
    //
    CS_HIGH;
}

float ADS1247_DATA(void)
{
    u32 value;
    float temp1,temp2;
		while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8) == 1);
    CS_LOW;
    SPI2_SendByte(CMD_RData);
    Delay_ms(2);
    value = SPI2_SendByte(0xff) << 16;
    value += SPI2_SendByte(0xff) << 8;
    value += SPI2_SendByte(0xff);
    Delay_ms(2);
    CS_HIGH;

    if(value < 0x7fffff || value == 0x7fffff)
    {
        temp1 = (1.64*value/0x7fffff*1000/4- 100) / 0.39;
    }
    if(value > 0x7fffff)
    {
        temp1 = (-1.64 * (0xffffff - value + 1) / 0x7fffff * 1000 / 4 - 99) / 0.39;
    }
    return temp1 ;
}

void ADS1247_Calibrate(void)
{
    ADS1247WREG(Reg_SYS0, 0x22); //PGA=4, 20sps
    ADS1247WREG(Reg_MUX1, 0x20);
    SPI2_SendByte(CMD_SELFOCAL);
    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8) == 1);
    ADS1247WREG(Reg_MUX1, 0x21);
    SPI2_SendByte(CMD_SYSOCAL);
    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8) == 1);
    ADS1247WREG(Reg_MUX1, 0x22);
    SPI2_SendByte(CMD_SYSGCAL);
    while(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_8) == 1);
}

我觉得你的电路在连接传感器部分和手册的推荐电路差别很大.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top