HPM SDK
HPMicro Software Development Kit
hpm_clock_drv.c File Reference
#include "hpm_clock_drv.h"
#include "hpm_sysctl_drv.h"
#include "hpm_soc.h"
#include "hpm_common.h"
#include "hpm_pllctlv2_drv.h"

Macros

#define FREQ_PRESET1_OSC0_CLK0   (24000000UL)
 
#define FREQ_PRESET1_PLL0_CLK0   (400000000UL)
 
#define FREQ_PRESET1_PLL0_CLK1   (333333333UL)
 
#define FREQ_PRESET1_PLL0_CLK2   (250000000UL)
 
#define FREQ_PRESET1_PLL1_CLK0   (480000000UL)
 
#define FREQ_PRESET1_PLL1_CLK1   (320000000UL)
 
#define FREQ_PRESET1_PLL2_CLK0   (516096000UL)
 
#define FREQ_PRESET1_PLL2_CLK1   (451584000UL)
 
#define FREQ_32KHz   (32768UL)
 
#define ADC_INSTANCE_NUM   ARRAY_SIZE(HPM_SYSCTL->ADCCLK)
 
#define DAC_INSTANCE_NUM   ARRAY_SIZE(HPM_SYSCTL->DACCLK)
 
#define WDG_INSTANCE_NUM   (2U)
 
#define BUS_FREQ_MAX   (200000000UL)
 
#define FREQ_1MHz   (1000000UL)
 
#define CLOCK_ON   (true)
 
#define CLOCK_OFF   (false)
 

Typedefs

typedef struct _pllclk_div_map clk_pll_div_map_t
 

Functions

static uint32_t get_frequency_for_ip_in_common_group (clock_node_t node)
 Get Clock frequency for IP in common group. More...
 
static uint32_t get_frequency_for_adc (uint32_t clk_src_type, uint32_t instance)
 Get Clock frequency for ADC. More...
 
static uint32_t get_frequency_for_dac (uint32_t instance)
 Get Clock frequency for DAC. More...
 
static uint32_t get_frequency_for_wdg (uint32_t instance)
 Get Clock frequency for WDG. More...
 
static uint32_t get_frequency_for_pwdg (void)
 Get Clock frequency for PWDG. More...
 
static void switch_ip_clock (clock_name_t clock_name, bool on)
 Turn on/off the IP clock. More...
 
static uint32_t get_frequency_for_cpu (void)
 
static uint32_t get_frequency_for_axi (void)
 
static uint32_t get_frequency_for_ahb (void)
 
uint32_t clock_get_frequency (clock_name_t clock_name)
 Get specified IP frequency. More...
 
uint32_t get_frequency_for_source (clock_source_t source)
 Get Clock frequency for selected clock source. More...
 
clk_src_t clock_get_source (clock_name_t clock_name)
 Get the IP clock source Note: This API return the direct clock source. More...
 
hpm_stat_t clock_wait_source_stable (clock_name_t clock_name)
 Wait until the clock source for specified IP clock is stable. More...
 
uint32_t clock_get_divider (clock_name_t clock_name)
 Get the IP clock divider Note:This API return the direct clock divider. More...
 
hpm_stat_t clock_set_adc_source (clock_name_t clock_name, clk_src_t src)
 Set ADC clock source. More...
 
hpm_stat_t clock_set_dac_source (clock_name_t clock_name, clk_src_t src)
 Set DAC clock source. More...
 
hpm_stat_t clock_set_wdg_source (clock_name_t clock_name, clk_src_t src)
 Set the WDG clock source. More...
 
hpm_stat_t clock_set_source_divider (clock_name_t clock_name, clk_src_t src, uint32_t div)
 Set the IP clock source and divider. More...
 
void clock_enable (clock_name_t clock_name)
 Enable IP clock. More...
 
void clock_disable (clock_name_t clock_name)
 Disable IP clock. More...
 
void clock_add_to_group (clock_name_t clock_name, uint32_t group)
 Add IP to specified group. More...
 
void clock_remove_from_group (clock_name_t clock_name, uint32_t group)
 Remove IP from specified group. More...
 
bool clock_check_in_group (clock_name_t clock_name, uint32_t group)
 Check IP in specified group. More...
 
void clock_connect_group_to_cpu (uint32_t group, uint32_t cpu)
 Disconnect the clock group from specified CPU. More...
 
void clock_disconnect_group_from_cpu (uint32_t group, uint32_t cpu)
 Disconnect the clock group from specified CPU. More...
 
uint32_t clock_get_core_clock_ticks_per_us (void)
 Get core clock ticks per microsecond. More...
 
uint32_t clock_get_core_clock_ticks_per_ms (void)
 Get core clock ticks per millisecond. More...
 
void clock_cpu_delay_us (uint32_t us)
 Delay specified microseconds. More...
 
void clock_cpu_delay_ms (uint32_t ms)
 Delay specified milliseconds. More...
 
void clock_update_core_clock (void)
 Update the Core clock frequency. More...
 

Variables

static const clock_node_t s_adc_clk_mux_node []
 
static const clock_node_t s_dac_clk_mux_node []
 
