HPM SDK
HPMicro Software Development Kit
CLC driver APIs

CLC driver APIs. More...

Data Structures

struct  clc_param_config_t
 clc parameter configuration More...
 
struct  clc_coeff_config_t
 clc coefficient configuration More...
 

Enumerations

enum  clc_chn_t { clc_vd_chn = CLC_VDVQ_CHAN_VD , clc_vq_chn = CLC_VDVQ_CHAN_VQ }
 clc channel More...
 
enum  clc_coeff_zone_t { clc_coeff_zone_0 = CLC_COEFF_0 , clc_coeff_zone_1 = CLC_COEFF_1 , clc_coeff_zone_2 = CLC_COEFF_2 }
 clc coefficient zone More...
 
enum  clc_irq_mask_t {
  clc_irq_calc_done = (0x00000001UL) , clc_irq_eadc_setting_err = (0x00000002UL) , clc_irq_2p2z_clamp_setting_err = (0x00000004UL) , clc_irq_2p2z_over_hi = (0x00000008UL) ,
  clc_irq_2p2z_over_lo = (0x00000010UL) , clc_irq_2p2z_over_sf = (0x00000020UL) , clc_irq_3p3z_clamp_setting_err = (0x00000040UL) , clc_irq_3p3z_over_hi = (0x00000080UL) ,
  clc_irq_3p3z_over_lo = (0x00000100UL) , clc_irq_forb_setting_err = (0x00000200UL) , clc_irq_data_in_forbid = (0x00000400UL)
}
 clc irq mask bit More...
 

Functions

static void clc_set_enable (CLC_Type *clc, clc_chn_t chn, bool enable)
 CLC enable or disable. More...
 
static void clc_set_mask_mode_enable (CLC_Type *clc, clc_chn_t chn, bool enable)
 CLC keep working even if bad irq status ocurred. More...
 
static void clc_set_sw_inject_dq_mode_enable (CLC_Type *clc, clc_chn_t chn, bool enable)
 CLC set software inject dq work mode. More...
 
static void clc_set_irq_enable (CLC_Type *clc, clc_chn_t chn, uint32_t irq_mask, bool enable)
 CLC set irq enable or disable. More...
 
static uint32_t clc_get_irq_status (CLC_Type *clc, clc_chn_t chn)
 CLC get irq status. More...
 
static void clc_clear_irq_status (CLC_Type *clc, clc_chn_t chn, uint32_t irq_mask)
 CLC clear irq status. More...
 
static bool clc_get_irq_flag (CLC_Type *clc, clc_chn_t chn, uint32_t irq_mask)
 CLC check irq request flag. More...
 
static void clc_set_adc_chn_offset (CLC_Type *clc, clc_chn_t chn, uint32_t adc_chn, uint32_t adc_offset)
 CLC set adc channel. More...
 
static void clc_set_pwm_period (CLC_Type *clc, clc_chn_t chn, uint32_t pwm_period)
 CLC set pwm period. More...
 
static uint32_t clc_get_pwm_period (CLC_Type *clc, clc_chn_t chn)
 CLC set pwm period. More...
 
static uint32_t clc_get_output_value (CLC_Type *clc, clc_chn_t chn)
 CLC get output caculated value. More...
 
static uint32_t clc_get_timestamp (CLC_Type *clc, clc_chn_t chn)
 CLC get timestamp. More...
 
static int32_t clc_get_eadc_current_value (CLC_Type *clc, clc_chn_t chn)
 CLC get error adc latest value. More...
 
static int32_t clc_get_eadc_previous0_value (CLC_Type *clc, clc_chn_t chn)
 CLC get error adc previous0 value. More...
 
static void clc_sw_inject_eadc_previous0_value (CLC_Type *clc, clc_chn_t chn, int32_t value)
 CLC software inject error adc previous0 value. More...
 
static int32_t clc_get_eadc_previous1_value (CLC_Type *clc, clc_chn_t chn)
 CLC get error adc previous1 value. More...
 
static void clc_sw_inject_eadc_previous1_value (CLC_Type *clc, clc_chn_t chn, int32_t value)
 CLC software inject error adc previous1 value. More...
 
static int32_t clc_get_2p2z_current_value (CLC_Type *clc, clc_chn_t chn)
 CLC get 2p2z last value. More...
 
static void clc_sw_inject_2p2z_current_value (CLC_Type *clc, clc_chn_t chn, int32_t value)
 CLC software inject 2p2z last value. More...
 
static int32_t clc_get_2p2z_previous0_value (CLC_Type *clc, clc_chn_t chn)
 CLC get 2p2z previous0 value. More...
 
static void clc_sw_inject_2p2z_previous0_value (CLC_Type *clc, clc_chn_t chn, int32_t value)
 CLC software inject 2p2z previous0 value. More...
 
