10667|0

178

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

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的校准有特定的步骤吗?谢谢!

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
立即报名 | 2025 瑞萨电子工业以太网技术日即将开启!
3月-4月 深圳、广州、北京、苏州、西安、上海 走进全国6城
2025瑞萨电子工业以太网技术巡回沙龙聚焦工业4.0核心需求,为工程师与企业决策者提供实时通信技术最佳解决方案。
预报从速,好礼等您拿~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表