R2UWaterRS485UW500/hardinterface/inc/UWater_clktrim_driver.h

84 lines
2.2 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
******************************************************************************
* @file lvd.h
* @author (C)2015, Qindao ieslab Co., Ltd
* @version V1.0
* @date 2015-12-25
* @brief the function of the entity of system processor
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __UWater_CLKTRIM_DRIVER_H
#define __UWater_CLKTRIM_DRIVER_H
#ifdef __cplusplus
extern "C"
{
#endif
#include "ddl.h"
#include "type.h"
#define TRIM_DONE 0xFF //校准成功
#define TRIM_OVERFLOW 0xEE //待校准时钟计数器溢出
#define REF_CON (32768u) //参考时钟计数器初值32768hz3277约为100ms
#define CAL_CON_TARGET (4000000u)//3840u //待校准时钟计数器目标值38400hz3840为100ms
#define ERROR_RANGE 19u //待校准时钟误差范围值3840*0.005约0.5%内
#define TRIM_MAX_NUM 60 //校准模块启动后允许连续校准次数
#define EVERYDAY_TRIM_MAX_NUM 50 //校准模块每天允许校准次数
/*温度差值 单位摄氏度*/
#define TEMPERTURE_DIFF 5.0f
enum clktrim_adjust_direction
{
DIRECTIONLESS = 0,
UPWARD,
DOWNWARD
};
typedef struct
{
u8 adjust_direction_flg; //调整方向的标志
u32 diff_value; //差值
}CLKTRIM_INFO;
enum clktrim_machine_state_num //时钟校准状态机状态号
{
CLKTRIM_MACHINE_S0 = 0,
CLKTRIM_MACHINE_S1,
CLKTRIM_MACHINE_S2,
CLKTRIM_MACHINE_S3
};
/* MACRO Define---------------------------------------------------------------*/
#define SYS_FREQ 4000000
#if(SYS_FREQ == 4000000)
#define SYSCTRL_FREQ SysctrlRchFreq4MHz
#elif(SYS_FREQ == 8000000)
#define SYSCTRL_FREQ SysctrlRchFreq8MHz
#elif(SYS_FREQ == 16000000)
#define SYSCTRL_FREQ SysctrlRchFreq16MHz
#elif(SYS_FREQ == 24000000)
#define SYSCTRL_FREQ SysctrlRchFreq24MHz
#endif
/* variables Define---------------------------------------------------------------*/
/* Function Declare------------------------------------------------------------*/
extern void ClkTrimInit(void);
u8 ClkTrimIfIdle(void);
void ClktrimMainMachine(void);
#ifdef __cplusplus
}
#endif
#endif /* __UWater_UART_DRIVER_H */