static int32_t clc_get_3p3z_current_value (CLC_Type *clc, clc_chn_t chn)
 CLC get 3p3z last value. More...
 
static void clc_sw_inject_3p3z_current_value (CLC_Type *clc, clc_chn_t chn, int32_t value)
 CLC software inject 3p3z last value. More...
 
static void clc_set_expect_adc_value (CLC_Type *clc, clc_chn_t chn, int32_t expect)
 CLC set expected adc value. More...
 
static void clc_sw_inject_adc_value (CLC_Type *clc, clc_chn_t chn, uint32_t value)
 CLC software inject adc value. If it's not dq mode, this will trig clc calculation. More...
 
static void clc_set_sw_inject_dq_adc_value_ready (CLC_Type *clc)
 CLC set software inject dq adc value ready, this will trig clc calculation. More...
 
void clc_config_param (CLC_Type *clc, clc_chn_t chn, clc_param_config_t *param)
 CLC parameter configuration. More...
 
hpm_stat_t clc_config_coeff (CLC_Type *clc, clc_chn_t chn, clc_coeff_zone_t zone, clc_coeff_config_t *coeff)
 CLC coefficient configuration. More...
 
void clc_sw_inject_dq_adc_value (CLC_Type *clc, uint32_t d_value, uint32_t q_value)
 CLC software inject dq adc value. More...
 

Detailed Description

CLC driver APIs.

Enumeration Type Documentation

◆ clc_chn_t

enum clc_chn_t

#include <drivers/inc/hpm_clc_drv.h>

clc channel

Enumerator
clc_vd_chn 
clc_vq_chn 

◆ clc_coeff_zone_t

#include <drivers/inc/hpm_clc_drv.h>

clc coefficient zone

Enumerator
clc_coeff_zone_0 
clc_coeff_zone_1 
clc_coeff_zone_2 

◆ clc_irq_mask_t

#include <drivers/inc/hpm_clc_drv.h>

clc irq mask bit

Enumerator
clc_irq_calc_done 
clc_irq_eadc_setting_err 
clc_irq_2p2z_clamp_setting_err 
clc_irq_2p2z_over_hi 
clc_irq_2p2z_over_lo 
clc_irq_2p2z_over_sf 
clc_irq_3p3z_clamp_setting_err 
clc_irq_3p3z_over_hi 
clc_irq_3p3z_over_lo 
clc_irq_forb_setting_err 
clc_irq_data_in_forbid 

Function Documentation

◆ clc_clear_irq_status()

static void clc_clear_irq_status ( CLC_Type clc,
clc_chn_t  chn,
uint32_t  irq_mask 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC clear irq status.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]irq_maskirq mask, clc_irq_mask_t

◆ clc_config_coeff()

hpm_stat_t clc_config_coeff ( CLC_Type clc,
clc_chn_t  chn,
clc_coeff_zone_t  zone,
clc_coeff_config_t coeff 
)

#include <drivers/inc/hpm_clc_drv.h>

CLC coefficient configuration.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]zoneCLC coefficient zone, clc_coeff_zone_t
[in]coeffclc_param_config_t.
Return values
status_invalid_argumentsome parameters are invalid
status_successoperation is successful

◆ clc_config_param()

void clc_config_param ( CLC_Type clc,
clc_chn_t  chn,
clc_param_config_t param 
)

#include <drivers/inc/hpm_clc_drv.h>

CLC parameter configuration.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]paramclc_param_config_t.

◆ clc_get_2p2z_current_value()

static int32_t clc_get_2p2z_current_value ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get 2p2z last value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
CLC2p2z last value

◆ clc_get_2p2z_previous0_value()

static int32_t clc_get_2p2z_previous0_value ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get 2p2z previous0 value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
CLC2p2z previous0 value

◆ clc_get_3p3z_current_value()

static int32_t clc_get_3p3z_current_value ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get 3p3z last value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
CLC3p3z last value

◆ clc_get_eadc_current_value()

static int32_t clc_get_eadc_current_value ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get error adc latest value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
CLCerror adc latest value

◆ clc_get_eadc_previous0_value()

static int32_t clc_get_eadc_previous0_value ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get error adc previous0 value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
CLCerror adc previous0 value

◆ clc_get_eadc_previous1_value()

static int32_t clc_get_eadc_previous1_value ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get error adc previous1 value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
CLCerror adc previous1 value

◆ clc_get_irq_flag()

static bool clc_get_irq_flag ( CLC_Type clc,
clc_chn_t  chn,
uint32_t  irq_mask 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC check irq request flag.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]irq_maskirq mask, clc_irq_mask_t
Return values
true-hasirq req, false-no irq req.

◆ clc_get_irq_status()

static uint32_t clc_get_irq_status ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get irq status.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
irqstatus.

