SLUUDN8 July   2026 TMS320F28P550SJ , TMS320F28P650DK

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
  5. 2Library Notice
  6. 3Library Architecture
    1. 3.1 Background Processing
    2. 3.2 Foreground Processing
    3. 3.3 Data Transfer Mechanism
  7. 4Metrology Calculations
  8. 5Configuration and Data Structures
  9. 6Calibration Module
  10. 7User Specific Configurations
    1. 7.1 Debug Mode
      1. 7.1.1 The Function of Debug Mode
      2. 7.1.2 How to Configure DEBUG Mode Parameters
    2. 7.2 ADC Mode
      1. 7.2.1 Using the On-Chip ADC
      2. 7.2.2 Two Point Calibration
        1. 7.2.2.1 Step 1 – Offset Calibration (Zero-Input Point)
        2. 7.2.2.2 Step 2 – Gain Calibration (Full-Scale Point)
      3. 7.2.3 Using an External ADC
    3. 7.3 Switching Between Modes
    4. 7.4 THD Algorithm Selection
      1. 7.4.1 Method 1 – Based on PLL (Default When the HARMONICS_SUPPORT Macro is Not Defined)
      2. 7.4.2 Method 2 – Goertzel DFT (When the HARMONICS_SUPPORT and USE_GOERTZEL_THD Macros are Both Defined)
      3. 7.4.3 Method 3 – 2048-Point Real FFT (When the HARMONICS_SUPPORT Macro is Defined But the USE_GOERTZEL_THD Macro is Not)
    5. 7.5 Topology Selection
    6. 7.6 Enable Features
    7. 7.7 System Parameters
    8. 7.8 Scaling Factors Per Phase
  11. 8Running the Example
    1. 8.1 Accessing the Parameters Per Phase
    2. 8.2 Accessing the Total System Measurements
    3. 8.3 Accessing the Phase Status Flags

Step 2 – Gain Calibration (Full-Scale Point)

  1. Apply a known AC reference signal and compare the library output to the known value.
  2. Adjust ADC_VOLTAGE_GAIN and ADC_CURRENT_GAIN in the adc_config.h file using:
    • gain_new = gain_old × (measured_reading / known_reference)
      • For example, if the library reports 118.2V RMS against a known 120.0V reference: gain_new = 2056.8 × (120.0 / 118.2) = 2087.1
  3. Repeat for current using ADC_CURRENT_GAIN. The ADC_readNormalized() function applies these gains as:
    • normalized = (raw_count - dc_offset) / gain
    • The resulting normalized value is a per-unit float in the same range as the debug signal generator output, which the metrology engine then scales by VscaleFactor / IscaleFactor (from template.h) to produce physical units.

Phase Correction (for current transformer phase shift):

Current transformers and analog filter stages introduce a small but measurable phase shift between the voltage and current channels that directly affect power factor and power accuracy. This is corrected by the phaseOffset field in currentSensorCalibrationData (metrology_nv_structs.h).

The default phase correction values are defined in metrology_calibration_defaults.h:

  • DEFAULT_BASE_PHASE_A_CORRECTION – Phase correction for phase A in units of: Microseconds × SAMPLE_RATE × 256. Default: 0.0 (appropriate for DEBUG mode and appropriate sensors). For a real CT with a 2.4 microsecond lag, this is: –2.4e-6 × 8000 × 256.

Acceptable range is approximately –125 microseconds to +125 microseconds. Measure the actual phase error using a precision power analyzer at unity power factor and set the correction accordingly.