OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5765|回复: 2

请问谁知道如何校准ADS1248 0x62自偏置校准 0x60系统偏置校准 0x61系统增益校准

[复制链接]

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2020-7-29
在线时间
28 小时
发表于 2022-12-1 16:53:13 | 显示全部楼层 |阅读模式
1金钱
我目前读写1248完成,网上案例有。但是1248如何校准,没有找到相应的程序
//MUX0    00:电流检测关 XXX:正输入引脚 XXX:负输入引脚         //VBIAS   0x00:引脚偏执电压 不知干啥用
//MUX1    0:内部时钟 01:内部基准电压使用 00:REFP0 REFP0 作为基准输入 000:系统监控 ==0x20
//SYS0    0:预留    011:8 增益 0010: 20sps 速度                                  ==0x32
//OFC0
//OFC1    校准偏置(不要动)
//OFC2
//FSC0    全量程校准(不要动)
//FSC1
//FSC2       
//IDAC0   xxxx:版本号 0:DOUT/DRDY 只用于数据传输 100:IDAC大小为500uA               ==0x04
//IDAC1   1000 激励源1 IEXC1输出 1001 激励源2 IEXC2输出                             ==0x89         

         ADS1248WriteOneRegister_PT100(ADS1248_0_MUX0,0x01);       
         ADS1248WriteOneRegister_PT100(ADS1248_2_MUX1,0x20);       
         ADS1248WriteOneRegister_PT100(ADS1248_3_SYS0,0x32);
         ADS1248WriteOneRegister_PT100(ADS1248_10_IDAC0,0x04);
         ADS1248WriteOneRegister_PT100(ADS1248_11_IDAC1,0x89);
         
         while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0));
         ADS1248SendByte_PT100(0x62);                         //0x62自偏置校准  0x60系统偏置校准  0x61系统增益校准
         while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0));
         ADS1248SendByte_PT100(0x60);
        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0));
         ADS1248SendByte_PT100(0x61);

        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0));

不校准还好,一校准原来的值偏差就很大了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2022-12-2 11:27:06 | 显示全部楼层
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2020-7-29
在线时间
28 小时
 楼主| 发表于 2022-12-8 13:41:16 | 显示全部楼层
问题解决了,1248的校准参考1246的。
/*---------------------------------------------------------
执行校准---系统校准->偏移校准->增益校准
---------------------------------------------------------*/  
uint8 ADS1246_Calibrate(uint8 Gain)  
{  
    uint8 R=0,Cmd;  
    ADS1246_WriteReg(ADC_REG_SYS0,&Gain,1);     //设置校准增益  
  
    Cmd=0x00;  
    ADS1246_WriteReg(ADC_REG_MUX,&Cmd,1);       //恢复正常模式  
    ADS1246_WriteCmd(ADC_CMD_SELFOCAL);     //系统偏移自校准  
    R|=ADS1246_WaitBusy();              //等待校准完成  
  
    Cmd=0x01;  
    ADS1246_WriteReg(ADC_REG_MUX,&Cmd,1);       //设置AINP+AINN=(AVDD+AVSS)/2   
    ADS1246_WriteCmd(ADC_CMD_SYSOCAL);      //系统偏移自校准  
    R|=ADS1246_WaitBusy();              //等待校准完成  
  
    Cmd=0x02;  
    ADS1246_WriteReg(ADC_REG_MUX,&Cmd,1);       //设置AINP=VREF+,AINN=VREF-; for gain calibration  
    ADS1246_WriteCmd(ADC_CMD_SYSGCAL);      //系统增益校准  
    R|=ADS1246_WaitBusy();                        
  
    return R;  
}  参考:https://blog.csdn.net/chinazhangzhong123/article/details/54151103
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 19:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表