yb_arm/interface/stc_drv_api.h

164 lines
4.9 KiB
C
Raw Normal View History

2025-05-20 01:51:25 +08:00
/*==============================================================================
* 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同步状态 10
* Output(s):
* <none>
* 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__ */