Other Parts Discussed in Thread: ADS8638
器件型号: F28377D-SEP
主题中讨论的其他器件: ADS8638
您好、
我当前正在使用 TI F28379D 与连接的 PoE 电路板 ADS8638 ADC 。
我能够正确读取 ADC 数据并进行打印 整数值 使用。 uart_printf
不过、在我修改要使用的代码时 浮点计算 并使用打印值 %f格式说明符 和程序 卡住并停止执行 。
工作代码(基于整数–正常工作)
void ads8638_raw_to_voltage (uint16_t raw)
{
uint8_t channel =(原始>> 12)& 0x07;
uint16_t ADC_RAW = RAW 和 0x0FFF;
int32_t MV_AT_ADC_PIN = 0;
int32_t final_hw_voltage = 0;
const float HW_GAIN_FACTOR = 5.0f;
IF(通道== 2 ||通道=3)
{
int16_t SIGNED_val;
UART_printf(“CH%u【双极】原始:0x%03x |“、通道、ADC_RAW);
IF (ADC_RAW 和 0x800)
{
signed _val =(int16_t)(ADC_RAW | 0xF000);
UART_printf(“Sign:NEG |“);
}
暴露
{
signed val =(int16_t) ADC_RAW;
UART_printf(“Sign:POS |“);
}
MV_AT_ADC_pin =((int32_t) signed _val * 10000)/2048;
final_hw_voltage =(int32_t)((float) MV_AT_ADC_pin * HW_GAIN_FACTOR);
UART_printf(“Pin_mV:%ld | HW_Voltage:%ld mV\r\n“、
MV_AT_ADC_pin、final_HW_VOLTAGE);
}
暴露
{
MV_AT_ADC_pin =((int32_t) ADC_RAW * 10000)/ 4095;
UART_printf(“CH%u【单极性】原始:0x%03x | mV:%ld\r\n“、
通道、ADC_RAW、MV_AT_ADC_PIN);
}
}
RX = 0x3000
CH3【双极】原始值:0x000 |符号:POS | PIN_mV:0 | HW_Voltage:0mV
RX = 0x4000
CH4【单极性】原始:0x000 | mV:0
RX = 0x5000
通道 5【单极性】原始值:0x000 | mV:0
RX = 0x6CC7
通道 6【单极性】原始值:0xCC7 | mV:7987
RX = 0x7089
CH7【单极】原始值:0x089 | mV:334
RX = 0x0C0B
CH0【单极】原始值:0xC0B | mV:7528
RX = 0x1BCC
CH1【单极性】原始值:0xBCC | mV:7374
RX = 0x2000
CH2【双极性】原始:0x000 |符号:POS | PIN_mV:0 | HW_Voltage:0mV
有问题的代码(浮点–程序被卡住
void ads8638_raw_to_voltage (uint16_t raw)
{
uint8_t channel =(原始>> 12)& 0x07;
uint16_t ADC_RAW = RAW 和 0x0FFF;
悬空 float_MV_pin = 0.0f;
悬空 float_hw_volts = 0.0f;
const float HW_GAIN_FACTOR = 10.0f;
IF(通道== 2 ||通道=3)
{
int16_t SIGNED_val;
IF (ADC_RAW 和 0x800)
signed _val =(int16_t)(ADC_RAW | 0xF000);
暴露
signed val =(int16_t) ADC_RAW;
float_MV_pin =((float) signed _val * 10000.0f)/ 2048.0f;
float_hw_volts =(float_MV_pin * HW_GAIN_FACTOR)/1000.0f;
UART_printf(“CH%u【双极】原始:0x%03x |引脚:%.2f mV |硬件:%.3f V\r\n“、
通道、ADC_RAW、float_MV_pin、float_hw_volts);
}
暴露
{
float_hw_volts =((float) ADC_raw * 10.0f)/4095.0f;
UART_printf(“CH%u【单极性】原始:0x%03x | HW:%.3f V\r\n“、
通道、ADC_RAW、float_hw_volts);
}
}
请指导我解决问题