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.

关于ADS1247/ADS1248设计PT100的若干问题

Other Parts Discussed in Thread: ADS1248, ADS1247

1. tidc215参考设计的电路,所有输出是否是理想的?比如,电流源1mA的输出,参考电阻RREF上的压降是否是1.64?   按照参考打样,所有电阻使用0.1% 25ppm,参考电阻上的压降,用高精度万用表测不到1.64V,在1.62V左右。

2. 参考手册里的电阻校正指的是什么?是PT100? 还是参考电阻?

3. 三种命令校正是否真的起作用?

4. 参考设计上的数据是否是ADS1247/ADS1248硬件上绝对达到的?还是需要了一定的软件处理?

附上我的 芯片配置,读写寄存器,读数据,数据转换代码

    //判断内部参考电压是否打开
    ADS1248_writeReg(ADS1248_TEST_REG, 0x20);
    if(ADS1248_readReg(ADS1248_TEST_REG) == 0x20)        //打开参考电压和选择参考电压通道 MUX1 = 0x20  0 01 00 000     VREFCON = 01 REFSELT = 00  MUXCAL = 000
    {    
        printf("读取的值与写入的值一致\r\n");
    }   
    delay_ms(1);
    ADS1248_writeReg(ADS1248_MUX0, 0x0A);            //设置电压采样通道    MUX0 = 00 001 010  POS = 001 NEG = 010
    delay_ms(1);    
    ADS1248_writeReg(ADS1248_SYS0, 0x32);            //设置增益、采样速率  SYS0 = 0 011 0010    FGA = 8  DR = 20
    delay_ms(1);    
    ADS1248_writeReg(ADS1248_VBIAS, 0x00);            //设置偏置电压
    delay_ms(1);    
    ADS1248_writeReg(ADS1248_IDAC0, 0x06);            //设置恒流源电流大小     IDAC0 = 1001 0 110        1mA
    delay_ms(1);
    ADS1248_writeReg(ADS1248_IDAC1, 0x03);            //设置电流流经通道        IDAC1 = 0000 0011        通道0 通道3
    delay_ms(1);

void ADS1248_writeReg(uint8_t addr, uint8_t data)
{
    SPI_CS_L();            // CS拉低进行操作
    
    
    SPI_Write_ReadByte((addr & 0x0F) | ADS1248_CMD_WREG);
    SPI_Write_ReadByte(0x00);
    SPI_Write_ReadByte(data);
    
    SPI_CS_H();            // CS拉高

}

uint8_t ADS1248_readReg(uint8_t addr)
{
    uint8_t ret = 0 ;
    
    SPI_CS_L();            // CS拉低进行操作

    
    SPI_Write_ReadByte((addr & 0x0F) | ADS1248_CMD_RREG);
    SPI_Write_ReadByte(0x00);
    ret = SPI_Write_ReadByte(ADS1248_CMD_NOP);
    
    SPI_CS_H();            // CS拉高

    return ret;
}

uint32_t ADS1248_readData(void)
{

    uint32_t ret;
    uint8_t byte;
    
    SPI_CS_L();
    
    SPI_Write_ReadByte(ADS1248_CMD_RDATA);    //读数据: 0x12  NOP  NOP  NOP
                                            //            cmd  ..      ..   ..
//    while(DRDY == 1) ;    
    delay_us(2);
    
    byte = SPI_Write_ReadByte(ADS1248_CMD_NOP);
    ret = (((uint32_t)byte) << 16) | ((byte & 0x80) ? 0xFF000000:0x00000000);
    ret |= (((uint32_t)SPI_Write_ReadByte(ADS1248_CMD_NOP)) << 8);
    ret |= (uint32_t)SPI_Write_ReadByte(ADS1248_CMD_NOP);
    SPI_Write_ReadByte(ADS1248_CMD_NOP);
    
    delay_us(2);
    
    SPI_CS_H();
    
    return ret;


}

        value = ADS1248_readData();
        RTD = (820.00*value)/(8.0*0x3fffff);            //测量的电阻值

麻烦TI技术回复