You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

165 lines
6.4 KiB

#ifndef __VD_DEFINE_H__
#define __VD_DEFINE_H__
//-----------------------------------------------------------------------------
// vd registers definition
//-----------------------------------------------------------------------------
#pragma anon_unions
//-----------------------------------------------------------------------------
// registers structures
typedef struct
{
//vd low side comparator output high pulse width 41.6ns / lsb,max 21.33us
uint32_t high_width:9;
//vd low side comparator output low pulse width 41.6ns / lsb,max21.33us
uint32_t low_width:9;
//vd low side comparator output high pulse rising edge interval time 1. 12-bit with 24mhz clock (41.6ns/lsb) max 170us
//2. it can be read by mcu
uint32_t pwm:12;
//vd low side comparator output high pulse rising edge interval time,time out flag,max170us,canbe write 1 clr by mcu
uint32_t pwm_to_flag:1;
uint32_t reserved_31_31:1;
} REG_vd_ls_comp_bitfiled_TypeDef;
typedef struct
{
union {
__IO REG_vd_ls_comp_bitfiled_TypeDef bf;//bitfiled
__IO uint32_t word;
};
} REG_vd_ls_comp_TypeDef;
typedef struct
{
//register-optional vd rising edge blanking time,41.6ns / lsb,max:2.67us
uint32_t blank_time:6;
uint32_t reserved_31_6:26;
} REG_vd_ls_bitfiled_TypeDef;
typedef struct
{
union {
__IO REG_vd_ls_bitfiled_TypeDef bf;//bitfiled
__IO uint32_t word;
};
} REG_vd_ls_TypeDef;
typedef struct
{
//debug signal select
uint32_t sel:2;
uint32_t reserved_2_2:1;
//vd width fsm
uint32_t vdw_cst:2;
uint32_t reserved_15_5:11;
//vd width counter
uint32_t vdw_cnt:16;
} REG_vd_dbg_bitfiled_TypeDef;
typedef struct
{
union {
__IO REG_vd_dbg_bitfiled_TypeDef bf;//bitfiled
__IO uint32_t word;
};
} REG_vd_dbg_TypeDef;
typedef struct
{
//1'b1:ac off counter 100ms flag, canbe write 1 clr by mcu
uint32_t flag:1;
//1=disable ac_off
uint32_t dis:1;
uint32_t reserved_31_2:30;
} REG_vd_ac_off_bitfiled_TypeDef;
typedef struct
{
union {
__IO REG_vd_ac_off_bitfiled_TypeDef bf;//bitfiled
__IO uint32_t word;
};
} REG_vd_ac_off_TypeDef;
typedef struct
{
//vd reset counter select
//0: 10ms counter overflow
//1:100ms counter overflow
uint32_t cnt_sel:1;
//1'b1:vd rst counter 10ms/100ms flag or soft rst ,canbe write 1 clr by mcu
uint32_t flag:1;
//0:soft rst disable ; 1'b1:vd soft rst
uint32_t soft:1;
uint32_t reserved_31_3:29;
} REG_vd_rst_bitfiled_TypeDef;
typedef struct
{
union {
__IO REG_vd_rst_bitfiled_TypeDef bf;//bitfiled
__IO uint32_t word;
};
} REG_vd_rst_TypeDef;
typedef struct
{
//2'b11:ring comparator enbale delay 750ns after vd < vth_sh
//2'b10:ring comparator enbale delay 500ns after vd < vth_sh
//2'b01:ring comparator enbale delay 250ns after vd < vth_sh
//2'b00: disable delay
uint32_t tdring_sel:2;
uint32_t reserved_31_2:30;
} REG_vd_cfg_bitfiled_TypeDef;
typedef struct
{
union {
__IO REG_vd_cfg_bitfiled_TypeDef bf;//bitfiled
__IO uint32_t word;
};
} REG_vd_cfg_TypeDef;
//-----------------------------------------------------------------------------
// memory map
#define REG_VD_LS_COMP_BASE 0x4000E800
#define REG_VD_LS_BASE 0x4000E804
#define REG_VD_DBG_BASE 0x4000E808
#define REG_VD_AC_OFF_BASE 0x4000E810
#define REG_VD_RST_BASE 0x4000E814
#define REG_VD_CFG_BASE 0x4000E818
//-----------------------------------------------------------------------------
// declaration
#define REG_VD_LS_COMP ((REG_vd_ls_comp_TypeDef *) REG_VD_LS_COMP_BASE )
#define REG_VD_LS ((REG_vd_ls_TypeDef *) REG_VD_LS_BASE )
#define REG_VD_DBG ((REG_vd_dbg_TypeDef *) REG_VD_DBG_BASE )
#define REG_VD_AC_OFF ((REG_vd_ac_off_TypeDef *) REG_VD_AC_OFF_BASE )
#define REG_VD_RST ((REG_vd_rst_TypeDef *) REG_VD_RST_BASE )
#define REG_VD_CFG ((REG_vd_cfg_TypeDef *) REG_VD_CFG_BASE )
//-----------------------------------------------------------------------------
// set
#define REG_VD_LS_BLANK_TIME_POS 0
#define REG_VD_LS_BLANK_TIME_MSK (0x3Ful << REG_VD_LS_BLANK_TIME_POS)
#define REG_VD_LS_BLANK_TIME_SET(num) (((num) << REG_VD_LS_BLANK_TIME_POS ) & REG_VD_LS_BLANK_TIME_MSK)
#define REG_VD_DBG_SEL_POS 0
#define REG_VD_DBG_SEL_MSK (0x3ul << REG_VD_DBG_SEL_POS)
#define REG_VD_DBG_SEL_SET(num) (((num) << REG_VD_DBG_SEL_POS ) & REG_VD_DBG_SEL_MSK)
#define REG_VD_AC_OFF_DIS_POS 1
#define REG_VD_AC_OFF_DIS_MSK (0x1ul << REG_VD_AC_OFF_DIS_POS)
#define REG_VD_AC_OFF_DIS_SET(num) (((num) << REG_VD_AC_OFF_DIS_POS ) & REG_VD_AC_OFF_DIS_MSK)
#define REG_VD_RST_CNT_SEL_POS 0
#define REG_VD_RST_CNT_SEL_MSK (0x1ul << REG_VD_RST_CNT_SEL_POS)
#define REG_VD_RST_CNT_SEL_SET(num) (((num) << REG_VD_RST_CNT_SEL_POS ) & REG_VD_RST_CNT_SEL_MSK)
#define REG_VD_RST_SOFT_POS 2
#define REG_VD_RST_SOFT_MSK (0x1ul << REG_VD_RST_SOFT_POS)
#define REG_VD_RST_SOFT_SET(num) (((num) << REG_VD_RST_SOFT_POS ) & REG_VD_RST_SOFT_MSK)
#define REG_VD_CFG_TDRING_SEL_POS 0
#define REG_VD_CFG_TDRING_SEL_MSK (0x3ul << REG_VD_CFG_TDRING_SEL_POS)
#define REG_VD_CFG_TDRING_SEL_SET(num) (((num) << REG_VD_CFG_TDRING_SEL_POS ) & REG_VD_CFG_TDRING_SEL_MSK)
#endif /*__VD_DEFINE_H__*/