If the on-chip ADC is replaced with an
external ADC (for example a sigma-delta device connected over SPI), the following changes
are required:
- In the adc_config.c file – Replace
the ADC_readNormalized() function calls inside the ADC_readMetrologyData()
function with calls to the external ADC driver. The function must write a normalized float
(centered at zero, full scale approximately ±1.0) into
workingData→rawVoltageData[PHASE_x] and
workingData→rawCurrentData[PHASE_x]. The normalization convention is:
normalized = (raw_sample - dc_offset) /
gain
Where dc_offset and gain are
the same two-point calibration constants described above, applied to the raw output
counts of the external ADC.
- In the adc_config.h file – Remove
or replace the ADC_VA_RESULT | ADC_VA_SOC macro definitions since the names
generated in the SysConfig menu no longer apply. Define whatever constants the
driver requires instead. ADC_VOLTAGE_DC_OFFSET, ADC_CURRENT_DC_OFFSET,
ADC_VOLTAGE_GAIN, and ADC_CURRENT_GAIN remain valid and must be set to
match the resolution and front-end gain of the external ADC.
- In the .syscfg file – Remove the
ADCA and ADCB peripheral instances if the on-chip ADC is not used, to avoid consuming
memory and clock resources.
- In the metrology_main_file.c file
– If the external ADC uses a data-ready interrupt rather than a timer trigger, move the
ADC_readMetrologyData() and Metrology_perSampleProcessing() function calls
from the cpuTimer0ISR functions into the external ADC interrupt handler instead.
Verify that the ISR executes at the same rate as SAMPLE_RATE.
- In the template.h file – The
PHASE_x_VOLTAGE_SCALE_FACTOR and PHASE_x_CURRENT_SCALE_FACTOR macro must
still reflect the physical scaling of the external ADC analog front-end, as the metrology
engine uses these macros to convert normalized samples to volts and amps.