Chip-specific system clock management functions.
Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries.
Macros | |
#define | CONFIG_SYSCLK_CPU_DIV 0 |
Configuration symbol for dividing the CPU clock frequency by \(2^{CONFIG\_SYSCLK\_CPU\_DIV}\). More... | |
#define | CONFIG_SYSCLK_INIT_CPUMASK |
Configuration symbol for the CPU clocks enabled at power-on after the sysclock module has been initialized. More... | |
#define | CONFIG_SYSCLK_INIT_HSBMASK |
Configuration symbol for the HSB clocks enabled at power-on after the sysclock module has been initialized. More... | |
#define | CONFIG_SYSCLK_INIT_PBAMASK |
Configuration symbol for the PBA clocks enabled at power-on after the sysclock module has been initialized. More... | |
#define | CONFIG_SYSCLK_INIT_PBBMASK |
Configuration symbol for the PBB clocks enabled at power-on after the sysclock module has been initialized. More... | |
#define | CONFIG_SYSCLK_PBA_DIV 0 |
Configuration symbol for dividing the PBA clock frequency by \(2^{CONFIG\_SYSCLK\_PBA\_DIV}\). More... | |
#define | CONFIG_SYSCLK_PBB_DIV 0 |
Configuration symbol for dividing the PBB clock frequency by \(2^{CONFIG\_SYSCLK\_PBB\_DIV}\). More... | |
#define | CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RCSYS |
#define | CONFIG_USBCLK_DIV |
Configuration symbol for the USB generic clock divider setting. More... | |
#define | CONFIG_USBCLK_SOURCE |
Configuration symbol for the USB generic clock source. More... | |
#define | USBCLK_STARTUP_TIMEOUT (OSC0_STARTUP_TIMEOUT*(1000000/AVR32_PM_RCOSC_FREQUENCY)) |
Number of us to wait for USB clock to start. More... | |
System Clock Sources | |
#define | SYSCLK_SRC_RCSYS 0 |
Use slow clock as main clock. More... | |
#define | SYSCLK_SRC_OSC0 1 |
Use OSC0 as main clock. More... | |
#define | SYSCLK_SRC_PLL0 2 |
Use PLL0 as main clock. More... | |
USB Clock Sources | |
#define | USBCLK_SRC_OSC0 GENCLK_SRC_OSC0 |
Use OSC0. More... | |
#define | USBCLK_SRC_PLL0 GENCLK_SRC_PLL0 |
Use PLL0. More... | |
#define | USBCLK_SRC_PLL1 GENCLK_SRC_PLL1 |
Use PLL1. More... | |
Clocks derived from the CPU clock | |
#define | SYSCLK_OCD AVR32_OCD_CLK_CPU |
On-Chip Debug system. More... | |
#define | SYSCLK_SYSTIMER AVR32_CORE_CLK_CPU_COUNT |
COUNT/COMPARE system registers. More... | |
Clocks derived from the HSB clock | |
#define | SYSCLK_FLASHC_DATA (AVR32_FLASHC_CLK_HSB % 32) |
Flash data interface. More... | |
#define | SYSCLK_PBA_BRIDGE (AVR32_HMATRIX_CLK_HSB_PBA_BRIDGE % 32) |
HSB<->PBA bridge. More... | |
#define | SYSCLK_PBB_BRIDGE (AVR32_HMATRIX_CLK_HSB_PBB_BRIDGE % 32) |
HSB<->PBB bridge. More... | |
#define | SYSCLK_USBB_DATA (AVR32_USBB_CLK_HSB % 32) |
USBB DMA and FIFO interface. More... | |
#define | SYSCLK_PDCA_HSB (AVR32_PDCA_CLK_HSB % 32) |
PDCA memory interface. More... | |
Clocks derived from the PBA clock | |
#define | SYSCLK_INTC (AVR32_INTC_CLK_PBA % 32) |
Internal interrupt controller. More... | |
#define | SYSCLK_GPIO (AVR32_GPIO_CLK_PBA % 32) |
General-Purpose I/O. More... | |
#define | SYSCLK_PDCA_PB (AVR32_PDCA_CLK_PBA % 32) |
PDCA peripheral bus interface. More... | |
#define | SYSCLK_PM (AVR32_PM_CLK_PBA % 32) |
PM/RTC/EIM configuration. More... | |
#define | SYSCLK_ADC (AVR32_ADC_CLK_PBA % 32) |
A/D Converter. More... | |
#define | SYSCLK_SPI (AVR32_SPI_CLK_PBA % 32) |
SPI Controller 0. More... | |
#define | SYSCLK_TWI (AVR32_TWI_CLK_PBA % 32) |
TWI Controller. More... | |
#define | SYSCLK_USART0 (AVR32_USART0_CLK_PBA % 32) |
USART 0. More... | |
#define | SYSCLK_USART1 (AVR32_USART1_CLK_PBA % 32) |
USART 1. More... | |
#define | SYSCLK_USART2 (AVR32_USART2_CLK_PBA % 32) |
USART 2. More... | |
#define | SYSCLK_PWM (AVR32_PWM_CLK_PBA % 32) |
PWM. More... | |
#define | SYSCLK_SSC (AVR32_SSC_CLK_PBA % 32) |
Synchronous Serial Controller. More... | |
#define | SYSCLK_TC (AVR32_TC_CLK_PBA % 32) |
Timer/Counter. More... | |
#define | SYSCLK_DAC (AVR32_ABDAC_CLK_PBA % 32) |
D/A Converter. More... | |
Clocks derived from the PBB clock | |
#define | SYSCLK_HMATRIX (AVR32_HMATRIX_CLK_PBB % 32) |
HSB Matrix configuration. More... | |
#define | SYSCLK_USBB_REGS (AVR32_USBB_CLK_PBB % 32) |
USBB registers. More... | |
#define | SYSCLK_FLASHC_REGS (AVR32_FLASHC_CLK_PBB % 32) |
Flash Controller registers. More... | |
Functions | |
void | sysclk_disable_usb (void) |
Disable the USB generic clock. More... | |
void | sysclk_enable_usb (void) |
Enable the USB generic clock. More... | |
void | sysclk_priv_disable_module (unsigned int bus_id, unsigned int module_index) |
Disable a maskable module clock. More... | |
void | sysclk_priv_enable_module (unsigned int bus_id, unsigned int module_index) |
Enable a maskable module clock. More... | |
Querying the system clock and its derived clocks | |
The following functions may be used to query the current frequency of the system clock and the CPU and bus clocks derived from it. sysclk_get_main_hz() and sysclk_get_cpu_hz() can be assumed to be available on all platforms, although some platforms may define additional accessors for various chip-internal bus clocks. These are usually not intended to be queried directly by generic code. | |
static uint32_t | sysclk_get_main_hz (void) |
Return the current rate in Hz of the main system clock. More... | |
static uint32_t | sysclk_get_cpu_hz (void) |
Return the current rate in Hz of the CPU clock. More... | |
static uint32_t | sysclk_get_hsb_hz (void) |
Return the current rate in Hz of the High-Speed Bus clock. More... | |
static uint32_t | sysclk_get_pba_hz (void) |
Return the current rate in Hz of the Peripheral Bus A clock. More... | |
static uint32_t | sysclk_get_pbb_hz (void) |
Return the current rate in Hz of the Peripheral Bus B clock. More... | |
static uint32_t | sysclk_get_peripheral_bus_hz (const volatile void *module) |
Retrieves the current rate in Hz of the Peripheral Bus clock attached to the specified peripheral. More... | |
Enabling and disabling synchronous clocks | |
static void | sysclk_enable_cpu_module (unsigned int index) |
Enable a module clock derived from the CPU clock. More... | |
static void | sysclk_disable_cpu_module (unsigned int index) |
Disable a module clock derived from the CPU clock. More... | |
static void | sysclk_enable_hsb_module (unsigned int index) |
Enable a module clock derived from the HSB clock. More... | |
static void | sysclk_disable_hsb_module (unsigned int index) |
Disable a module clock derived from the HSB clock. More... | |
static void | sysclk_enable_pba_module (unsigned int index) |
Enable a module clock derived from the PBA clock. More... | |
static void | sysclk_disable_pba_module (unsigned int index) |
Disable a module clock derived from the PBA clock. More... | |
void | sysclk_enable_pbb_module (unsigned int index) |
Enable a module clock derived from the PBB clock. More... | |
void | sysclk_disable_pbb_module (unsigned int index) |
Disable a module clock derived from the PBB clock. More... | |
static void | sysclk_enable_peripheral_clock (const volatile void *module) |
Enable a peripheral's clock from its base address. More... | |
static void | sysclk_disable_peripheral_clock (const volatile void *module) |
Disable a peripheral's clock from its base address. More... | |
System Clock Source and Prescaler configuration | |
static void | sysclk_set_prescalers (unsigned int cpu_shift, unsigned int pba_shift, unsigned int pbb_shift) |
Set system clock prescaler configuration. More... | |
static void | sysclk_set_source (uint_fast8_t src) |
Change the source of the main system clock. More... | |
System Clock Initialization | |
void | sysclk_init (void) |
Initialize the synchronous clock system. More... | |