14 #include "config/hal.h"
15 #include "app_power_control.h"
17 #include "devices/dev_buck_converter.h"
18 #include "drivers/v_loop.h"
19 #include "drivers/v_loop_extensions.h"
35 volatile uint16_t retval = 1;
257 volatile uint16_t retval = 1;
399 volatile uint16_t retval=1;
#define PWM_CLOCK_HIGH_RESOLUTION
Enables/disables the PWM generator high resolution mode of 250 ps versus 2 ns.
#define BUCK_POD
Conversion Macros of Startup Timing Settings.
#define BUCK_NO_OF_PHASES
User-declaration of global defines for PWM signal generator settings.
#define BUCK_PWM_DC_MAX
This sets the maximum duty cycle.
#define BUCK_PWM_DEAD_TIME_FE
Falling edge dead time [tick = 250ps].
#define BUCK_PWM_PHASE_SHIFT
This sets the phase shift between phase #1 and #2.
#define BUCK_LEB_PERIOD
Leading Edge Blanking = n x PWM resolution (here: 50 x 2ns = 100ns)
#define BUCK_PWM_DEAD_TIME_LE
Rising edge dead time [tick = 250ps].
#define BUCK_PWM_DC_MIN
This sets the minimum duty cycle.
#define BUCK_PWM_PERIOD
This sets the switching period of the converter.
#define BUCK_PWM_GPIO_PORT_PINH
Port Pin Number.
#define BUCK_PWM_IOCONL
PWM Instance I/O Control Register.
#define BUCK_PWM_ADTR1PS
ADC Trigger 1 Postscaler: 0...31.
#define BUCK_PWM_CHANNEL
PWM peripheral output pins, control signals and register assignments of converter phase #1.
#define BUCK_PWM_ADTR1OFS
ADC Trigger 1 Offset: 0...31.
#define BUCK_PWM_PDC
PWM Instance Duty Cycle Register.
#define BUCK_PWM_OUTPUT_SWAP
true = PWMxH is the leading PWM output, false = PWMxL is the leading PWM output
#define BUCK_PWM_GPIO_PORT_PINL
Port Pin Number.
#define BUCK_PWM_GPIO_INSTANCE
Number indicating device port, where 0=Port RA, 0=Port RB, 0=Port RC, etc.
#define BUCK_DAC_SLOPE_TRIG_START
Conversion macros for user-declarations of DAC parameters.
#define BUCK_DAC_SLEW_RATE
#define BUCK_DACOUT_VALUE_INITIAL
#define BUCK_DAC_SLOPE_TRIG_STOP
#define BUCK_DAC_INSTANCE
DAC peripheral register assignments of converter phase #1.
#define BUCK_ACMPxIN
Analog comparator input selection (0=CMPxA, 1=CMPxB, 2=CMPxC, 3=CMPxD)
#define BUCK_PCMC_PGxPCIL_PSS
PWM PCI source selection (must match analog comparator instance declaration)
#define BUCK_ACMP_INSTANCE
Analog comparator instance index.
#define BUCK_DACxDATH
PDM DAC referecne register.
#define BUCK_VIN_NORM_FACTOR
VIN normalization factor scaled in Q15.
#define BUCK_VIN_NORM_SCALER
VIN normalization
#define BUCK_VIN_OFFSET
Input voltage feedback offset.
#define BUCK_VIN_ADCCORE
0=Dedicated Core #0, 1=Dedicated Core #1, 8=Shared ADC Core
#define BUCK_VIN_ADCBUF
ADC input buffer of this ADC channel.
#define BUCK_VIN_ADCIN
Analog input number (e.g. '5' for 'AN5')
#define BUCK_VIN_ANSEL
GPIO analog function mode enable bit.
#define BUCK_VIN_TRGSRC
PWM1 (=PG1) Trigger 2 via PGxTRIGB.
#define BUCK_VOUT_NORM_SCALER
VOUT normalization bit-shift scaler
#define BUCK_VOUT_NORM_FACTOR
VOUT normalization factor scaled in Q15.
#define BUCK_VOUT_OFFSET
Macro calculating the integer number equivalent of the physical, static signal offset of this feedbac...
#define BUCK_VOUT_REF
Macro calculating the integer number equivalent of the output voltage reference given above in [V].
#define BUCK_VOUT_ADC_TRGDLY
Macro calculating the integer number equivalent of the signal chain time delay between internal PWM t...
#define BUCK_VOUT_ADCIN
Analog input number (e.g. '5' for 'AN5')
#define BUCK_VOUT_ADCTRIG
Register used for trigger placement.
#define BUCK_VOUT_TRGSRC
PWM1 (=PG1) Trigger 1 via PGxTRIGA.
#define BUCK_VOUT_ADCBUF
ADC input buffer of this ADC channel.
#define BUCK_VOUT_ANSEL
ADC input assignments of output voltage feedback signals.
#define BUCK_VOUT_ADCCORE
0=Dedicated Core #0, 1=Dedicated Core #1, 8=Shared ADC Core
#define BUCK_ISNS_OFFSET_CALIBRATION_ENABLE
Current Sense Offset Calibration is disabled.
#define BUCK_ISNS_FB_OFFSET
#define BUCK_SYNCTHLD_OFF
Phase Current below which the synchronous rectifier will be turned off.
#define BUCK_ISNS_OCL
Over Current Limit.
#define BUCK_SYNCTHLD_ON
Phase Current above which the synchronous rectifier will be turned on.
#define BUCK_ISNS_REF
Output Current Reference.
#define BUCK_ISNS_NORM_FACTOR
ISNS normalization factor scaled in Q15.
#define BUCK_ISNS_ADC_TRGDLY
#define BUCK_ISNS_NORM_SCALER
ISNS normalization
#define BUCK_ISNS_ADCTRIG_PC
Register used for trigger placement in peak current mode control.
#define BUCK_ISNS_ANSEL
GPIO analog function mode enable bit.
#define BUCK_ISNS_TRGSRC
PWM1 (=PG1) Trigger 2 via PGxTRIGB.
#define BUCK_ISNS_ADCCORE
0=Dedicated Core #0, 1=Dedicated Core #1, 2=Shared ADC Core
#define BUCK_ISNS_ADCBUF
ADC input buffer of this ADC channel.
#define BUCK_ISNS_ADCIN
Analog input number (e.g. '5' for 'AN5')
#define TEMP_ADCBUF
GPIO analog function mode enable bit.
#define TEMP_ANSEL
GPIO analog function mode enable bit.
#define PWRGOOD_PIN
GPIO port pin declaration where 0=Rx0, 1=Rx1, 2=Rx3, etc.
#define PWRGOOD_PORT
GPIO port declaration where 0=Port RA, 0=Port RB, 0=Port RC, etc.
volatile struct BUCK_CONVERTER_s buck
Global data object for a BUCK CONVERTER.
volatile uint16_t appPowerSupply_PeripheralsInitialize(void)
This function is used to load peripheral configuration templates from the power controller device dri...
volatile uint16_t appPowerSupply_ControllerInitialize(void)
This function initializes the control system feedback loop objects.
volatile uint16_t appPowerSupply_ConverterObjectInitialize(void)
This function initializes the buck converter device driver instance.
volatile uint16_t drv_BuckConverter_Initialize(volatile struct BUCK_CONVERTER_s *buckInstance)
This function initializes all peripheral modules and their instances used by the power controller.
void v_loop_Precharge(volatile struct NPNZ16b_s *controller, volatile fractional ctrl_input, volatile fractional ctrl_output)
Prototype of the Assembly routine '_v_loop_Precharge' loading user-defined values into the NPNZ16b co...
volatile uint16_t v_loop_Initialize(volatile struct NPNZ16b_s *controller)
Initializes controller coefficient arrays and normalization factors.
void v_loop_Update(volatile struct NPNZ16b_s *controller)
Prototype of the Assembly feedback control loop routine helping to call the v_loop controller from C-...
void v_loop_Reset(volatile struct NPNZ16b_s *controller)
Prototype of the Assembly routine '_v_loop_Reset' clearing the NPNZ16b controller output and error hi...
volatile struct NPNZ16b_s v_loop
External reference to user-defined NPNZ16b controller data object 'v_loop'.
struct BUCK_CONVERTER_STATUS_s::@126::@128 bits
data structure for single bit addressing operations
volatile uint16_t period
Soft-Start Period (POD, RAMP PERIOD, PGD, etc.)
volatile uint16_t ref_inc_step
Size/value of one reference increment/decrement or this period.
volatile uint16_t counter
Soft-Start Execution Counter (read only)
volatile uint16_t reference
Internal dummy reference used to increment/decrement controller reference.
volatile struct BUCK_STARTUP_PERIOD_HANDLER_s power_good_delay
volatile struct BUCK_STARTUP_PERIOD_HANDLER_s v_ramp
volatile struct BUCK_STARTUP_PERIOD_HANDLER_s power_on_delay
volatile struct BUCK_STARTUP_PERIOD_HANDLER_s i_ramp
volatile uint16_t control_input
BUCK most recent control input value (raw input)
volatile uint16_t v_out
BUCK output voltage.
volatile uint16_t temp
BUCK board temperature.
volatile uint16_t control_output
BUCK most recent control output value.
volatile uint16_t control_error
BUCK most recent control error value.
volatile uint16_t i_sns[BUCK_NO_OF_PHASES]
BUCK output current.
volatile uint16_t v_in
BUCK input voltage.
volatile uint16_t i_ref
User reference setting used to control the power converter controller.
volatile uint16_t v_ref
User reference setting used to control the power converter controller.
enum BUCK_CONTROL_MODE_e control_mode
Fundamental control mode.
volatile uint16_t no_of_phases
number of converter phases
void(* ctrl_Precharge)(volatile struct NPNZ16b_s *, volatile fractional, volatile fractional)
Function pointer to PRECHARGE routine.
volatile uint16_t maximum
output clamping value (maximum)
volatile uint16_t feedback_offset
Feedback offset value for calibration or bi-direction feedback signals.
volatile struct NPNZ16b_s * controller
pointer to control loop object data structure
void(* ctrl_Update)(volatile struct NPNZ16b_s *)
Function pointer to UPDATE routine.
void(* ctrl_Reset)(volatile struct NPNZ16b_s *)
Function pointer to RESET routine.
volatile uint16_t reference
Control loop reference variable.
volatile uint16_t trigger_offset
ADC trigger offset value for trigger fine-tuning.
volatile uint16_t(* ctrl_Initialize)(volatile struct NPNZ16b_s *)
Function pointer to INIT routine.
volatile uint16_t minimum
output clamping value (minimum)
volatile uint16_t dac_instance
Digital-to-analog converter instance used to generate the the slope compensation ramp.
volatile uint16_t duty_cycle_limit
Switch node duty cycle limit value.
volatile uint16_t slope_start_trigger
Period counter value at with the slope start is triggered.
volatile uint16_t cmp_input
Analog comparator input option A to D (0=A, 1=B, 2=C, 3=D)
volatile uint16_t pwm_trigger_input
PWM current limit PCI input source (must match comparator declared by cmp_instance)
volatile uint16_t slew_rate
Integer equivalent of compensation ramp slew rate in [V/µs].
volatile uint16_t cmp_instance
Analog comparator triggering on the peak current feedback signal.
volatile uint16_t slope_stop_trigger
Period counter value at with the slope stop is triggered.
volatile uint16_t * ptr_duty_cycle
Pointer to switch node duty cycle register.
volatile uint16_t initial_dac_value
Initial Digital-to-Analog converter reference value (used when peripheral is enabled or being reset)
volatile struct BUCK_SLOPE_COMP_SETTINGS_s slope_compensation
Peak current mode slope compensation settings.
volatile uint16_t leb_period
Leading-Edge Blanking period.
volatile uint16_t period
Switching period.
volatile uint16_t adc_trigger_offset
PWM triggers for ADC will be offset by n cycles.
volatile uint16_t duty_ratio_init
Initial duty cycle when the PWM module is being turned on.
volatile uint16_t duty_ratio_max
Absolute duty cycle maximum during normal operation.
volatile bool sync_drive
Selecting if switch node is driven in synchronous or asnchronous mode.
volatile uint16_t gpio_low
GPIO port pin-number of PWMxL of the selected PWM generator.
volatile uint16_t duty_ratio_min
Absolute duty cycle minimum during normal operation.
volatile uint16_t dead_time_rising
Dead time setting at rising edge of a half-bridge drive.
volatile uint16_t gpio_instance
GPIO instance of the selected PWM generator.
volatile bool swap_outputs
Selecting if PWMxH (default) or PWMxL should be the leading PWM output.
volatile uint16_t gpio_high
GPIO port pin-number of PWMxH of the selected PWM generator.
volatile uint16_t phase
Switching signal phase-shift.
volatile uint16_t adc_trigger_scaler
PWM triggers for ADC will be generated every n-th cycle.
volatile bool high_resolution_enable
Selecting if PWM module should use high-resolution mode.
volatile uint16_t pwm_instance
number of the PWM channel used
volatile uint16_t dead_time_falling
Dead time setting at falling edge of a half-bridge drive.
volatile bool master_period_enable
Selecting MASTER or Individual period register.
volatile int16_t factor
Fractional scaling factor (range -1 ... 0.99969)
volatile int16_t offset
Signal offset as signed integer to be subtracted from ADC input.
volatile int16_t scaler
Feedback bit-shift scaler used for number normalization.
volatile bool early_interrupt_enable
input channel early interrupt enable bit
volatile bool enabled
input channel enable bit
volatile uint8_t adc_core
number of the ADC core connected to the selected channel
volatile uint8_t trigger_source
input channel trigger source
volatile struct BUCK_ADC_INPUT_SCALING_s scaling
normalization scaling settings
volatile bool interrupt_enable
input channel interrupt enable bit
volatile bool level_trigger
input channel level trigger mode enable bit
volatile bool signed_result
input channel singed result mode enable bit
volatile bool differential_input
input channel differential mode enable bit
volatile uint8_t adc_input
number of the ADC input channel used
volatile uint16_t * adc_buffer
pointer to ADC result buffer
volatile struct BUCK_ADC_INPUT_SETTINGS_s ad_vin
ADC input sampling input voltage.
volatile struct BUCK_ADC_INPUT_SETTINGS_s ad_isns[BUCK_NO_OF_PHASES]
ADC input sampling phase current.
volatile struct BUCK_ADC_INPUT_SETTINGS_s ad_temp
ADC input sampling temperature.
volatile struct BUCK_ADC_INPUT_SETTINGS_s ad_vout
ADC input sampling output voltage.
volatile bool enabled
Specifies, if this IO is used or not.
volatile uint16_t io_type
Input/Output definition (0=push-pull output, 1=input, 2=open-drain output)
volatile uint16_t port
GPIO port instance number (0=Port RA, 0=Port RB, 0=Port RC, etc.)
volatile uint16_t polarity
Output polarity, where 0=ACTIVE HIGH, 1=ACTIVE_LOW.
volatile uint16_t pin
GPIO port pin number.
volatile struct BUCK_GPIO_INSTANCE_s EnableInput
External ENABLE input.
volatile struct BUCK_GPIO_INSTANCE_s PowerGood
Power Good Output.
volatile struct BUCK_SWITCH_NODE_SETTINGS_s sw_node[BUCK_NO_OF_PHASES]
BUCK converter switch node settings.
volatile struct BUCK_STATE_ID_s state_id
BUCK state machine operating state ID.
volatile struct BUCK_CONVERTER_STATUS_s status
BUCK operation status bits.
volatile struct BUCK_FEEDBACK_SETTINGS_s feedback
BUCK converter feedback settings.
volatile struct BUCK_GPIO_SETTINGS_s gpio
BUCK converter additional GPIO specification.
volatile struct BUCK_LOOP_SETTINGS_s v_loop
BUCK voltage control loop object.
volatile struct BUCK_CONVERTER_DATA_s data
BUCK runtime data.
volatile struct BUCK_CONVERTER_SETTINGS_s set_values
Control field for global access to references.
volatile struct BUCK_CONVERTER_STARTUP_s startup
BUCK startup timing settings.
struct NPNZ_STATUS_s::@132::@134 bits
Controller status bit-field for direct bit access.
volatile fractional NormFactor
Q15 normalization factor.
volatile int16_t Offset
Value/signal offset of this port.
volatile uint16_t * ptrAddress
Pointer to register or variable where the value is read from (e.g. ADCBUFx) or written to (e....
volatile int16_t NormScaler
Bit-shift scaler of the Q15 normalization factor.
volatile uint16_t * ptrControlReference
Pointer to global variable of input register holding the controller reference value (e....
volatile struct NPNZ_PORT_s AltSource
Secondary data input port declaration.
volatile struct NPNZ_PORT_s AltTarget
Secondary data output port declaration.
volatile struct NPNZ_PORT_s Target
Primary data output port declaration.
volatile struct NPNZ_PORT_s Source
Primary data input port declaration.
volatile int16_t MaxOutput
Maximum output value used for clamping (R/W)
volatile int16_t AltMinOutput
Alternate minimum output value used for clamping (R/W)
volatile int16_t MinOutput
Minimum output value used for clamping (R/W)
volatile int16_t AltMaxOutput
Alternate maximum output value used for clamping (R/W)
volatile uint16_t * ptrADCTriggerARegister
Pointer to ADC trigger #1 register (e.g. TRIG1)
volatile uint16_t * ptrADCTriggerBRegister
Pointer to ADC trigger #2 register (e.g. TRIG2)
volatile uint16_t ADCTriggerBOffset
ADC trigger #2 offset to compensate propagation delays.
volatile uint16_t ADCTriggerAOffset
ADC trigger #1 offset to compensate propagation delays.
volatile uint16_t * ptrDProvControlOutput
Pointer to external data buffer of most recent control output.
volatile uint16_t * ptrDProvControlInput
Pointer to external data buffer of most recent, raw control input.
volatile uint16_t * ptrDProvControlError
Pointer to external data buffer of most recent control error.
volatile uint16_t * ptrDProvControlInputCompensated
Pointer to external data buffer of most recent, compensated control input.
volatile uint16_t ptrExtHookPreAntiWindupFunction
Pointer to Function which will be called after the compensation filter computation is complete and be...
volatile uint16_t ExtHookPreTargetWriteFunctionParam
Parameter of function called (can be a variable or a pointer to a data structure)....
volatile uint16_t ExtHookEndOfLoopFunctionParam
Parameter of function called (can be a variable or a pointer to a data structure)....
volatile uint16_t ExtHookPreAntiWindupFunctionParam
Parameter of function called (can be a variable or a pointer to a data structure)....
volatile uint16_t ExtHookSourceFunctionParam
Parameter of function called (can be a variable or a pointer to a data structure)....
volatile uint16_t ptrExtHookSourceFunction
Pointer to Function which will be called after the source has been read and compensated....
volatile uint16_t ptrExtHookPreTargetWriteFunction
Pointer to Function which will be called before the most recent control output is written to target....
volatile uint16_t ptrExtHookStartFunction
Pointer to Function which will be called at the beginning of the control loop. This function pointer ...
volatile uint16_t ExtHookExitFunctionParam
Parameter of function called (can be a variable or a pointer to a data structure)....
volatile uint16_t ptrExtHookEndOfLoopFunction
Pointer to Function which is called at the end of the control loop but will be bypassed when the cont...
volatile uint16_t ExtHookStartFunctionParam
Parameter of function called (can be a variable or pointer to a data structure). This parameter is op...
volatile uint16_t ptrExtHookExitFunction
Pointer to Function which is called at the end of the control loop and will also be called when the c...
volatile fractional AgcFactor
Q15 value of Adaptive Gain Modulation factor.
volatile fractional AgcMedian
Q15 value of Adaptive Gain Modulation nominal operating point.
volatile uint16_t AgcScaler
Bit-shift scaler of Adaptive Gain Modulation factor.
volatile uint16_t usrParam6
generic 16-bit wide, user-defined parameter #7 for advanced control options
volatile uint16_t usrParam4
generic 16-bit wide, user-defined parameter #5 for advanced control options
volatile uint16_t usrParam0
generic 16-bit wide, user-defined parameter #1 for advanced control options
volatile uint16_t usrParam7
generic 16-bit wide, user-defined parameter #8 for advanced control options
volatile uint16_t usrParam2
generic 16-bit wide, user-defined parameter #3 for advanced control options
volatile uint16_t usrParam1
generic 16-bit wide, user-defined parameter #2 for advanced control options
volatile uint16_t usrParam3
generic 16-bit wide, user-defined parameter #4 for advanced control options
volatile uint16_t usrParam5
generic 16-bit wide, user-defined parameter #6 for advanced control options
volatile struct NPNZ_STATUS_s status
Control Loop Status and Control flags.
volatile struct NPNZ_GAIN_CONTROL_s GainControl
Parameter section for advanced control options.
volatile struct NPNZ_EXTENSION_HOOKS_s ExtensionHooks
User extension function triggers using function pointers with parameters.
volatile struct NPNZ_LIMITS_s Limits
Input and output clamping values.
volatile struct NPNZ_DATA_PROVIDERS_s DataProviders
Automated data sources pushing recent data points to user-defined variables.
volatile struct NPNZ_ADC_TRGCTRL_s ADCTriggerControl
Automatic ADC trigger placement options for ADC Trigger A and B.
volatile struct NPNZ_USER_DATA_BUFFER_s Advanced
Parameter section for advanced user control options.
volatile struct NPNZ_PORTS_s Ports
Controller input and output ports.