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   (720000000UL)
 
#define FREQ_PRESET1_PLL0_CLK1   (450000000UL)
 
#define FREQ_PRESET1_PLL0_CLK2   (300000000UL)
 
#define FREQ_PRESET1_PLL1_CLK0   (800000000UL)
 
#define FREQ_PRESET1_PLL1_CLK1   (666666666UL)
 
#define FREQ_PRESET1_PLL1_CLK2   (500000000UL)
 
#define FREQ_PRESET1_PLL1_CLK3   (266666666UL)
 
#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)
 

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_ewdg (uint32_t instance)
 Get Clock frequency for WDG. More...
 
static uint32_t get_frequency_for_pewdg (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_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...
 
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_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 EWDG_Type *const s_wdgs [] = { ((EWDG_Type *) (0xF00B0000UL) ) , ((EWDG_Type *) (0xF00B4000UL) ) }
 
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   (720000000UL)

◆ FREQ_PRESET1_PLL0_CLK1

#define FREQ_PRESET1_PLL0_CLK1   (450000000UL)

◆ FREQ_PRESET1_PLL0_CLK2

#define FREQ_PRESET1_PLL0_CLK2   (300000000UL)

◆ FREQ_PRESET1_PLL1_CLK0

#define FREQ_PRESET1_PLL1_CLK0   (800000000UL)

◆ FREQ_PRESET1_PLL1_CLK1

#define FREQ_PRESET1_PLL1_CLK1   (666666666UL)

◆ FREQ_PRESET1_PLL1_CLK2

#define FREQ_PRESET1_PLL1_CLK2   (500000000UL)

◆ FREQ_PRESET1_PLL1_CLK3

#define FREQ_PRESET1_PLL1_CLK3   (266666666UL)

◆ WDG_INSTANCE_NUM

#define WDG_INSTANCE_NUM   (2U)

Function Documentation

◆ 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_cpu()

static uint32_t get_frequency_for_cpu ( void  )
static

◆ get_frequency_for_ewdg()

static uint32_t get_frequency_for_ewdg ( uint32_t  instance)
static

Get Clock frequency for WDG.

◆ 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_pewdg()

static uint32_t get_frequency_for_pewdg ( void  )
static

Get Clock frequency for PWDG.

◆ 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_wdgs

EWDG_Type* const s_wdgs[] = { ((EWDG_Type *) (0xF00B0000UL) ) , ((EWDG_Type *) (0xF00B4000UL) ) }
static