#ifndef __RFFC507X_H
#define __RFFC507X_H
//预定义VCO最高频率//
#define FVCOMAX (5400000000)
//预定义外部参考时钟频率//
#define FREF (10000000)
//RFFC507X寄存器配置结构体_RFFC507X_REG//
//定义一个变量 _RFFC507X_REG rffc;//
//在debug模式下观察一下,你就会发现它的好用。可以整个寄存器操作,也可以直接对其中一个功能进行访问//
//na开头的字段都是数据手册中未指明具体意义的bit,注意实际操作器件寄存器时要写入要求的默认值,否则可能出现工作异常//
typedef struct
{
union {
uint16_t lf;
struct {uint16_t pllcpl:3;
uint16_t p1cpdef:6;
uint16_t p2cpdef:6;
uint16_t lfact:1;};
};
union {
uint16_t xo;
struct {uint16_t suwait:10;
uint16_t xocf:1;
uint16_t xoc:4;
uint16_t xoch:1;};
};
union {
uint16_t cal_time;
struct {uint16_t tkv2:4;
uint16_t tkv1:4;
uint16_t na0:2;
uint16_t tct:5;
uint16_t wait:1;};
};
union {
uint16_t vco_ctrl;
struct {uint16_t na1:1;
uint16_t icpup:2;
uint16_t refst:1;
uint16_t xoi3:1;
uint16_t xoi2:1;
uint16_t xoi1:1;
uint16_t kvpol:1;
uint16_t kvrng:1;
uint16_t kvavg:1;
uint16_t clkpl:1;
uint16_t ctpol:1;
uint16_t ctavg:2;
uint16_t xtvco:1;
};
};
union {
uint16_t ct_cal1;
struct {uint16_t p1ctdef:7;
uint16_t p1ct:1;
uint16_t p1ctv:5;
uint16_t p1ctgain:3;
};
};
union {
uint16_t ct_cal2;
struct {uint16_t p2ctdef:7;
uint16_t p2ct:1;
uint16_t p2ctv:5;
uint16_t p2ctgain:3;
};
};
union {
uint16_t pll_cal1;
struct {uint16_t na2:2;
uint16_t p1sgn:1;
uint16_t p1kvgain:3;
uint16_t p1dn:9;
uint16_t p1kv:1;
};
};
union {
uint16_t pll_cal2;
struct {uint16_t na3:2;
uint16_t p2sgn:1;
uint16_t p2kvgain:3;
uint16_t p2dn:9;
uint16_t p2kv:1;
};
};
union {
uint16_t vco_auto;
struct {uint16_t na4:1;
uint16_t ctmin:7;
uint16_t ctmax:7;
uint16_t autos:1;
};
};
union {
uint16_t pll_ctrl;
struct {uint16_t plldy:2;
uint16_t aloi:1;
uint16_t relok:1;
uint16_t ldlev:1;
uint16_t lden:1;
uint16_t tvco:5;
uint16_t pllst:1;
uint16_t clkdiv:3;
uint16_t divby:1;
};
};
union {
uint16_t pll_bias;
struct {uint16_t p2vcoi:3;
uint16_t p2loi:4;
uint16_t na5:1;
uint16_t p1vcoi:3;
uint16_t p1loi:4;
uint16_t na6:1;
};
};
union {
uint16_t mix_cont;
struct {uint16_t na7:9;
uint16_t p2mixidd:3;
uint16_t p1mixidd:3;
uint16_t fulld:1;
};
};
union {
uint16_t p1_freq1;
struct {uint16_t p1vcosel:2;
uint16_t p1presc:2;
uint16_t p1lodiv:3;
uint16_t p1n:9;
};
};
union {
uint16_t p1_freq2;
struct {uint16_t p1nmsb:16;
};
};
union {
uint16_t p1_freq3;
struct {uint16_t na8:8;
uint16_t p1nlsb:8;
};
};
union {
uint16_t p2_freq1;
struct {uint16_t p2vcosel:2;
uint16_t p2presc:2;
uint16_t p2lodiv:3;
uint16_t p2n:9;
};
};
union {
uint16_t p2_freq2;
struct {uint16_t p2nmsb:16;
};
};
union {
uint16_t p2_freq3;
struct {uint16_t na9:8;
uint16_t p2nlsb:8;
};
};
union {
uint16_t fn_ctrl;
struct {uint16_t na10:1;
uint16_t tzps:1;
uint16_t dmode:1;
uint16_t fm:1;
uint16_t dith:1;
uint16_t mode:1;
uint16_t phsalndly:2;
uint16_t phsalngain:3;
uint16_t phaln:1;
uint16_t sdm:2;
uint16_t dithr:1;
uint16_t fnz:1;
};
};
union {
uint16_t ext_mod;
struct {uint16_t na11:10;
uint16_t modstep:4;
uint16_t modsetup:2;
};
};
union {
uint16_t fmod;
struct {uint16_t modulation:16;
};
};
union {
uint16_t sdi_ctrl;
struct {uint16_t na12:1;
uint16_t reset:1;
uint16_t na13:9;
uint16_t addr:1;
uint16_t wire4:1;
uint16_t sdimode:1;
uint16_t enbl:1;
uint16_t sipin:1;
};
};
union {
uint16_t gpo;
struct {uint16_t lock:1;
uint16_t gate:1;
uint16_t p1gpio:7;
uint16_t p2gpio:7;
};
};
union {
uint16_t t_vco;
struct {uint16_t na14:7;
uint16_t curve_def_vco3:3;
uint16_t curve_def_vco2:3;
uint16_t curve_def_vco1:3;
};
};
union {
uint16_t iqmod1;
struct {uint16_t bufdc:2;
uint16_t divbias:1;
uint16_t calblk:1;
uint16_t calnul:1;
uint16_t calon:1;
uint16_t lobias:2;
uint16_t modbias:3;
uint16_t modiv:1;
uint16_t mod:1;
uint16_t txlo:1;
uint16_t bbgm:1;
uint16_t ctrl:1;
};
};
union {
uint16_t iqmod2;
struct {uint16_t modbuf:2;
uint16_t mod2:2;
uint16_t calatten:2;
uint16_t rctune:6;
uint16_t bbatten:4;
};
};
union {
uint16_t iqmod3;
struct {uint16_t na15:3;
uint16_t dacen:1;
uint16_t bufdacq:6;
uint16_t bufdaci:6;
};
};
union {
uint16_t iqmod4;
struct {uint16_t bufbias2:2;
uint16_t bufbias1:2;
uint16_t moddacq:6;
uint16_t moddaci:6;
};
};
union {
uint16_t t_ctrl;
struct {uint16_t na16:5;
uint16_t v_test:1;
uint16_t ldo_by:1;
uint16_t ext_filt:1;
uint16_t ref_sel:1;
uint16_t filt_ctrl:2;
uint16_t fc_en:1;
uint16_t tbl_sel:2;
uint16_t tc_en:2;
};
};
union {
uint16_t dev_ctrl;
struct {uint16_t na17:1;
uint16_t bypas:1;
uint16_t ctclk:1;
uint16_t dac:1;
uint16_t cpd:1;
uint16_t cpu:1;
uint16_t rsmstopst:5;
uint16_t rsmst:1;
uint16_t readsel:4;
};
};
union {
uint16_t test;
struct {uint16_t na18:1;
uint16_t rcbyp:1;
uint16_t rgbyp:1;
uint16_t lfsrt:1;
uint16_t lfsrgatetime:4;
uint16_t lfsrp:1;
uint16_t lfsr:1;
uint16_t tsel:2;
uint16_t tmux:3;
uint16_t ten:1;
};
};
uint16_t readback;
}_RFFC507X_REG;
///////////////////////////////////////////////////////////////////////////////////////////////
//寄存器定义//
#define LF 0x00
#define XO 0x01
#define CAL_TIME 0x02
#define VCO_CTRL 0x03
#define CT_CAL1 0x04
#define CT_CAL2 0x05
#define PLL_CAL1 0x06
#define PLL_CAL2 0x07
#define VCO_AUTO 0x08
#define PLL_CTRL 0x09
#define PLL_BIAS 0x0A
#define MIX_CONT 0x0B
#define P1_FREQ1 0x0C
#define P1_FREQ2 0x0D
#define P1_FREQ3 0x0E
#define P2_FREQ1 0x0F
#define P2_FREQ2 0x10
#define P2_FREQ3 0x11
#define FN_CTRL 0x12
#define EXT_MOD 0x13
#define FMOD 0x14
#define SDI_CTRL 0x15
#define GPO 0x16
#define T_VCO 0x17
#define IQMOD1 0x18
#define IQMOD2 0x19
#define IQMOD3 0x1A
#define IQMOD4 0x1B
#define T_CTRL 0x1C
#define DEV_CTRL 0x1D
#define TEST 0x1E
#define READBACK 0x1F
///////////////////////////////
#define pxvcosel 0,2
#define pxpresc 2,2
#define pxlodiv 4,3
#define pxn 7,9
#define pxnmsb 0,16
#define pxnlsb 8,8
#endif