综合技术交流
直播中

张子强

6年用户 8经验值
私信 关注
[问答]

AD7190如何进行校准

初始化AD7190的时候想进行内部零电位和内部满量程校准,但是都不成功。
基本配置程序如下
void initAD7190() { u8 sendData[4]={0,0,0,0};
resetAD7190(); //复位AD7190 //设置配置寄存器
sendData[0] = 0x00; //斩波失能,外部基准在ref1+和ref1-之间
sendData[1] = 0x00; //初始选择通道0,在AIN1和AIN2之间,
sendData[2] = 0x60; //500nA电流源关闭, 使能外部基准电压检测,使能输入缓冲器。双极性模式,增益128
writeAd7190Register(0x10,sendData);//写AD7190配置寄存器 //通道0进行内部零电平校准
sendData[0] = 0x80; //内部零电平校准 MD2 MD1 MD0=0b100是零电平校准模式
sendData[1] = 0x04; //sinc4滤波器,禁止奇偶校准,REJ60=1,更好的50Hz抑制
sendData[2] = 0x10; //,输出速率=50Hz
writeAd7190Register(0x08,sendData); //写AD7190模式寄存器
while(RDY); //等待校准完成 处于空闲模式
//通道0进行内部满量程校准
sendData[0] = 0xA0; //内部满量程校准 MD2 MD1 MD0=0b101是满量程校准模式
sendData[1] = 0x04; //sinc4滤波器,禁止奇偶校准,REJ60=1,更好的50Hz抑制
sendData[2] = 0x10; //输出速率=50Hz
writeAd7190Register(0x08,sendData); //写AD7190模式寄存器
delay(10000); 在这边延时好像并没有起到作用
while(RDY); //等待校准完成 处于空闲模式
/* 读出零电平校准值查看 */
在这里读出的值还是初始值,说明校准不成功。。。。。
readAD7190Reg(0x70);
zeroScalVaule=(u32)spiRevArry[1]<<16;
zeroScalVaule|=(u16)spiRevArry[2]<<8;
zeroScalVaule|=spiRevArry[3];
/* 读出满量程校准值查看 */
在这里读出的值还是初始值,说明校准不成功。。。。。
readAD7190Reg(0x78);
fullScalVaule=(u32)spiRevArry[1]<<16;
fullScalVaule|=(u16)spiRevArry[2]<<8;
fullScalVaule|=spiRevArry[3];
//切换到通道1 这里将通道切换到通道1 ,对通道1进行校准
sendData[0] = 0x00; //斩波失能,外部基准在ref1+和ref1-之间
sendData[1] = 0x01; //初始选择选择通道1,在AIN3和AIN4之间,
sendData[2] = 0x60; //500nA电流源关闭, 使能外部基准电压检测,使能输入缓冲器。双极性模式,增益128
writeAd7190Register(0x10,sendData);//写AD7190配置寄存器
//通道1进行内部零电平校准
sendData[0] = 0x80; //内部零电平校准
sendData[1] = 0x04; //sinc4滤波器,禁止奇偶校准,REJ60=1,更好的50Hz抑制,输出速率=300Hz
sendData[2] = 0x10;
writeAd7190Register(0x08,sendData); //写AD7190模式寄存器
while(RDY); //等待校准完成 处于空闲模式
//通道0进行内部满量程校准
sendData[0] = 0xA0; //内部满量程校准
sendData[1] = 0x04; //sinc4滤波器,禁止奇偶校准,REJ60=1,更好的50Hz抑制,输出速率=300Hz
sendData[2] = 0x10;
writeAd7190Register(0x08,sendData); //写AD7190模式寄存器
while(RDY); //等待校准完成 处于空闲模式 /* 读出零电平校准值查看 */ 在这里读出的值还是初始值,说明校准不成功。。。。。
readAD7190Reg(0x70);
zeroScalVaule=(u32)spiRevArry[1]<<16;
zeroScalVaule|=(u16)spiRevArry[2]<<8;
zeroScalVaule|=spiRevArry[3];
/* 读出满量程校准值查看 */
在这里读出的值还是初始值,说明校准不成功。。。。。
readAD7190Reg(0x78);
fullScalVaule=(u32)spiRevArry[1]<<16;
fullScalVaule|=(u16)spiRevArry[2]<<8;
fullScalVaule|=spiRevArry[3]; }
上面是AD7190的初始化程序,通信是正常的,程序上也没发现什么问题!是不是AD7190的校准有特定的步骤吗?谢谢!

回帖(1)

张子强

2020-8-25 11:53:30
好尴尬  没有人
举报

更多回帖

发帖
×
20
完善资料,
赚取积分