TIDUE53J March 2018 – February 2025 TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1
All the labs in this section can be run with both control cards. However, when using the TMS320F280039C control card, consider the following notes:
user_settings.h file must be changed directly.#define
TINV_THIRD_HARMONIC_INJECTION_STATUS
TINV_THIRD_HARMONIC_INJECTION_ENABLE#define
TINV_MIDDLE_POINT_CONTROL_STATUS
TINV_MIDDLE_POINT_CONTROL_ENABLEThe following parameters were used for
testing the E7 hardware and can be configured either with
main.syscfg or tinv_settings.h. When using E6,
keep the default main.syscfg values. The E7 parameters are shown in
the follow code:
// Power Stage Settings
//
#define TINV_PWM_SWITCHING_FREQ_HZ ((float32_t)90*1000)
#define TINV_PWM_DEADBAND_US ((float32_t)0.15)
#define TINV_PWM_PERIOD_TICKS (TINV_PWMSYSCLOCK_FREQ_HZ / TINV_PWM_SWITCHING_FREQ_HZ)
#define TINV_PWM_DEADBAND_TICKS (int16_t)((float32_t)TINV_PWM_DEADBAND_US * \
(float32_t)TINV_PWMSYSCLOCK_FREQ_HZ * \
(float32_t)ONE_MICRO_SEC)
#define TINV_AC_FREQ_HZ ((float32_t)60)
#define TINV_VBUS_NOMINAL_VOLTS ((float32_t)800)
#define TINV_LI_INDUCTOR_VALUE ((float32_t)0.13*0.001)
#define TINV_LG_INDUCTOR_VALUE ((float32_t)0.01*0.001)
#define TINV_VGRID_MAX_SENSE_VOLTS ((float32_t)512.5)
#define TINV_VINV_MAX_SENSE_VOLTS TINV_VGRID_MAX_SENSE_VOLTS
#define TINV_VBUS_MAX_SENSE_VOLTS ((float32_t)1100)
#define TINV_IINV_MAX_SENSE_AMPS ((float32_t)33)
#define TINV_IINV_TRIP_LIMIT_AMPS ((float32_t)29)
#define TINV_IGRID_MAX_SENSE_AMPS ((float32_t)32)
#define TINV_IGRID_TRIP_LIMIT_AMPS ((float32_t)29)
//
// PI Controller Settings from Compensation Designer
//
#define TINV_GI_PI_KP ((float32_t)0.0996509341)
#define TINV_GI_PI_KI ((float32_t)0.0070057718)
#define TINV_GV_PI_KP ((float32_t) 1.9979056049)
#define TINV_GV_PI_KI ((float32_t) 0.0041887902)
Some C2000Ware_DigitalPower_SDK software changes are required to support the new E7 hardware. The first change is the fan GPIO change as previously described in Section 3.1.1.2 (shown here for convenience). The second software change is to invert the voltage sensing polarity in the default SDK software because the latest E7 uses non-inverting voltage sensing for the V_PCC and V_SN.
For the fan GPIO change in
tinv_user_settings.h:
//E6
//#define TINV_FAN_GPIO 9
//#define TINV_FAN_GPIO_PIN_CONFIG GPIO_9_GPIO9
//E7
#define TINV_FAN_GPIO 18
#define TINV_FAN_GPIO_PIN_CONFIG GPIO_18_GPIO18
Make sure to enable the fans when
testing at high power using the TINV_fanSet function in the CCS
watch window during the debug session.
Use the
following for the E7 voltage sensing polarity change in
tinv.h:
// Voltage sensing on the actual board is non-inverted hence a +2.0f needs to be multiplied as below
TINV_vInv_A_sensed_pu = ((float32_t)TINV_VINV_A_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vInv_A_sensedOffset_pu) * 2.0f;
TINV_vInv_B_sensed_pu = ((float32_t)TINV_VINV_B_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vInv_B_sensedOffset_pu) * 2.0f;
TINV_vInv_C_sensed_pu = ((float32_t)TINV_VINV_C_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vInv_C_sensedOffset_pu) * 2.0f;
TINV_vGrid_A_sensed_prev_pu = TINV_vGrid_A_sensed_pu;
TINV_vGrid_A_sensed_pu = ((float32_t)TINV_VGRID_A_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vGrid_A_sensedOffset_pu ) * 2.0f;
TINV_vGrid_B_sensed_pu = ((float32_t)TINV_VGRID_B_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vGrid_B_sensedOffset_pu ) * 2.0f;
TINV_vGrid_C_sensed_pu = ((float32_t)TINV_VGRID_C_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vGrid_C_sensedOffset_pu ) * 2.0f;
For the E6 voltage sensing, from
tinv.h (the default SDK code is acceptable):
// Voltage sensing on the actual board is inverted hence a -2.0f needs to be multiplied as below
TINV_vInv_A_sensed_pu = ((float32_t)TINV_VINV_A_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vInv_A_sensedOffset_pu) * -2.0f;
TINV_vInv_B_sensed_pu = ((float32_t)TINV_VINV_B_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vInv_B_sensedOffset_pu) * -2.0f;
TINV_vInv_C_sensed_pu = ((float32_t)TINV_VINV_C_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vInv_C_sensedOffset_pu) * -2.0f;
TINV_vGrid_A_sensed_prev_pu = TINV_vGrid_A_sensed_pu;
TINV_vGrid_A_sensed_pu = ((float32_t)TINV_VGRID_A_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vGrid_A_sensedOffset_pu ) * -2.0f;
TINV_vGrid_B_sensed_pu = ((float32_t)TINV_VGRID_B_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vGrid_B_sensedOffset_pu ) * -2.0f;
TINV_vGrid_C_sensed_pu = ((float32_t)TINV_VGRID_C_READ *
TINV_ADC_PU_SCALE_FACTOR -
TINV_vGrid_C_sensedOffset_pu ) * -2.0f;
For E7 hardware, to turn on all
three phase relays (after precharge) use the
TINV_neutralRelaySet function in the CCS watch window. Only
use TINV_allRelaySet for E6 hardware.