我正在尝试将int16_t转换为浮动
代码是
int16_t ADC_value;
float voltage = (float)ADC_value/1000.0f;
printf("%frn",voltage);
结果
当电压超过2.0V时,浮点值变为(-(值。但在它转换为浮点值之前,它是正常的。
代码:-
int16_t ADC_value;
printf("%urn",ADC_Value); //this is correct
int16_t到float的转换是错误的吗?
对于ADC,我发现这是主流模式。由于您使用的是LTC1867,因此需要确定IC是在双极模式还是单极模式下运行。FSR为4.096。如果是单极,则应使用uint16_t作为ADC值。如果是双极模式,则应使用int16_t。在双极模式下,ADC是一个有符号的二进制补码,可以在+/-32767之间变化,因此您需要更改我在下面使用的FSR变量。
const float fsr = 4.096; // Full-scale range, Volts, depends on the ADC
const float max_val = 65535.0f; // For 16-bit unsigned ADC, 2^16 -1
float voltage = fsr*((float)ADC_value / max_val);