FILE: adc_ex17_open_shorts_detection.c
This example demonstrates the ADC open/shorts
detection(ADCOSDETECT) circuit configuration for detecting pin faults in the system. The
example enables the open/shorts detection circuit along with mandatory ADC configurations
and diagnoses ADCA A0 input pin state before starting normal ADC conversions.
To enable the ADC OSDetect circuit:
- Configure the ADC for conversion (E.g.
channel, SOC, ACQPS, prescalar, trigger etc). The OSDetect functionality is available in
12-bit only, hence ADCA is configured in 12-bit mode in the example.
- Set up the ADCOSDETECT register for the
desired voltage divider connection. Refer device TRM for details on available OSDetect
configurations.
- Initiate a conversion and inspect the
conversion result. Note: The results must be interpreted based on what is driving on the
input side and what are the values of Rs and Cp. If the Vs signal can be disconnected
from the input pin, the circuit can be used to detect open and shorted input pins. In
the example, after configuring ADCA A0 channel in 12-bit mode along with other required
ADC configurations, following algorithm is used to check the A0 pin status: Step 1:
Configure full scale OSDETECT mode & capture ADC results(resultHi) Step 2: Configure
zero scale OSDETECT mode & capture ADC results(resultLo) Step 3: Disable OSDETECT
mode and capture ADC results(resultNormal) Step 4: Determine the state of the ADC pin a.
If the pin is open, resultLo would be equal to Vreflo and resultHi would be equal to
Vrefhi b. If the pin is shorted to Vrefhi, resultLo should be approximately equal to
Vrefhi and resultHi should be equal to Vrefhi c. If the pin is shorted to Vreflo,
resultLo should be equal to Vreflo and resultHi should be approximately equal to Vreflo
d. If the pin is connected to a valid signal, resultLo should be greater than osdLoLimit
but less than resultNormal while resultHi should be less than osdHiLimit but greater
than result
Normal Input | Full-Scale output | Zero-scale Output | Pin Status Unknown| VREFHI |
VREFLO | Open VREFHI | VREFHI | approx. VREFHI | Shorted to VREFHI VREFLO | approx. VREFLO |
VREFLO | Shorted to VREFLO Vn | Vn < resultHi < VREFHI | VREFLO < resultLo < Vn |
Good
Step 5: osDetectStatusVal of value
greater than 4 would mean that there is no pin fault. a. If osDetectStatusVal == 1, means
pin A0 is OPEN b. If osDetectStatusVal == 2, means pin A0 is shorted to VREFLO c. If
osDetectStatusVal == 4, means pin A0 is shorted to VREFHI d. If osDetectStatusVal == 8,
means pin A0 is in GOOD/VALID state e. Any value of osDetectStatusVal > 4, means pin A0
is in VALID state
Following points should be noted while
configuring the ADC in OSDETECT mode.
- The divider resistance tolerances can
vary widely, hence this feature should not be used to check for conversion accuracy.
- Consult the device data manual for
implementation and availability of analog input channels.
- Due to high drive impedance, a S+H
duration much longer than the ADC minimum will be needed.
External
Connections
- A0 pin should be connected to signals
to convert
Watch
Variables
- osDetectStatusVal
: OS detection status of voltage on pin A0
- adcAResult0
: a digital representation of the voltage on pin A0