◆ clc_get_output_value()

static uint32_t clc_get_output_value ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get output caculated value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
CLCoutput caculated value

◆ clc_get_pwm_period()

static uint32_t clc_get_pwm_period ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC set pwm period.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
pwmperiod

◆ clc_get_timestamp()

static uint32_t clc_get_timestamp ( CLC_Type clc,
clc_chn_t  chn 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC get timestamp.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
Return values
CLCadc timestamp

◆ clc_set_adc_chn_offset()

static void clc_set_adc_chn_offset ( CLC_Type clc,
clc_chn_t  chn,
uint32_t  adc_chn,
uint32_t  adc_offset 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC set adc channel.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]adc_chnadc channel for ADC0~3 or SDM_ADC0~7, adc from VSC must be set to 0.
[in]adc_offsetadc offset for ADC0~3 or SDM_ADC0~7, adc from VSC must be set to 0.

◆ clc_set_enable()

static void clc_set_enable ( CLC_Type clc,
clc_chn_t  chn,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC enable or disable.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]enabletrue-enable, false-disable

◆ clc_set_expect_adc_value()

static void clc_set_expect_adc_value ( CLC_Type clc,
clc_chn_t  chn,
int32_t  expect 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC set expected adc value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]expectexpected adc value

◆ clc_set_irq_enable()

static void clc_set_irq_enable ( CLC_Type clc,
clc_chn_t  chn,
uint32_t  irq_mask,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC set irq enable or disable.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]irq_maskirq mask, clc_irq_mask_t
[in]enableenable or disable
  • true enable
  • false disable

◆ clc_set_mask_mode_enable()

static void clc_set_mask_mode_enable ( CLC_Type clc,
clc_chn_t  chn,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC keep working even if bad irq status ocurred.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]enabletrue-enable, false-disable

◆ clc_set_pwm_period()

static void clc_set_pwm_period ( CLC_Type clc,
clc_chn_t  chn,
uint32_t  pwm_period 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC set pwm period.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]pwm_period0-clc dac output pwm duty ratio, else-clc dac output pwm period, number of clock cycles.

◆ clc_set_sw_inject_dq_adc_value_ready()

static void clc_set_sw_inject_dq_adc_value_ready ( CLC_Type clc)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC set software inject dq adc value ready, this will trig clc calculation.

Parameters
[in]clcCLC base address

◆ clc_set_sw_inject_dq_mode_enable()

static void clc_set_sw_inject_dq_mode_enable ( CLC_Type clc,
clc_chn_t  chn,
bool  enable 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC set software inject dq work mode.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]enabletrue-if the ADC value comes from software injection and the VD/VQ channel is required for joint use.

◆ clc_sw_inject_2p2z_current_value()

static void clc_sw_inject_2p2z_current_value ( CLC_Type clc,
clc_chn_t  chn,
int32_t  value 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC software inject 2p2z last value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]valueCLC 2p2z last value

◆ clc_sw_inject_2p2z_previous0_value()

static void clc_sw_inject_2p2z_previous0_value ( CLC_Type clc,
clc_chn_t  chn,
int32_t  value 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC software inject 2p2z previous0 value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]valueCLC 2p2z previous0 value

◆ clc_sw_inject_3p3z_current_value()

static void clc_sw_inject_3p3z_current_value ( CLC_Type clc,
clc_chn_t  chn,
int32_t  value 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC software inject 3p3z last value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]valueCLC 3p3z last value

◆ clc_sw_inject_adc_value()

static void clc_sw_inject_adc_value ( CLC_Type clc,
clc_chn_t  chn,
uint32_t  value 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC software inject adc value. If it's not dq mode, this will trig clc calculation.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]valueCLC adc value

◆ clc_sw_inject_dq_adc_value()

void clc_sw_inject_dq_adc_value ( CLC_Type clc,
uint32_t  d_value,
uint32_t  q_value 
)

#include <drivers/inc/hpm_clc_drv.h>

CLC software inject dq adc value.

Parameters
[in]clcCLC base address
[in]d_valueCLC d adc value
[in]q_valueCLC q adc value

◆ clc_sw_inject_eadc_previous0_value()

static void clc_sw_inject_eadc_previous0_value ( CLC_Type clc,
clc_chn_t  chn,
int32_t  value 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC software inject error adc previous0 value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]valueCLC error adc previous0 value

◆ clc_sw_inject_eadc_previous1_value()

static void clc_sw_inject_eadc_previous1_value ( CLC_Type clc,
clc_chn_t  chn,
int32_t  value 
)
inlinestatic

#include <drivers/inc/hpm_clc_drv.h>

CLC software inject error adc previous1 value.

Parameters
[in]clcCLC base address
[in]chnCLC channel, clc_chn_t
[in]valueCLC error adc previous1 value