Other Parts Discussed in Thread: MSP430G2333
Hello -
We're hitting some inconsistencies in the accuracy of the internal temperature sensors for the CC2652RB units we are installing in our product.
We've designed a "selfTest" which includes reading the internal temperature sensor registers, converting the value to degrees Celsius, and then checking that this value is within 5C of 20C. We run this "selfTest" twice in production - once at our contract manufacturer's facility when the PCBs are still panelized for parallel testing and once when the product is built up completely and at its final testing stage. We've had a lot of fallout at our final testing stage (350+ in the past few months) in our facility as compared to our contract manufacturer's facility (11 failures, all retested to PASS), so we've started to investigate this specifically.
I've taken a few failed units off the line and compared it to a personal test unit which was successful throughout testing. Even with employing the Temperature driver and ensuring the AON_BATMON was ready to provide a new temperature value, there is still a large difference in output values from these failing units and my passing one.
Essentially - I've written special firmware which runs the below code in a loop 10x, then reports the averaged value out by beeping it audibly on a buzzer.
while(!AONBatMonNewTempMeasureReady()); // Wait for temp sensor to be ready temp = Temperature_getTemperature()*10; // x10 to report value in 0.1*degC
The two units which failed are consistently reporting and reading values 5-8C lower than the passing unit, which is well outside the tolerance given in the datasheet. We've tested this down at -20C and up at 50C with very similar results. Retesting the product gives consistent numbers per unit, but precision between units is the issue.
Is there an offset value that is defined/measured in production that isn't being applied by the driver software? Why is there such a discrepancy between these parts?