📄 ad9954.h
字号:
#ifndef _AD9954_H_
#define _AD9954_H_
//51引脚定义
sbit IO_UPDATE = P0^0;
sbit PS1 = P0^1;
sbit PS0 = P0^2;
sbit IO_SYNC = P0^3;
sbit SDIO = P0^4;
sbit SCLK = P0^5;
sbit CS = P0^6;
sbit SDO = P0^7;
sbit CS2 = P1^0;
/******************************************************************************
* 寄存器全局变量定义
* CFR1 : address : 0x00; 4 BYTE Control Function Register No.1
* CFR2 : address : 0x01; 3 BYTE Control Function Register No.2
* ASF : address : 0x02; 2 BYTE Amplitude Scale Factor
* ARR : address : 0x03; 1 BYTE Amplitude Ramp Rate
* FTW0 : address : 0x04; 2 BYTE Frequency Tuning Word NO.0
* POW0 : address : 0x05; 4 BYTE Phase Offset Word
* FTW1 : address : 0x06; 4 BYTE Frequency Tuning Word NO.1
* NLSCW : address : 0x07; 5 BYTE Negative Linear Sweep Control Word
* PLSCW : address : 0x08; 4 BYTE Positive Linear Sweep Control Word
******************************************************************************/
extern unsigned long CFR1;
extern unsigned long CFR2;
extern unsigned long ASF;
extern unsigned long ARR;
extern unsigned long FTW0;
extern unsigned long POW0;
extern unsigned long FTW1;
extern unsigned long NLSCW;
extern unsigned long PLSCW;
extern unsigned long multfreq;
extern unsigned int FMdata[64];
extern unsigned long AD9954data[64];
extern unsigned long CFR1SLAVE;
/************************************************************
* Control Function Register1
************************************************************/
#define NO_SYNCCLK 0X0002 //no sync_clk output
#define LSNODWELL 0X0004 //linear sweep no dwell
#define EPDOWN 0X0008 //extern power down mode
#define CPDOWN 0X0040 //comparetor power dowm
#define SDIOIN 0X0200 //SDIO input only
#define SINEOUT 0X1000 //Sine/Cosine select bit SINE=1
#define ACPA 0X2000 //Auto Clear phase acumulator bit
#define ACFA 0X4000 //Auto Clear frequency acumulator bit
#define LSRRLC 0X8000 //linear sweep ramp rate load control bit
#define LFSENABLE 0X00200000//Linear frequency sweep enable bit
#define SMSYN 0X00400000//software manual synchronization
#define ASYNEN 0X00800000//automatic syntronization enable bit
#define AOSK 0X01000000//Antomatic shaped On-Off Keying enable
#define OSKEN 0X02000000//shaped On-Off Keying enable bit
#define ARRLC 0X04000000 //Amplitude ramp rate load control bit
#define INPROCON_0 (0*0X08000000u)//Internal profile control bits
#define INPROCON_1 (1*0X08000000u) //Internal profile control bits
#define INPROCON_2 (2*0X08000000u)//Internal profile control bits
#define INPROCON_3 (3*0X08000000u)//Internal profile control bits
#define INPROCON_4 (4*0X08000000u)//Internal profile control bits
#define INPROCON_5 (5*0X08000000u)//Internal profile control bits
#define INPROCON_6 (6*0X08000000u)//Internal profile control bits
#define INPROCON_7 (7*0X08000000u)//Internal profile control bits
#define RAMDES 0X40000000//RAM destination bit =0 to phase accumulator; =1 to phase offset adder
#define RAMEN 0X80000000//RAM enable bit
/************************************************************
* Control Function Register2
************************************************************/
#define CPCC_0 0X0000 //CHARG PUMP CURRENT CONTROL BIT
#define CPCC_1 0X0001 //CHARG PUMP CURRENT CONTROL BIT
#define CPCC_2 0X0002 //CHARG PUMP CURRENT CONTROL BIT
#define CPCC_3 0X0003 //CHARG PUMP CURRENT CONTROL BIT
#define VCORC 0X0004 //VCO range control bit 100-250M=0; 250M-400M=1
#define RCMC_0 (0*0X0008)//Reference clock multipler control bits
#define RCMC_4 (4*0X0008)//Reference clock multipler control bits
#define RCMC_5 (5*0X0008)//Reference clock multipler control bits
#define RCMC_6 (6*0X0008)//Reference clock multipler control bits
#define RCMC_7 (7*0X0008)//Reference clock multipler control bits
#define RCMC_8 (8*0X0008)//Reference clock multipler control bits
#define RCMC_9 (9*0X0008)//Reference clock multipler control bits
#define RCMC_10 (10*0X0008)//Reference clock multipler control bits
#define RCMC_11 (11*0X0008)//Reference clock multipler control bits
#define RCMC_12 (12*0X0008)//Reference clock multipler control bits
#define RCMC_13 (13*0X0008)//Reference clock multipler control bits
#define RCMC_14 (14*0X0008)//Reference clock multipler control bits
#define RCMC_15 (15*0X0008)//Reference clock multipler control bits
#define RCMC_16 (16*0X0008)//Reference clock multipler control bits
#define RCMC_17 (17*0X0008)//Reference clock multipler control bits
#define RCMC_18 (18*0X0008)//Reference clock multipler control bits
#define RCMC_19 (19*0X0008)//Reference clock multipler control bits
#define RCMC_20 (20*0X0008)//Reference clock multipler control bits
#define CRYOUTEN 0X0200 //Crystal output enable
#define HMSYNEN 0X0400 //Hadeware manual synchronical enable bit
#define HSSYNEN 0X0800 //High speed sync enable bit
/************************************************************
* RAM segment control word
************************************************************/
#define NODWELL 0X10 //NO dwell active bit
#define RAMSMC_0 (0*0x20) //RAM Segment mode control bits
#define RAMSMC_1 (1*0x20) //RAM Segment mode control bits
#define RAMSMC_2 (2*0x20) //RAM Segment mode control bits
#define RAMSMC_3 (3*0x20) //RAM Segment mode control bits
#define RAMSMC_4 (4*0x20) //RAM Segment mode control bits
#define RAMSMC_5 (5*0x20) //RAM Segment mode control bits
#define RAMSMC_6 (6*0x20) //RAM Segment mode control bits
#define RAMSMC_7 (7*0x20) //RAM Segment mode control bits
#define BABIT0 0X00000400//RAM segment beginning address bit0
#define BABIT1 0X00000800//RAM segment beginning address bit1
#define BABIT2 0X00001000//RAM segment beginning address bit2
#define BABIT3 0X00002000//RAM segment beginning address bit3
#define BABIT4 0X00004000//RAM segment beginning address bit4
#define BABIT5 0X00008000//RAM segment beginning address bit5
#define BABIT6 0X00000001//RAM segment beginning address bit6
#define BABIT7 0X00000002//RAM segment beginning address bit7
#define BABIT8 0X00000004//RAM segment beginning address bit8
#define BABIT9 0X00000008//RAM segment beginning address bit9
#define FABIT0 0X00010000//RAM segment final address bit0
#define FABIT1 0X00020000//RAM segment final address bit1
#define FABIT2 0X00040000//RAM segment final address bit2
#define FABIT3 0X00080000//RAM segment final address bit3
#define FABIT4 0X00100000//RAM segment final address bit4
#define FABIT5 0X00200000//RAM segment final address bit5
#define FABIT6 0X00400000//RAM segment final address bit6
#define FABIT7 0X00800000//RAM segment final address bit7
#define FABIT8 0X00000100//RAM segment final address bit8
#define FABIT9 0X00000200//RAM segment final address bit9
/***********************************************************************
* AD9954基本操作及初始化
***********************************************************************/
/***********************************************************************
** 函数名称: 端口操作
** 功能描述: AD9954端口基本操作
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
extern void SCLK_0(void);
extern void SCLK_1(void);
extern void SDIO_0(void);
extern void SDIO_1(void);
extern void CS_Enable(void);
extern void CS_Disable(void);
extern void CS2_Enable(void);
extern void CS2_Disable(void);
extern void IO_UPDATE_0(void);
extern void IO_UPDATE_1(void);
extern void IO_SYNC_0(void);
extern void IO_SYNC_1(void);
extern void PS0_Set_High(void);
extern void PS0_Set_Low(void);
extern void PS1_Set_High(void);
extern void PS1_Set_Low(void);
/***********************************************************************
** 函数名称: IO9954_Init
** 功能描述: IO_Init
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
extern void IO9954_Init();
/***********************************************************************
** 函数名称: nNop
** 功能描述: US级软件延时(不精确)
** 输 入: 延时参数,值越大时延时越久
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
extern void nNop(unsigned long nValue);
/***********************************************************************
** 函数名称: WriteByte
** 功能描述: 向AD9954发送一字节数据 MSB FIRST
** 输 入: unsigned char data 发送的数据
** 输 出: 无
** 全局变量: 无
** 调用模块: 端口操作 Delay_Us
***********************************************************************/
extern void WriteByte(unsigned char Data);
/***********************************************************************
** 函数名称: ReadByte
** 功能描述: 从AD9954读取一字节数据 MSB FIRST
** 输 入: 无
** 输 出: unsigned char 读回的数据
** 全局变量: 无
** 调用模块: 端口操作
***********************************************************************/
extern unsigned char ReadByte(void);
/***********************************************************************
** 函数名称: RW_Reg
** 功能描述: AD9954读写寄存器操作
** 输 入: unsigned char addr 寄存器地址
** unsigned char *buf 写寄存器: 指向发送数据的指针
** 读寄存器: 指向读回数据的指针
** unsigned char num 发送或读回的数据长度 num Byte
** unsigned char rw 读写选择 0 读 1 写
** 输 出: 无
** 全局变量: 无
** 调用模块: ReadByte WriteByte
***********************************************************************/
extern void RW_Reg(unsigned char addr,unsigned char *buf,unsigned char num,
unsigned char rw);
/***********************************************************************
** 函数名称: AD9954_Write_Reg
** 功能描述: AD9954写寄存器操作
** 输 入: unsigned long command 写入寄存器的指令
** unsigned char num 发送或读回的数据长度 num Byte
** unsigned char addr 寄存器地址
** 输 出: 无
** 全局变量: 无
** 调用模块: RW_Reg
***********************************************************************/
extern void AD9954_Write_Reg(unsigned long command,unsigned char num,
unsigned char addr);
/***********************************************************************
** 函数名称: FTW_Float
** 功能描述: 将浮点型频率值MHZ 转换成频率控制字
** 输 入: float freqfloat 浮点型频率值MHZ
** 输 出: unsigned long 4 byte 频率控制字
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
extern unsigned long FTW_Float(float freqfloat);
/***********************************************************************
** 函数名称: 更新寄存器操作
** 功能描述: 每次更新寄存器的固定操作
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
***********************************************************************/
extern void AD9954_Updata_First(void);
extern void AD9954_Updata_Final(void);
/*****************************************************************************
* Single-Tone Mode
******************************************************************************/
/***********************************************************************
** 函数名称: AD9954_SingleTone_Init
** 功能描述: AD9954 Single-Tone Mode 初始化
** 输 入: 无
** 输 出: 无
** 全局变量: CFR1 CFR2 AD9954 功能控制寄存器
** 调用模块: AD9954_Write_Reg 更新寄存器操作
***********************************************************************/
extern void AD9954_SingleTone_Init(void);
/***********************************************************************
** 函数名称: AD9954_SingleTone_Freq
** 功能描述: 更新频率控制
** 输 入: float freq 浮点型频率值MHZ
** 输 出: 无
** 全局变量: FTW0
** 调用模块: AD9954_Write_Reg 更新寄存器操作
***********************************************************************/
extern void AD9954_SingleTone_Freq(float freq);
/***********************************************************************
** 函数名称: AD9954_Amplitude_Change
** 功能描述: 手动改变输出幅度
** 输 入: 无
** 输 出: 无
** 全局变量: ASF
** 调用模块: AD9954_Write_Reg 更新寄存器操作
***********************************************************************/
extern void AD9954_Amplitude_Change(void);
/***********************************************************************
** 函数名称: AD9954_Phase_Change
** 功能描述: 改变输出相角 0<=phase<=360
** 输 入: double phase 浮点型相角值
** 输 出: 无
** 全局变量: POW0
** 调用模块: AD9954_Write_Reg 更新寄存器操作
***********************************************************************/
extern void AD9954_Phase_Change(double phase);
#endif //_AD9954_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -