完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
初始化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个回答
|
|
好尴尬 没有人
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
OptiSystem与OptiBPM的联合使用:MMI耦合器性能评估
18 浏览 0 评论
587 浏览 0 评论
OptiSystem与OptiSPICE的联合使用:收发机电路的眼图分析
449 浏览 0 评论
590 浏览 0 评论
上位机如何实现发送参数给单片机,单片机保存接收的参数重复运行指定的功能
1840 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 20:04 , Processed in 0.486260 second(s), Total 43, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号