PLZ 明白我不习惯使用 eng。
我要创建一个库。 在基于 C 或 C++的 sketch 中。
我在 DATA_ARRAG[](字节类型、0~8 (9))中保存了数据集、并且希望将数据更改为双精度型。
DATA_ARRAY 的0~2是标头(CX xx xx)、3~5是 CH1值(V)、6~8是 CH2 值(V)。
我使用以下代码将数据转换为值、此代码是否正确?
/------------------------------------------------------ /
if ((data_array[3]>> 4)<= 7){//正值变换
temp =(data_array[3]* pow (256、2))+(data_array[4]* pow (256、1))+(data_array[5]* pow (256、0));
CH1_val = double (temp)/(pow (2、23)- 1)/ GAIN1 * VREF * 1000;//默认增益=(6)、VREF = 2.42V、'*1000'表示(V >mV)
serial.println (ch1_val、10);
}否则{ //负值转换
temp = 0xFFFFFF-((DATA_array[3]* pow (256、2))+(DATA_array[4]* pow (256、1))+(DATA_array[5]* pow (256、0)))+ 1;
CH1_val = double (temp)/(pow (2、23)- 1)/ GAIN1 * VREF * 1000;
serial.println (-ch1_val、10);
}
/------------------------------------------------------ /
当我读取交流测试信号时、范围为-0.9xmV 至1.1xmV、如果考虑零偏移(+0.1mV)、该值是正确的。
但是、当我将增益更改为12时、范围是增益6的一半值。 (-0.5xmV 至0.5xmV)。
我猜放大后的值会增加、分频后的值将与增益6相同 、因为增益会增加。
您是否知道发生此错误的原因? (寄存器值已正确更改)