Chip-specific system clock management functions.
Copyright (c) 2010-2018 Microchip Technology Inc. and its subsidiaries.
Macros | |
#define | AVR32_ADCIFA_CLK_PBC 134 |
#define | AVR32_CANIF_CLK_PBC 132 |
#define | AVR32_MDMA_CLK_PBC 129 |
#define | AVR32_PDCA_CLK_PBC 128 |
#define | AVR32_PM_PBASEL_PBSEL 0 |
#define | AVR32_PM_PBBSEL_PBSEL 0 |
#define | AVR32_PM_PBCSEL_PBSEL 0 |
#define | AVR32_SPI0_CLK_PBC 131 |
#define | AVR32_TC0_CLK_PBC 133 |
#define | AVR32_TWIM2_CLK_PBC 136 |
#define | AVR32_TWIS2_CLK_PBC 137 |
#define | AVR32_USART1_CLK_PBC 130 |
#define | AVR32_USART4_CLK_PBC 135 |
#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_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_SCIF_RCOSC_FREQUENCY)) |
Number of us to wait for USB clock to start. More... | |
Configuration Symbols | |
#define | CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RCSYS |
Initial/static main system clock source. More... | |
#define | CONFIG_SYSCLK_CPU_DIV 0 |
Initial/static CPU/HSB/PBB clock divider (log2) More... | |
#define | CONFIG_SYSCLK_PBA_DIV 0 |
Initial/static PBA clock divider (log2) More... | |
#define | CONFIG_SYSCLK_PBB_DIV 0 |
Initial/static PBB clock divider (log2) More... | |
#define | CONFIG_SYSCLK_PBC_DIV 0 |
Initial/static PBC clock divider (log2) 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_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_INIT_PBCMASK |
Configuration symbol for the PBC clocks enabled at power-on after the sysclock module has been initialized. More... | |
System clock source | |
#define | SYSCLK_SRC_RCSYS 0 |
System RC oscillator. More... | |
#define | SYSCLK_SRC_OSC0 1 |
Oscillator 0. More... | |
#define | SYSCLK_SRC_OSC1 2 |
Oscillator 1. More... | |
#define | SYSCLK_SRC_PLL0 3 |
Phase Locked Loop 0. More... | |
#define | SYSCLK_SRC_PLL1 4 |
Phase Locked Loop 1. More... | |
#define | SYSCLK_SRC_RC8M 5 |
8 MHz RC oscillator More... | |
#define | SYSCLK_SRC_RC120M 7 |
120 MHz RC oscillator More... | |
USB Clock Sources | |
#define | USBCLK_SRC_OSC0 GENCLK_SRC_OSC0 |
Use OSC0. More... | |
#define | USBCLK_SRC_OSC1 GENCLK_SRC_OSC1 |
Use OSC1. 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_SAU_HSB (AVR32_SAU_CLK_HSB % 32) |
Secure Access Unit HSB interface. More... | |
#define | SYSCLK_PDCA_HSB (AVR32_PDCA_CLK_HSB % 32) |
PDCA memory interface. More... | |
#define | SYSCLK_MDMA_HSB (AVR32_MDMA_CLK_HSB % 32) |
MDMA memory interface. More... | |
#define | SYSCLK_USBC_DATA (AVR32_USBC_CLK_HSB % 32) |
USBC DMA and FIFO interface. More... | |
#define | SYSCLK_CANIF_DATA (AVR32_CANIF_CLK_HSB % 32) |
CANIF DMA interface. More... | |
#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_PBC_BRIDGE (AVR32_HMATRIX_CLK_HSB_PBC_BRIDGE % 32) |
HSB<->PBC bridge. More... | |
#define | SYSCLK_HSB_RAM (AVR32_RAM_CLK_HSB % 32) |
HSB RAM. More... | |
#define | SYSCLK_EBI (AVR32_EBI_CLK_HSB % 32) |
External Bus Interface. More... | |
#define | SYSCLK_PEVC_HSB (AVR32_PEVC_CLK_HSB % 32) |
Peripheral Event Controller. More... | |
Clocks derived from the PBA clock | |
#define | SYSCLK_INTC (AVR32_INTC_CLK_PBA % 32) |
Internal interrupt controller. More... | |
#define | SYSCLK_PM (AVR32_PM_CLK_PBA % 32) |
PM/RTC/EIM configuration. More... | |
#define | SYSCLK_SCIF (AVR32_SCIF_CLK_PBA % 32) |
System Control Interface. More... | |
#define | SYSCLK_AST (AVR32_AST_CLK_PBA % 32) |
Asynchronous Timer. More... | |
#define | SYSCLK_WDT (AVR32_WDT_CLK_PBA % 32) |
Watchdog Timer. More... | |
#define | SYSCLK_EIC (AVR32_EIC_CLK_PBA % 32) |
External Interrupt Controller. More... | |
#define | SYSCLK_FREQM (AVR32_FREQM_CLK_PBA % 32) |
Frequency Meter. More... | |
#define | SYSCLK_GPIO (AVR32_GPIO_CLK_PBA % 32) |
General-Purpose I/O. More... | |
#define | SYSCLK_USART0 (AVR32_USART0_CLK_PBA % 32) |
USART 0. More... | |
#define | SYSCLK_USART2 (AVR32_USART2_CLK_PBA % 32) |
USART 2. More... | |
#define | SYSCLK_USART3 (AVR32_USART3_CLK_PBA % 32) |
USART 3. More... | |
#define | SYSCLK_SPI1 (AVR32_SPI1_CLK_PBA % 32) |
SPI Controller 1. More... | |
#define | SYSCLK_TWIM0 (AVR32_TWIM0_CLK_PBA % 32) |
TWI Master 0. More... | |
#define | SYSCLK_TWIM1 (AVR32_TWIM1_CLK_PBA % 32) |
TWI Master 1. More... | |
#define | SYSCLK_TWIS0 (AVR32_TWIS0_CLK_PBA % 32) |
TWI Slave 0. More... | |
#define | SYSCLK_TWIS1 (AVR32_TWIS1_CLK_PBA % 32) |
TWI Slave 1. More... | |
#define | SYSCLK_IISC (AVR32_IISC_CLK_PBA % 32) |
Inter-IC Sound (I2S) Controller. More... | |
#define | SYSCLK_PWM (AVR32_PWM_CLK_PBA % 32) |
Pulse Width Modulator. More... | |
#define | SYSCLK_QDEC0 (AVR32_QDEC0_CLK_PBA % 32) |
Quadrature Decoder 0. More... | |
#define | SYSCLK_QDEC1 (AVR32_QDEC1_CLK_PBA % 32) |
Quadrature Decoder 1. More... | |
#define | SYSCLK_TC1 (AVR32_TC1_CLK_PBA % 32) |
Timer/Counter 1. More... | |
#define | SYSCLK_PEVC_REGS (AVR32_PEVC_CLK_PBA % 32) |
Peripheral Event Controller. More... | |
#define | SYSCLK_ACIFA0 (AVR32_ACIFA0_CLK_PBA % 32) |
Analog Comparator 0. More... | |
#define | SYSCLK_ACIFA1 (AVR32_ACIFA1_CLK_PBA % 32) |
Analog Comparator 1. More... | |
#define | SYSCLK_DACIFB0 (AVR32_DACIFB0_CLK_PBA % 32) |
D/A Converter 0. More... | |
#define | SYSCLK_DACIFB1 (AVR32_DACIFB1_CLK_PBA % 32) |
D/A Converter 1. More... | |
#define | SYSCLK_AW (AVR32_AW_CLK_PBA % 32) |
aWire UART More... | |
Clocks derived from the PBB clock | |
#define | SYSCLK_FLASHC_REGS (AVR32_FLASHC_CLK_PBB % 32) |
Flash Controller registers. More... | |
#define | SYSCLK_USBC_REGS (AVR32_USBC_CLK_PBB % 32) |
USBB registers. More... | |
#define | SYSCLK_HMATRIX (AVR32_HMATRIX_CLK_PBB % 32) |
HSB Matrix configuration. More... | |
#define | SYSCLK_SAU_REGS (AVR32_SAU_CLK_PBB % 32) |
Secure Access Unit register. More... | |
#define | SYSCLK_SMC_REGS (AVR32_SMC_CLK_PBB % 32) |
Static Memory Controller registers. More... | |
#define | SYSCLK_SDRAMC_REGS (AVR32_SDRAMC_CLK_PBB % 32) |
SDRAM Controller registers. More... | |
#define | SYSCLK_MACB_REGS (AVR32_MACB_CLK_PBB % 32) |
Ethernet MAC registers. More... | |
Clocks derived from the PBC clock | |
#define | SYSCLK_PDCA_PB (AVR32_PDCA_CLK_PBC % 32) |
PDCA peripheral bus interface. More... | |
#define | SYSCLK_MDMA_REGS (AVR32_MDMA_CLK_PBC % 32) |
MDMA registers. More... | |
#define | SYSCLK_USART1 (AVR32_USART1_CLK_PBC % 32) |
USART 1. More... | |
#define | SYSCLK_SPI0 (AVR32_SPI0_CLK_PBC % 32) |
SPI Controller 0. More... | |
#define | SYSCLK_CANIF_REGS (AVR32_CANIF_CLK_PBC % 32) |
CANIF registers. More... | |
#define | SYSCLK_TC0 (AVR32_TC0_CLK_PBC % 32) |
Timer/Counter 0. More... | |
#define | SYSCLK_ADCIFA (AVR32_ADCIFA_CLK_PBC % 32) |
A/D Converter. More... | |
#define | SYSCLK_USART4 (AVR32_USART4_CLK_PBC % 32) |
USART 4. More... | |
#define | SYSCLK_TWIM2 (AVR32_TWIM2_CLK_PBC % 32) |
TWI Master 2. More... | |
#define | SYSCLK_TWIS2 (AVR32_TWIS2_CLK_PBC % 32) |
TWI Slave 2. 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_pbc_hz (void) |
Return the current rate in Hz of the Peripheral Bus C 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... | |
static void | sysclk_enable_pbb_module (unsigned int index) |
Enable a module clock derived from the PBB clock. More... | |
static void | sysclk_disable_pbb_module (unsigned int index) |
Disable a module clock derived from the PBB clock. More... | |
static void | sysclk_enable_pbc_module (unsigned int index) |
Enable a module clock derived from the PBC clock. More... | |
static void | sysclk_disable_pbc_module (unsigned int index) |
Disable a module clock derived from the PBC 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 | |
void | sysclk_set_prescalers (unsigned int cpu_shift, unsigned int pba_shift, unsigned int pbb_shift, unsigned int pbc_shift) |
Set system clock prescaler configuration. More... | |
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... | |
#define AVR32_ADCIFA_CLK_PBC 134 |
#define AVR32_CANIF_CLK_PBC 132 |
#define AVR32_MDMA_CLK_PBC 129 |
#define AVR32_PDCA_CLK_PBC 128 |
#define AVR32_PM_PBASEL_PBSEL 0 |
Referenced by sysclk_set_prescalers().
#define AVR32_PM_PBBSEL_PBSEL 0 |
Referenced by sysclk_set_prescalers().
#define AVR32_PM_PBCSEL_PBSEL 0 |
Referenced by sysclk_set_prescalers().
#define AVR32_SPI0_CLK_PBC 131 |
#define AVR32_TC0_CLK_PBC 133 |
#define AVR32_TWIM2_CLK_PBC 136 |
#define AVR32_TWIS2_CLK_PBC 137 |
#define AVR32_USART1_CLK_PBC 130 |
#define AVR32_USART4_CLK_PBC 135 |