TI中文支持网
TI专业的中文技术问题搜集分享网站

ADS1255更改PGA配置

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位数据。
}

Amy Luo:

您好,
感谢您对TI产品的关注!
您是仅对ADCON寄存器操作不起作用,还是其他寄存器也不能正确读写?现在能正确读取寄存器值吗,数据手册RREG: Read from Registers和WREG: Write to Register部分有对读和写寄存器命令有详细说明,也有时序图,您可以附上读取ADCON寄存器的示波器波形图吗

user6473862:

回复 Amy Luo:

您好,下面分别是配置ADCON和DRATE寄存器时的波形图:

Amy Luo:

回复 user6473862:

您可以同时用三个探头分别测试SCLK、DIN和DOUT三个信号线上的波形图吗,因为只有这样才能看出您发出的命令字节是否正确,同时可以查看设备返回的寄存器值是否正确

赞(0)
未经允许不得转载:TI中文支持网 » ADS1255更改PGA配置
分享到: 更多 (0)