Part Number: MSP432P4011
P/N - MSP432P4011
IDE - CCS 9.2
TI-RTOS
Hello forum;
I'm having a difficulty with the ADC14 hardware and driver on MSP432P4011 running TI-RTOS.
I have a custom PCB designed with the MSP432 interfaced with a bunch of peripherals. I have a TI LMT84 temperature sensor output being measured on an ADC pin (P5.4 i.e. ADC14.A1). The LMT sensor outputs an analog voltage proportional to the ambient temperature and the voltage can be converted into *C temperature.
I have used the sysconfig tool to configure the ADC as seen below -
I'm using the ADC as a 14 bit, VDD (+3.3V) referenced and I'm invoking the "adc_convertToMicroVolts() fxn to get a real, uVolt value as follows -
// Open ADC channels for usage ADC_Handle adcHandle_TEMP_INT = ADC_open(TEMP_INT, &TEMP_INT_params); // Sample the analog output from the ADC resStatus = ADC_convert(adcHandle_TEMP_INT, &result); //Convert to microvolts adcValueUv = ADC_convertToMicroVolts(adcHandle_TEMP_INT, result); Display_printf(handle_disp, 0, 0, "ADC reads %d", adcValueUv); // Close ADC channel after usage ADC_close(adcHandle_TEMP_INT);
I'm even invoking the above function 10 times and averaging to cancel out any noise issues.
My problem -
I'm seeing significant offset voltage through the above approach.
I have 2 identical sets of hardware manufactured and assembled (factory assembled, no hand soldering etc.) and I'm running the exact code on both. I got the following results -
Hardware 1 - Location office
Multi-meter (DMM) reads a voltage of 888 mV on the ADC pin, corresponding to a temperature of 26.7*C
ADC reads 960 mV with a variance of +/- 60 mV, corresponding to a temperature of 13.6*C
Hardware 2 - Location home
DMM reads voltage of 909 mV on the ADC pin, corresponding to a temperature of 23*C
ADC reads 950 mV with a variance of +/- 30 mV, corresponding to a temperature of 15.5*C
Clearly a small offset value is going to throw off the temperature sensing.
My question is - Is this within the spec for ADC14 peripheral? Is there some intermediate step I'm missing?
Any insights would be greatly appreciated!