?? 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 + -