static WDG_Type *const s_wdgs [] = { ((WDG_Type *) (0xF0090000UL) ) , ((WDG_Type *) (0xF0094000UL) ) }
 
static const clk_pll_div_map_t s_clk_pll_div_map []
 
uint32_t hpm_core_clock
 HPM Core clock variable. More...
 

Macro Definition Documentation

◆ ADC_INSTANCE_NUM

#define ADC_INSTANCE_NUM   ARRAY_SIZE(HPM_SYSCTL->ADCCLK)

◆ BUS_FREQ_MAX

#define BUS_FREQ_MAX   (200000000UL)

◆ CLOCK_OFF

#define CLOCK_OFF   (false)

◆ CLOCK_ON

#define CLOCK_ON   (true)

◆ DAC_INSTANCE_NUM

#define DAC_INSTANCE_NUM   ARRAY_SIZE(HPM_SYSCTL->DACCLK)

◆ FREQ_1MHz

#define FREQ_1MHz   (1000000UL)

◆ FREQ_32KHz

#define FREQ_32KHz   (32768UL)

◆ FREQ_PRESET1_OSC0_CLK0

#define FREQ_PRESET1_OSC0_CLK0   (24000000UL)

◆ FREQ_PRESET1_PLL0_CLK0

#define FREQ_PRESET1_PLL0_CLK0   (400000000UL)

◆ FREQ_PRESET1_PLL0_CLK1

#define FREQ_PRESET1_PLL0_CLK1   (333333333UL)

◆ FREQ_PRESET1_PLL0_CLK2

#define FREQ_PRESET1_PLL0_CLK2   (250000000UL)

◆ FREQ_PRESET1_PLL1_CLK0

#define FREQ_PRESET1_PLL1_CLK0   (480000000UL)

◆ FREQ_PRESET1_PLL1_CLK1

#define FREQ_PRESET1_PLL1_CLK1   (320000000UL)

◆ FREQ_PRESET1_PLL2_CLK0

#define FREQ_PRESET1_PLL2_CLK0   (516096000UL)

◆ FREQ_PRESET1_PLL2_CLK1

#define FREQ_PRESET1_PLL2_CLK1   (451584000UL)

◆ WDG_INSTANCE_NUM

#define WDG_INSTANCE_NUM   (2U)

Typedef Documentation

◆ clk_pll_div_map_t

typedef struct _pllclk_div_map clk_pll_div_map_t

Function Documentation

◆ clock_set_dac_source()

hpm_stat_t clock_set_dac_source ( clock_name_t  clock_name,
clk_src_t  src 
)

Set DAC clock source.

Parameters
[in]clock_nameDAC clock name
[in]srcDAC clock source
Returns
status_success Setting DAC clock source is successful status_clk_invalid Invalid DAC clock status_clk_src_invalid Invalid DAC clock source

◆ get_frequency_for_adc()

static uint32_t get_frequency_for_adc ( uint32_t  clk_src_type,
uint32_t  instance 
)
static

Get Clock frequency for ADC.

◆ get_frequency_for_ahb()

static uint32_t get_frequency_for_ahb ( void  )
static

◆ get_frequency_for_axi()

static uint32_t get_frequency_for_axi ( void  )
static

◆ get_frequency_for_cpu()

static uint32_t get_frequency_for_cpu ( void  )
static

◆ get_frequency_for_dac()

static uint32_t get_frequency_for_dac ( uint32_t  instance)
static

Get Clock frequency for DAC.

◆ get_frequency_for_ip_in_common_group()

static uint32_t get_frequency_for_ip_in_common_group ( clock_node_t  node)
static

Get Clock frequency for IP in common group.

◆ get_frequency_for_pwdg()

static uint32_t get_frequency_for_pwdg ( void  )
static

Get Clock frequency for PWDG.

◆ get_frequency_for_wdg()

static uint32_t get_frequency_for_wdg ( uint32_t  instance)
static

Get Clock frequency for WDG.

◆ switch_ip_clock()

static void switch_ip_clock ( clock_name_t  clock_name,
bool  on 
)
static

Turn on/off the IP clock.

Variable Documentation

◆ s_adc_clk_mux_node

const clock_node_t s_adc_clk_mux_node[]
static
Initial value:
= {
}
@ clock_node_ahb
Definition: hpm_sysctl_drv.h:186
@ clock_node_ana0
Definition: hpm_sysctl_drv.h:167

◆ s_clk_pll_div_map

const clk_pll_div_map_t s_clk_pll_div_map[]
static
Initial value:
= {
{0xFF, 1},
{0, 0},
{0, 1},
{0, 2},
{1, 0},
{1, 1},
{2, 0},
{2, 1},
}

◆ s_dac_clk_mux_node

const clock_node_t s_dac_clk_mux_node[]
static
Initial value:
= {
}
@ clock_node_ana3
Definition: hpm_sysctl_drv.h:170

◆ s_wdgs

WDG_Type* const s_wdgs[] = { ((WDG_Type *) (0xF0090000UL) ) , ((WDG_Type *) (0xF0094000UL) ) }
static