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.

ADS1255更改PGA配置

Other Parts Discussed in Thread: ADS1255, ADS1256

TI大佬们好,最近使用ADS1255时,可以正确采集到数据,但在配置PGA时,更改ADCON寄存器不起作用,怀疑是ADS1256WREG函数可能有问题,导致配置寄存器失败,可以帮我看看哪里有问题吗?

void ADS1256WREG(unsigned char regaddr,unsigned char databyte)
{
AD_ON;
while((*AT91C_PIOA_PDSR>>15)&0x0001); //当ADS1256_DRDY为低时才能写寄存器
spiReadWrite(ADS1256_CMD_WREG | (regaddr & 0x0F)); //向寄存器写入数据地址
spiReadWrite(0x00); //写入寄存器的个数n-1
spiReadWrite(databyte); //向regaddr地址指向的寄存器写入数据databyte
AD_OFF;
}

//初始化ADS1256
void ADS1255_Init(void)
{
ADS1256WREG(ADS1256_STATUS,0x06); // 高位在前、校准、使用缓冲
ADS1256WREG(ADS1256_ADCON,ADS1256_GAIN_2);
ADS1256WREG(ADS1256_DRATE,ADS1256_DRATE_30000SPS);
ADS1256WREG(ADS1256_IO,0x00);
}

//读取AD值
unsigned int ADS1256ReadData(void)
{
unsigned int sum=0;
AD_ON;while((*AT91C_PIOA_PDSR>>15)&0x0001); //当ADS1256_DRDY为低时才能写寄存器

spiReadWrite(ADS1256_CMD_SYNC);
spiReadWrite(ADS1256_CMD_WAKEUP);
spiReadWrite(ADS1256_CMD_RDATA);

sum |= (spiReadWrite(0xff) << 16);
sum |= (spiReadWrite(0xff) << 8);
sum |= spiReadWrite(0xff);
AD_OFF;
return sum;
}


unsigned int ADS_sum(unsigned char channel)
{
return ADS1256ReadData();//读取AD值,返回24位数据。
}