/**
|
******************************************************************************
|
* @file xl_osc.h
|
* @author software group
|
* @brief This file contains all the functions prototypes for the OSC
|
* firmware library.
|
******************************************************************************
|
* @attention
|
*
|
* 2019 by Chipways Communications,Inc. All Rights Reserved.
|
* This software is supplied under the terms of a license
|
* agreement or non-disclosure agreement with Chipways.
|
* Passing on and copying of this document,and communication
|
* of its contents is not permitted without prior written
|
* authorization.
|
*
|
* <h2><center>© COPYRIGHT 2019 Chipways</center></h2>
|
******************************************************************************
|
*/
|
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
#ifndef XL_OSC_H_
|
#define XL_OSC_H_
|
|
#ifdef __cplusplus
|
extern "C" {
|
#endif
|
|
|
/* Includes ------------------------------------------------------------------*/
|
#include "XL6600.h"
|
|
/* Register define ------------------------------------------------------------*/
|
#define OSC_CR_OSCINIT_MASK 0x1u
|
#define OSC_CR_OSCINIT_SHIFT 0u
|
|
#define OSC_CR_HGO_MASK 0x2u
|
#define OSC_CR_HGO_SHIFT 1u
|
|
#define OSC_CR_RANGE_MASK 0x4u
|
#define OSC_CR_RANGE_SHIFT 2u
|
|
#define OSC_CR_OSCOS_MASK 0x10u
|
#define OSC_CR_OSCOS_SHIFT 4u
|
|
#define OSC_CR_OSCSTEN_MASK 0x20u
|
#define OSC_CR_OSCSTEN_SHIFT 5u
|
|
#define OSC_CR_OSCEN_MASK 0x80u
|
#define OSC_CR_OSCEN_SHIFT 7u
|
|
/* TCR Bit Fields */
|
#define OSC_TCR_ECLK_MASK 0x7FFFu
|
#define OSC_TCR_ECLK_SHIFT 0u
|
|
#define OSC_TCR_CV_MASK 0x8000u
|
#define OSC_TCR_CV_SHIFT 15u
|
|
/** OSC - Register Layout Typedef */
|
typedef struct {
|
__IO uint32_t CR; /*!< OSC ¿ØÖƼĴæÆ÷, offset: 0x0 */
|
__IO uint32_t TCR; /*!< OSC À©Õ¹Ê±¼ä¿ØÖƼĴæÆ÷, offset: 0x4 */
|
} OSC_Type;
|
|
extern OSC_Type* OSC;
|
|
/** @addtogroup XL6600_StdPeriph_Driver
|
* @{
|
*/
|
|
/** @addtogroup OSC
|
* @{
|
*/
|
|
/* Exported types ------------------------------------------------------------*/
|
|
/**
|
* @brief OSC³õʼ»¯½á¹¹Ì嶨Òå
|
*/
|
typedef struct
|
{
|
uint8_t OSC_OutputSelect; /*!< OSC Êä³öÑ¡Ôñ */
|
uint8_t OSC_RangeSelect; /*!< ƵÂÊ·¶Î§Ñ¡Ôñ */
|
uint8_t OSC_ModeSelect; /*!< ¸ßÔöÒæÕñµ´Æ÷Ñ¡Ôñ */
|
|
}OSC_InitTypeDef;
|
|
/** @defgroup OSC_Exported_Constants OSCÄ£¿éʹÓòÎÊý¶¨Òå
|
* @{
|
*/
|
|
/** @defgroup OSC_OutSelect OSCÊä³öÑ¡Ôñ
|
* @{
|
*/
|
#define OSC_EXTERNAL_COLOCK ((uint8_t)0x00) /*!< Ñ¡ÔñÍⲿʱÖÓÔ´ */
|
#define OSC_OSCCILLATOR_COLOR ((uint8_t)0x10) /*!< Ñ¡ÔñOSCʱÖÓÔ´ */
|
/**
|
* @}
|
*/
|
|
/** @defgroup OSC_RangeSelect OSCƵÂÊ·¶Î§Ñ¡Ôñ
|
* @{
|
*/
|
#define OSC_RANGE_LOW ((uint8_t)0x00) /*!< 32kHz */
|
#define OSC_RANGE_HIGH ((uint8_t)0x04) /*!< 4 to 24MHz */
|
/**
|
* @}
|
*/
|
/** @defgroup OSC_WorkMode OSC¹¤×÷ģʽ
|
* @{
|
*/
|
#define OSC_LP_MODE ((uint8_t)0x00) /*!< µÍ¹¦ºÄģʽ */
|
#define OSC_HG_MODE ((uint8_t)0x02) /*!< ¸ßÔöÒæÄ£Ê½ */
|
/**
|
* @}
|
*/
|
|
/** @defgroup OSC_InitResult OSC³õʼ»¯½á¹û
|
* @{
|
*/
|
#define OSC_INITSTATUS_FAILED ((uint8_t)0x00) /*!< OSC ³õʼ»¯Ê§°Ü */
|
#define OSC_INITSTATUS_SUCESS ((uint8_t)0x01) /*!< OSC ³õʼ»¯³É¹¦ */
|
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|
|
/* Exported macro ------------------------------------------------------------*/
|
/* Exported functions --------------------------------------------------------*/
|
void OSC_Deinit(void);
|
void OSC_Init(const OSC_InitTypeDef *OSC_InitStruct);
|
void OSC_EnableCmd(FunctionalState State);
|
void OSC_ModuleInStopModeCmd(FunctionalState NewState);
|
void OSC_SetExtTime(uint32_t ExpTime);
|
uint8_t OSC_GetInitStatus(void);
|
uint8_t OSC_GetRange(void);
|
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#endif /*__XL_OSC_H__ */
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|