customized font for Unyte
Dependencies: Adafruit_GFX_customizedfont BLE_API USBDevice mbed
Fork of mbed-os-example-mbed5-blinky by
clkman.h
- Committer:
- SamShiSS
- Date:
- 2017-07-18
- Revision:
- 32:a1b2391b0c35
File content as of revision 32:a1b2391b0c35:
/*******************************************************************************
* Copyright (C) 2014 Maxim Integrated Products, Inc., All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Except as contained in this notice, the name of Maxim Integrated
* Products, Inc. shall not be used except as stated in the Maxim Integrated
* Products, Inc. Branding Policy.
*
* The mere transfer of this software does not imply any licenses
* of trade secrets, proprietary technology, copyrights, patents,
* trademarks, maskwork rights, or any other form of intellectual
* property whatsoever. Maxim Integrated Products, Inc. retains all
* ownership rights.
*******************************************************************************
*/
/* $Revision: 3581 $ $Date: 2014-11-18 11:46:39 -0600 (Tue, 18 Nov 2014) $ */
#ifndef _CLKMAN_H
#define _CLKMAN_H
#include "clkman_regs.h"
#include "adc_regs.h"
/**
* @file clkman.h
* @addtogroup clkman CLKMAN
* @{
* @brief This is the high level API for the clock management module
* of the MAX32600 family of ARM Cortex based embedded microcontrollers.
*/
/**
* @brief Selects an internal module clock for clock scaling configuration.
*/
typedef enum {
/** Main System clock */
MXC_E_CLKMAN_CLK_SYS = 0,
/** GPIO module clock */
MXC_E_CLKMAN_CLK_GPIO,
/** Pulse Train engine clock */
MXC_E_CLKMAN_CLK_PT,
/** SPI instance 0 module clock */
MXC_E_CLKMAN_CLK_SPI0,
/** SPI instance 1 module clock */
MXC_E_CLKMAN_CLK_SPI1,
/** SPI instance 2 module clock */
MXC_E_CLKMAN_CLK_SPI2,
/** I2C Master module clock (for all instances) */
MXC_E_CLKMAN_CLK_I2CM,
/** I2C Slave module clock */
MXC_E_CLKMAN_CLK_I2CS,
/** LCD Charge pump clock */
MXC_E_CLKMAN_CLK_LCD_CHPUMP,
/** Reserved */
MXC_E_CLKMAN_CLK_PUF,
/** PRNG module clock */
MXC_E_CLKMAN_CLK_PRNG,
/** Watchdog Timer 0 clock */
MXC_E_CLKMAN_CLK_WDT0,
/** Watchdog Timer 1 clock */
MXC_E_CLKMAN_CLK_WDT1,
/** RTC synchronizer clock (required for cross-clock-domain register updates) */
MXC_E_CLKMAN_CLK_RTC_INT_SYNC,
/** Clock for DAC 0 */
MXC_E_CLKMAN_CLK_DAC0,
/** Clock for DAC 1 */
MXC_E_CLKMAN_CLK_DAC1,
/** Clock for DAC 2 */
MXC_E_CLKMAN_CLK_DAC2,
/** Clock for DAC 3 */
MXC_E_CLKMAN_CLK_DAC3
} mxc_clkman_clk_t;
/**
* @brief Selects a TPU module clock for crypto ring-oscillator clock scaling configuration
*/
typedef enum {
/** AES engine clock */
MXC_E_CLKMAN_CRYPT_CLK_AES = 0,
/** Modular Arithmetic Accelerator (MAA) clock */
MXC_E_CLKMAN_CRYPT_CLK_MAA,
/** Pseudo-random number Generator (PRNG) clock */
MXC_E_CLKMAN_CRYPT_CLK_PRNG
} mxc_clkman_crypt_clk_t;
/**
* @brief Configures but does not enable the high frequency external oscillator circuitry.
*
* @param hfx_bypass 1 for crystal receiver bypass, 0 for no bypass.
* @param hfx_gm_adjust High frequency crystal gain adjust.
* @param hfx_dc_control High frequency crystal dc control.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_HFXConfig(uint8_t hfx_bypass, uint8_t hfx_gm_adjust, uint8_t hfx_dc_control);
/**
* @brief Enables the high frequency crystal receiver. Make sure HFX is stable before switching system clock.
*/
void CLKMAN_HFXEnable(void);
/**
* @brief Disables the high frequency crystal receiver.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_HFXDisable(void);
/**
* @brief Configures but does not enable the phase locked loop circuitry.
*
* @param pll_input_select Phase locked loop clock input.
* @param pll_divisor_select Input clock frequency for the phase locked loop.
* @param pll_stability_count Number of clocks before phase locked loop is stable.
* @param pll_bypass 1 for high frequency oscillator output for 48MHz clock, 0 for phase locked loop output.
* @param pll_8mhz_enable 1 for enable 8MHz phase locked loop output, 0 for disable.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_PLLConfig(mxc_clkman_pll_input_select_t pll_input_select,
mxc_clkman_pll_divisor_select_t pll_divisor_select,
mxc_clkman_stability_count_t pll_stability_count,
uint8_t pll_bypass, uint8_t pll_8mhz_enable);
/**
* @brief Enables the phase locked loop circuitry.
*/
void CLKMAN_PLLEnable(void);
/**
* @brief Disables the phase locked loop circuitry.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_PLLDisable(void);
/**
* @brief Starts the Trim calibration of the relaxation oscillator off the 32kHz crystal for use with USB.
*/
void CLKMAN_TrimRO_Start(void);
/**
* @brief Stops the Trim calibration of the relaxation oscillator off the 32kHz crystal for use with USB.
*/
void CLKMAN_TrimRO_Stop(void);
/**
* @brief Sets the system clock source if the source is valid. Make sure HFX is stable before switching system clock.
*
* @param system_source_select System clock source.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_SetSystemClock(mxc_clkman_system_source_select_t system_source_select);
/**
* @brief Polls on the clock stable flags until all are stable.
*/
void CLKMAN_WaitForSystemClockStable(void);
/**
* @brief Enables the USB clock.
*/
void CLKMAN_USBClockEnable(void);
/**
* @brief Disables the USB clock.
*/
void CLKMAN_USBClockDisable(void);
/**
* @brief Configures but does not enable the crypto clock.
*
* @param crypto_stability_count Number of clocks before crypto clock is stable.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_CryptoClockConfig(mxc_clkman_stability_count_t crypto_stability_count);
/**
* @brief Enables the crypto clock.
*/
void CLKMAN_CryptoClockEnable(void);
/**
* @brief Disables the crypto clock.
*/
void CLKMAN_CryptoClockDisable(void);
/**
* @brief Sets the analog to digital converter clock source if the source is valid.
*
* @param adc_source_select Analog to digital converter clock source.
* @param adc_clk_mode Divide the clock source into the ADC if source is too high.
* ADC must run at 8MHz.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_SetADCClock(mxc_clkman_adc_source_select_t adc_source_select, mxc_adc_clk_mode adc_clk_mode);
/**
* @brief Disables the analog to digital converter clock source.
*/
void CLKMAN_ADCClockDisable(void);
/**
* @brief Sets the watchdog clock source if the source is valid for the watchdog specified.
*
* @param index Index of watchdog to set clock.
* @param watchdog_source_select Watchdog clock source.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_SetWatchdogClock(uint8_t index, mxc_clkman_wdt_source_select_t watchdog_source_select);
/**
* @brief Disable the watchdog clock source for the watchdog specified.
*
* @param index Index of watchdog to disable.
*
* @return 0 => Success. Non zero => error condition.
*/
int32_t CLKMAN_WatchdogClockDisable(uint8_t index);
/**
* @brief Set the system clock scale.
* @param device_clk device enum for clock scale setup
* @param clk_scale System clock scale.
*/
void CLKMAN_SetClkScale(mxc_clkman_clk_t device_clk, mxc_clkman_clk_scale_t clk_scale);
/**
* @brief Set the TPU clock scale.
* @param device_clk device enum for clock scale setup
* @param clk_scale System clock scale.
*/
void CLKMAN_SetCryptClkScale(mxc_clkman_crypt_clk_t device_clk, mxc_clkman_clk_scale_t clk_scale);
/**
* @brief Set RTC clock for systick counter, allowing systick to operate in full clockgating powersaving mode
* @param enable 1 enable 0 disable
*/
void CLKMAN_SetRTOSMode(uint8_t enable);
/**
* @}
*/
#endif /* _CLKMAN_H */
