/*============================================================================== * Copyright (c) 2011~2012, CPIT. All Rights Reserved. * * MODULE: STC模块驱动 * * FILENAME: stc.h * * DESCRIPTION: Source Code of STC Driver * * Current Version: 1.0 * * HISTORY: * Date CR No Person Description * ---------- ------------ ------ ------------- * 2022-05-21 Li Weihua Initial version. ==============================================================================*/ #ifndef __STC_DRV_API_H__ #define __STC_DRV_API_H__ #include "typedef.h" #ifdef __cplusplus extern "C" { #endif #if 0 #pragma align(1) /* set tight packing */ #pragma pack(1) #endif /*============================================================================== Includes and Public Data Declarations ==============================================================================*/ /* 包含系统文件以及定义公用数据文件 */ /*============================================================================== Include Files ==============================================================================*/ /* 包含本地文件 */ /*============================================================================== Constant / Define Declarations ==============================================================================*/ /* 常量定义,并对所定义的常量进行说明 */ /*============================================================================== Global Constant Data Declarations ==============================================================================*/ /*============================================================================== Macro Definitions ==============================================================================*/ /* 宏定义,并对其进行简要说明 */ /*============================================================================== Function Prototypes ==============================================================================*/ /*STC中断类型*/ typedef enum { STC_INT_RESERVED = 0, /* Reserved*/ STC_TOD_1PPS, /* stc内部产生的1pps中断 */ STC_EX_1PPS_IN, /* 外部1pps中断 */ STC_HSCC_DUMP = 4 /* HSCC_DUMP中断 */ } stc_int_type_e; /*输入1PPS中断源*/ typedef enum { GMAC0_1PPS_IN = 0, /* gmac0 */ GMAC1_1PPS_IN, /* gmac1 */ RESERVED0_1PPS_IN, /* Reserved*/ CPRI_GMAC_1PPS_IN = 3, /* cpri gmac */ TMAC_1PPS_IN, /* tmac */ GNSS_1PPS_IN, /* 接收机 */ //GMAC_1PPS RESERVED_1PPS_IN /* Reserved*/ } pp1s_soure_e; /*输出1PPS源*/ typedef enum { GMAC0_1PPS_OUT = 0, /* gmac0 */ GMAC1_1PPS_OUT, /* gmac1 */ RESERVED0_1PPS_OUT, /* Reserved*/ CPRI_GMAC_1PPS_OUT = 3, /* cpri gmac */ TMAC_1PPS_OUT, /* tmac */ STC_1PPS_OUT, /* stc产生的1pps */ TOD_1PPS_OUT, /* stc产生的1pps */ RESERVED_1PPS_OUT /* Reserved*/ } pp1s_output_e; /*synce接口类型*/ typedef enum { SYNCE_GMAC = 0, /* GMAC */ SYNCE_TMAC, /* TMAC */ SYNCE_ECPRI, /* eCPRI */ RESERVED_SYNCE /* Reserved*/ }synce_src_e; /*hscc_dump的输入源*/ typedef enum { TOD_1PPS = 0, /* stc内部产生的1pps */ EX_1PPS_IN, /* 外部1pps */ EX_SYNCE, /* 恢复时钟/synce时钟分频产生的1pps */ HSCC_RESERVED /* Reserved*/ } hscc_dump_soure_e; int32_t init_stc(); int32_t enable_stc_irq(stc_int_type_e irq_type); int32_t disable_stc_irq(stc_int_type_e irq_type); int32_t select_xpps_in_source(pp1s_soure_e src); int32_t set_xpps_out_source(pp1s_output_e src,uint32_t enable); double stc_adjust_frequency(); int32_t stc_adjust_phase(uint32_t phase_diff); int32_t stc_adjust_sniffer_phase(int32_t phase_diff,uint32_t flag); int32_t set_ape_preset_value(uint32_t cal_bfn); int32_t stc_wait_for_hscc(); int32_t stc_wait_for_expps(); uint32_t get_gmac_src_time(); uint32_t get_tmac_src_time(); uint32_t read_stc_local_timer(); /****************************************************************** * Input(s): * sync_status: STC同步状态 1:同步,0:失步 * Output(s): * * Returns: * 0:成功 * 非0:失败 ********************************************************************/ int32_t set_sync_status_to_ape(uint32_t sync_status); /*配置STC内部 synce时钟源*/ int32_t config_synce(uint32_t synce_flag, synce_src_e interface, uint32_t clk); /*synce时设置频率校准周期*/ int32_t set_fsync_frequncy(uint32_t frequncy); /*选择hscc_dump中断的输入*/ int32_t select_hscc_dump_source(hscc_dump_soure_e src_type); uint32_t read_stc_local_timer(); #if 0 #pragma align() /* restore default packing */ #pragma pack() #endif #ifdef __cplusplus } #endif #endif /* __STC_DRV_API_H__ */