|
发表于 2013-9-3 09:45:28
|
显示全部楼层
本帖最后由 xppx1987 于 2013-9-3 10:16 编辑
[code][/code]xuehu5808 发表于 2013-7-31 18:40
找到公司的网站,在网站上找到联系电话,打电话去问,她们会告诉你的
您好!我在网上看到了一段关于CS5550增益校准的程序,可是始终没有弄明白这段程序的意思,比如下面的程序是CS5550通道1的增益校准:1、这个fullscale1满量程是根据自己需要的输入范围而得来,还是根据参考电压/gain而来的?2、为什么下面使用了按键操作取了多个点进行校准,而不是直接根据DC增益校准寄存器的值应改为2.5/(信号满量程电压*10),发送校增益准令?:dpPos=0时,delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000=fullScale1*1/2^3;dpPos=1时,delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000=fullScale1*1/2^6;dpPos=2时,delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000=fullScale1*1/2^9;dpPos=3时,delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000=fullScale1*1/2^12。
[code]
char key;
float delta;
static char idata dpPos=0;
// -------- AIN1 Gain modify ---------
case GAIN1://AIN1增益
showNum(fullScale1, 1);//显示通道1满量程值
delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000;//先算术运算后移位运算
while(1)
{
key=getKey();//读取键值
switch(key)
{
case Menu:
showPoint(dpPos);
while(1)
{
key=getKey();//读取键值
if(key==OK)
{
delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000;//?
showCommand(opNum);
showNum(fullScale1,1);//显示通道1满量程值
break;
}
switch(key)
{
case Down:
if(dpPos<3) //dpPos=0、1、2、3
{
++dpPos;
showPoint(dpPos);
}
break;
case Up:
if(dpPos>0) //dpPos=0、1、2、3
{
--dpPos;
showPoint(dpPos);
}
break;
}
}
break;
case Up:
fullScale1 += delta;
showNum(fullScale1, 1);
break;
case Down:
fullScale1 -= delta;
showNum(fullScale1, 1);
break;
case OK:
ledOff();
modify(0xCA, 0x04); // ain1 gain 发送增益校准命令
ledOn();
goto toOut;
break;
}
}
break;
|
|