我正在尝试将int16_t转换为浮动
代码是
int16_t ADC_value;
float voltage = (float)ADC_value/1000.0f;
printf("%f\r\n",voltage);结果
当电压超过2.0V时,浮点值变为(-)值。但在转换为浮点值之前,这是正常的。
代码:-
int16_t ADC_value;
printf("%u\r\n",ADC_Value); //this is correct这是int16_t的浮点转换错误吗?
发布于 2022-08-02 15:17:50
对于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); https://stackoverflow.com/questions/73204570
复制相似问题