|
楼主 |
发表于 2014-9-24 09:49:49
|
显示全部楼层
是的,刚看到他的源代码中作了非线性处理
/*********************************************************************************
* 函数名称: SetDacU()
* 功 能: 输入浮点数电压转换成12位数据送DA
* 参 数: 无
* 返回值 : 无
**********************************************************************************/
vu16 SetDacU(float x)
{
float temp;
u16 i;
temp = (30.00 - 0.10) / ((float)(Ucal30 - Ucal1));//计算系数,每LSB电压值
if(x >= 0.1) //把低于0.1V电压单独计算
{
x = x - 0.1;
temp = (x) / temp;
i = (u16)temp + Ucal1;
}
else
{
temp = (x) / temp;
i = (u16)temp;
}
if(i >= 4095) i = 4095;
DAC_SetChannel1Data(DAC_Align_12b_R, i); //12位电压数据送DAC
SetRL(x);
return i;
}
/*********************************************************************************
* 函数名称: SetDacI()
* 功 能: 输入浮点数电流转换成12位数据送DA
* 参 数: 无
* 返回值 : 无
**********************************************************************************/
vu16 SetDacI(float x)
{
float temp;
u16 i;
temp = (4.000 - 0.100) / ((float)(Ical4 - Ical01));
temp = (x + 0.03) / temp;
i = (u16)temp;
if(i >= 4095) i = 4095;
DAC_SetChannel2Data(DAC_Align_12b_R, i); //12位电流数据送DAC
return i;
} |
|