【MSPM0G3519 系列】AD9959 DDS模塊(凌智)移植
引言
看了清單,感覺(jué)儀表的頻率會(huì)高一些啊,專(zhuān)門(mén)在m0上移植了AD9959程序,可能用來(lái)較高頻的掃頻。
AD9959在正常的頻率范圍內(nèi)(100kHz - 150MHz以內(nèi)),有最高840mVpp輸出。
AD9959擁有四個(gè)通道,每一個(gè)通道的頻率、相位和幅值獨(dú)立且可調(diào)。
AD9959頻率范圍:40kHz - 200MHz;幅值范圍:0mVpp - 840mVpp;相位范圍:0° - 180°。
移植
引腳
由于用不上高頻調(diào)制和自動(dòng)掃頻,所以就沒(méi)用上P0~P3這四個(gè)引腳,其他引腳是都接上了的。(哦對(duì)了記得加一個(gè)散熱片)

配置
這里就直接給代碼,方便看,注意引腳拉高還是拉低。

文件

程序
AD9959.c
點(diǎn)擊查看代碼
#include "AD9959.h"
#if USE_AD9959
#define system_clk 500000000 //AD9959工作頻率設(shè)定為500MHz
#define uchar unsigned char
#define uint unsigned int
//----------------------------------------------------------------------------------------------//
// 板邊緣引腳: CubeMX引腳命名(移植嚴(yán)格遵守):
// PDN —— PA7 —— 推挽輸出:輸出低 - LOW - 超高速 —————————————— AD9959_PWR
// SD3 —— PC5 —— 推挽輸出:輸出低 - LOW - 超高速 —————————————— AD9959_SDIO3
// SD1 —— PH14 —— 推挽輸出:輸出低 - LOW - 超高速 —————————————— AD9959_SDIO1
// SCK —— PI2 —— 推挽輸出:輸出高 - HIGH - 超高速 控制位 ——————— AD9959_SCLK
// IU —— PI0 —— 推挽輸出:輸出高 - HIGH - 超高速 控制位 ——————— AD9959_IO_updata
// P2 —— PI4 —— 推挽輸出:輸出低 - LOW - 超高速 —————————————— AD9959_PS2
// P0 —— PI6 —— 推挽輸出:輸出低 - LOW - 超高速 —————————————— AD9959_PS0
// 板靠?jī)?nèi)引腳:
// RST —— PC4 —— 推挽輸出:輸出高 - HIGH - 超高速 復(fù)位位 ——————— AD9959_Reset
// SD2 —— PH13 —— 推挽輸出:輸出低 - LOW - 超高速 —————————————— AD9959_SDIO2
// SD0 —— PH15 —— 推挽輸出:輸出高 - HIGH - 超高速 數(shù)據(jù)傳輸位 ——— AD9959_SDIO0
// CS —— PI1 —— 推挽輸出:輸出高 - HIGH - 超高速 控制位 ——————— AD9959_CS
// NC —— No Connect
// P3 —— PI5 —— 推挽輸出:輸出低 - LOW - 超高速 —————————————— AD9959_PS3
// P1 —— PI7 —— 推挽輸出:輸出低 - LOW - 超高速 —————————————— AD9959_PS1
//----------------------------------------------------------------------------------------------//
//子程序-----------------------------------------------------------
//-----------------------------------------------------------------
// void Delay(__IO uint32_t nCount)
//-----------------------------------------------------------------
//
// 函數(shù)功能: 粗略延時(shí)
// 入口參數(shù): 延時(shí)長(zhǎng)度
// 返回參數(shù): 無(wú)
// 注意事項(xiàng):
// -__IO 就是volatile, 加上這個(gè)后可以避免延遲函數(shù)被編譯器優(yōu)化掉
// 一個(gè)系統(tǒng)時(shí)鐘:1/72MHZ=13.89ns,經(jīng)過(guò)23個(gè)周期:319ns
/*
j=1000,i=513,測(cè)得以下延時(shí): (SYSCLK=72MHz)
時(shí)鐘個(gè)數(shù) 延時(shí) 誤差 實(shí)際
Delay(1): 22 305ns 639ns
Delay(2): 29 402ns 736ns
Delay(5): 50 694ns 1.028us
Delay(10): 85 1.1805us 1.514us
Delay(20): 155 2.1527us 2.486us
Delay(40): 295 4.0972us 4.4305us
Delay(100): 715 9.9305us 10.26us
*/
//-----------------------------------------------------------------
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);// 23個(gè)
}
void AD9959_Init(void) //初始化
{
CS_1;
SCLK_0;
IO_update_0;
// PS0_0;
// PS1_0;
// PS2_0;
// PS3_0;
SDIO0_0;
SDIO1_0;
SDIO2_0;
SDIO3_0;
Reset_0;
Delay(6);
Reset_1;
Delay(100);
Reset_0;
}
//設(shè)置頻率轉(zhuǎn)換字
void WrFrequencyTuningWorddata(double f,uchar *ChannelFrequencyTuningWorddata)
{
unsigned char z;
long int y;
double x;
x=4294967296.0/system_clk; //頻率控制字計(jì)算
f=f*x;
y=(long int)f; //強(qiáng)制轉(zhuǎn)換類(lèi)型
z=(uchar)(y>>24); //8位長(zhǎng)整型數(shù)據(jù)強(qiáng)制轉(zhuǎn)為8位字符型
ChannelFrequencyTuningWorddata[0]=z;
z=(uchar)(y>>16);
ChannelFrequencyTuningWorddata[1]=z;
z=(uchar)(y>>8);
ChannelFrequencyTuningWorddata[2]=z;
z=(uchar)(y>>0);
ChannelFrequencyTuningWorddata[3]=z;
}
// 數(shù)據(jù)更新,通道使能位不需要IO更新
void IO_update(void)
{
IO_update_0;
Delay(12);
IO_update_1;
Delay(24);
IO_update_0;
}
//通信
void WriteToAD9959ViaSpi(uchar RegisterAddress, uchar NumberofRegisters, uchar *RegisterData,uchar temp)
{
uchar ControlValue = 0;
uchar ValueToWrite = 0;
uchar RegisterIndex = 0;
uchar i = 0;
//是ControlValue為一個(gè)8位數(shù)據(jù)
ControlValue = RegisterAddress;
SCLK_0;
CS_0; //bring CS low
//寫(xiě)控制字
for(i=0; i<8; i++)
{
SCLK_0;
if(0x80 == (ControlValue & 0x80))
{
SDIO0_1; //Send one to SDIO0pin
}
else
{
SDIO0_0; //Send zero to SDIO0pin
}
SCLK_1;
ControlValue <<= 1; //Rotate data
}
SCLK_0;
//寫(xiě)數(shù)據(jù)
for (RegisterIndex=0; RegisterIndex<NumberofRegisters; RegisterIndex++)
{
ValueToWrite = RegisterData[RegisterIndex];
for (i=0; i<8; i++)
{
SCLK_0;
if(0x80 == (ValueToWrite & 0x80))
{
SDIO0_1; //Send one to SDIO0pin
}
else
{
SDIO0_0; //Send zero to SDIO0pin
}
SCLK_1;
ValueToWrite <<= 1; //Rotate data
}
SCLK_0;
}
if(temp==1)
{
IO_update();
}
CS_1; //bring CS high again
}
//設(shè)置相位轉(zhuǎn)換字
void WrPhaseOffsetTuningWorddata(double f,uchar *ChannelPhaseOffsetTuningWorddata)
{
unsigned char z;
long int y;
double x;
x=16384.0/360; //相位控制字計(jì)算
f=f*x;
y=(long int)f; //強(qiáng)制轉(zhuǎn)換類(lèi)型
z=(uchar)(y>>8); //8位長(zhǎng)整型數(shù)據(jù)強(qiáng)制轉(zhuǎn)為8位字符型
ChannelPhaseOffsetTuningWorddata[0]=z;
z=(uchar)(y>>0);
ChannelPhaseOffsetTuningWorddata[1]=z;
// ChannelPhaseOffsetTuningWorddata[2]=0x00;//下次修改時(shí)加上這兩句然后在修改數(shù)組的變化,掃相時(shí)出現(xiàn)不能掃360的情況可能與計(jì)算時(shí)數(shù)組分配
// ChannelPhaseOffsetTuningWorddata[3]=0x00;//錯(cuò)誤導(dǎo)致的
}
void WrAmplitudeTuningWorddata(double f,uchar *ChannelAmplitudeTuningWorddata) // 幅度掃描時(shí)設(shè)置上升和下降的幅度
//計(jì)算過(guò)程注意與計(jì)算頻率區(qū)別
{
unsigned char z;
unsigned long int y;
double x;
x=1024.0/1024; //幅度控制字計(jì)算
f=f*x;
y=(unsigned long int)f; //強(qiáng)制轉(zhuǎn)換類(lèi)型
z=(uchar)(y>>2); //8位長(zhǎng)整型數(shù)據(jù)強(qiáng)制轉(zhuǎn)為8位字符型
ChannelAmplitudeTuningWorddata[0]= z ;
z=(uchar)(y<<6); // 取低2位
ChannelAmplitudeTuningWorddata[1] = (z & 0xC0);
ChannelAmplitudeTuningWorddata[2] = 0x00;
ChannelAmplitudeTuningWorddata[3] = 0x00;
/*
z=(uchar)(y>>8);
ChannelAmplitudeTuningWorddata[2]=z;
z=(uchar)(y>>0);
ChannelAmplitudeTuningWorddata[3]=z;
*/
}
void WrAmplitudeTuningWorddata1(double f, uchar *ChannelAmplitudeTuningWorddata, uchar *ASRAmplituteWordata) // 設(shè)置輸出幅度的大小
//計(jì)算過(guò)程注意與計(jì)算頻率區(qū)別
{
unsigned char z;
unsigned long int y;
double x;
x=1024.0/1024; //幅度控制字計(jì)算
f=f*x*2.1;
y=(unsigned long int)f; //強(qiáng)制轉(zhuǎn)換類(lèi)型
ASRAmplituteWordata[0] = ChannelAmplitudeTuningWorddata[0] ;
// ASRAmplituteWordata[1] = ChannelAmplitudeTuningWorddata[1] ;
// ASRAmplituteWordata[2] = ChannelAmplitudeTuningWorddata[2] ;
z=(uchar)(y>>8); //8位長(zhǎng)整型數(shù)據(jù)強(qiáng)制轉(zhuǎn)為8位字符型
ChannelAmplitudeTuningWorddata[1] = (ChannelAmplitudeTuningWorddata[1] & 0xfc );
ASRAmplituteWordata[1] = (ChannelAmplitudeTuningWorddata[1] | z );
z=(uchar)(y<<0);
ASRAmplituteWordata[2] = z;
}
#endif // #if USE_AD9959
AD9959.h
點(diǎn)擊查看代碼
#ifndef _AD9959_H
#define _AD9959_H
#include "headers.h"
#if USE_AD9959
#define uchar unsigned char
#define uint unsigned int
//----------------------------------------------------------------------------
// 使用方式
////------------------------------------------------
//// AD9959
////------------------------------------------------
//delay_ms(50); /* 使 AD9959 先上電 */
//AD9959_Init(); /* AD9959 初始化 */
//AD9959_enablechannel0(); /* 使能通道0 */
//AD9959_Setwavefrequency(10000.0f); /* AD9959 輸出信號(hào):頻率 */
//AD9959_enablechannel1(); /* 使能通道1 */
//AD9959_Setwavefrequency(10000.0f); /* AD9959 輸出信號(hào):頻率 */
//AD9959_enablechannel2(); /* 使能通道2 */
//AD9959_Setwavefrequency(10000.0f); /* AD9959 輸出信號(hào):頻率 */
//AD9959_enablechannel3(); /* 使能通道3 */
//AD9959_Setwavefrequency(10000.0f); /* AD9959 輸出信號(hào):頻率 */
//----------------------------------------------------------------------------
//AD998 I/O控制總線
//端口C宏USE_AD9959定義
// 引腳操作宏
// CS 拉高 輸出高
#define CS_1 DL_GPIO_setPins(AD9959_AD9959_CS_PORT, AD9959_AD9959_CS_PIN)
#define CS_0 DL_GPIO_clearPins(AD9959_AD9959_CS_PORT, AD9959_AD9959_CS_PIN)
// SCK 拉高 輸出高
#define SCLK_1 DL_GPIO_setPins(AD9959_AD9959_SCK_PORT, AD9959_AD9959_SCK_PIN)
#define SCLK_0 DL_GPIO_clearPins(AD9959_AD9959_SCK_PORT, AD9959_AD9959_SCK_PIN)
// SD0 拉高 輸出高
#define SDIO0_1 DL_GPIO_setPins(AD9959_AD9959_SD0_PORT, AD9959_AD9959_SD0_PIN)
#define SDIO0_0 DL_GPIO_clearPins(AD9959_AD9959_SD0_PORT, AD9959_AD9959_SD0_PIN)
// IU 拉高 輸出高
#define IO_update_1 DL_GPIO_setPins(AD9959_AD9959_IU_PORT, AD9959_AD9959_IU_PIN)
#define IO_update_0 DL_GPIO_clearPins(AD9959_AD9959_IU_PORT, AD9959_AD9959_IU_PIN)
// RST 拉高 輸出高
#define Reset_1 DL_GPIO_setPins(AD9959_AD9959_RST_PORT, AD9959_AD9959_RST_PIN)
#define Reset_0 DL_GPIO_clearPins(AD9959_AD9959_RST_PORT, AD9959_AD9959_RST_PIN)
// PDN 拉低 輸出低
#define PWR_1 DL_GPIO_setPins(AD9959_AD9959_PDN_PORT, AD9959_AD9959_PDN_PIN)
#define PWR_0 DL_GPIO_clearPins(AD9959_AD9959_PDN_PORT, AD9959_AD9959_PDN_PIN)
// SD1 拉低 輸出低
#define SDIO1_1 DL_GPIO_setPins(AD9959_AD9959_SD1_PORT, AD9959_AD9959_SD1_PIN)
#define SDIO1_0 DL_GPIO_clearPins(AD9959_AD9959_SD1_PORT, AD9959_AD9959_SD1_PIN)
// SD2 拉低 輸出低
#define SDIO2_1 DL_GPIO_setPins(AD9959_AD9959_SD2_PORT, AD9959_AD9959_SD2_PIN)
#define SDIO2_0 DL_GPIO_clearPins(AD9959_AD9959_SD2_PORT, AD9959_AD9959_SD2_PIN)
// SD3 拉低 輸出低
#define SDIO3_1 DL_GPIO_setPins(AD9959_AD9959_SD3_PORT, AD9959_AD9959_SD3_PIN)
#define SDIO3_0 DL_GPIO_clearPins(AD9959_AD9959_SD3_PORT, AD9959_AD9959_SD3_PIN)
// #define PS0_1 (HAL_GPIO_WritePin(AD9959_PS0_GPIO_Port, AD9959_PS0_Pin, GPIO_PIN_SET))
// #define PS0_0 (HAL_GPIO_WritePin(AD9959_PS0_GPIO_Port, AD9959_PS0_Pin, GPIO_PIN_RESET))
// #define PS1_1 (HAL_GPIO_WritePin(AD9959_PS1_GPIO_Port, AD9959_PS1_Pin, GPIO_PIN_SET))
// #define PS1_0 (HAL_GPIO_WritePin(AD9959_PS1_GPIO_Port, AD9959_PS1_Pin, GPIO_PIN_RESET))
// #define PS2_1 (HAL_GPIO_WritePin(AD9959_PS2_GPIO_Port, AD9959_PS2_Pin, GPIO_PIN_SET))
// #define PS2_0 (HAL_GPIO_WritePin(AD9959_PS2_GPIO_Port, AD9959_PS2_Pin, GPIO_PIN_RESET))
// #define PS3_1 (HAL_GPIO_WritePin(AD9959_PS3_GPIO_Port, AD9959_PS3_Pin, GPIO_PIN_SET))
// #define PS3_0 (HAL_GPIO_WritePin(AD9959_PS3_GPIO_Port, AD9959_PS3_Pin, GPIO_PIN_RESET))
//-----------------------------------------------------------------
// 外部函數(shù)聲明
//-----------------------------------------------------------------
extern void AD9959_Init(void); //復(fù)位
extern void WrFrequencyTuningWorddata(double f,uchar *ChannelFrequencyTuningWorddata);
extern void IO_update(void) ;
extern void WriteToAD9959ViaSpi(uchar RegisterAddress, uchar NumberofRegisters, uchar *RegisterData,uchar temp) ;
extern void WrPhaseOffsetTuningWorddata(double f,uchar *ChannelPhaseOffsetTuningWorddata);
extern void WrAmplitudeTuningWorddata(double f,uchar *ChannelAmplitudeTuningWorddata);//計(jì)算過(guò)程注意與計(jì)算頻率區(qū)別
extern void WrAmplitudeTuningWorddata1(double f,uchar *ChannelAmplitudeTuningWorddata,uchar *ASRAmplituteWordata);
#endif // #if USE_AD9959
#endif // #ifndef _AD9959_H
AD9959_Outset.c
點(diǎn)擊查看代碼
#include "AD9959_Outset.h"
#include "AD9959.h"
#if USE_AD9959
//--------通道寄存器地址宏定義---------------//
#define CSR 0x00 //通道選擇寄存器
#define FR1 0x01 //功能寄存器1
#define FR2 0x02 //功能寄存器2
#define CFR 0x03 //通道功能寄存器
#define CFTW0 0x04 //32位通道頻率轉(zhuǎn)換字寄存器
#define CPOW0 0x05 //14位通道相位轉(zhuǎn)換字寄存器
#define ACR 0x06 //幅度控制寄存器
#define SRR 0x07 //線性掃描定時(shí)器
#define RDW 0x08 //線性向上掃描定時(shí)器
#define FDW 0x09 //線性向下掃描定時(shí)器
#define uchar unsigned char
#define uint unsigned int
void AD9959_enablechannelall(void) //全部通道使能
{
uchar ChannelSelectRegisterdata0[1] = {0x10}; // 通道選擇寄存器,3線傳輸,數(shù)據(jù)高位優(yōu)先
uchar ChannelSelectRegisterdata1[1] = {0x20}; // 通道選擇寄存器,3線傳輸,數(shù)據(jù)高位優(yōu)先
uchar ChannelSelectRegisterdata2[1] = {0x40}; // 通道選擇寄存器,3線傳輸,數(shù)據(jù)高位優(yōu)先
uchar ChannelSelectRegisterdata3[1] = {0x80}; // 通道選擇寄存器,3線傳輸,數(shù)據(jù)高位優(yōu)先
WriteToAD9959ViaSpi(CSR,1,ChannelSelectRegisterdata0,0);
WriteToAD9959ViaSpi(CSR,1,ChannelSelectRegisterdata1,0);
WriteToAD9959ViaSpi(CSR,1,ChannelSelectRegisterdata2,0);
WriteToAD9959ViaSpi(CSR,1,ChannelSelectRegisterdata3,0);
}
void AD9959_enablechannel0(void) //通道0使能
{
uchar ChannelSelectRegisterdata0[1] = {0x10}; // 通道選擇寄存器,3線傳輸,數(shù)據(jù)高位優(yōu)先
WriteToAD9959ViaSpi(CSR,1,ChannelSelectRegisterdata0,0);
}
void AD9959_enablechannel1(void) //通道1使能
{
uchar ChannelSelectRegisterdata1[1] = {0x20}; // 通道選擇寄存器,3線傳輸,數(shù)據(jù)高位優(yōu)先
// SDIO0 數(shù)據(jù)輸入 and SDIO2 數(shù)據(jù)輸出
WriteToAD9959ViaSpi(CSR,1,ChannelSelectRegisterdata1,0);
}
void AD9959_enablechannel2(void) //通道1使能
{
uchar ChannelSelectRegisterdata2[1] = {0x40}; // 通道選擇寄存器,3線傳輸,數(shù)據(jù)高位優(yōu)先
// SDIO0 數(shù)據(jù)輸入 and SDIO2 數(shù)據(jù)輸出
WriteToAD9959ViaSpi(CSR,1,ChannelSelectRegisterdata2,0);
}
void AD9959_enablechannel3(void) //通道1使能
{
uchar ChannelSelectRegisterdata3[1] = {0x80}; // 通道選擇寄存器,3線傳輸,數(shù)據(jù)高位優(yōu)先
// SDIO0 數(shù)據(jù)輸入 and SDIO2 數(shù)據(jù)輸出
WriteToAD9959ViaSpi(CSR,1,ChannelSelectRegisterdata3,0);
}
void AD9959_Setwavefrequency (double f) //輸出單個(gè)頻率
{
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFunctionRegisterdata[3] = {0x00,0x23,0x35}; //單頻模式時(shí)選擇,啟用正弦功能(sine)
uchar FunctionRegister1data[3] = {0xD0,0x00,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,目的是為了實(shí)現(xiàn)正余弦功能
//(沒(méi)有要求時(shí)可以不設(shè)置該寄存器同樣也可以正常輸出)
//寄存器8、9位控制輸出幅度,分四個(gè)檔位
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord1data,1); //寫(xiě)入頻率控制字
}
void AD9959_Setwavephase(double f,int p) //輸出相位程序可調(diào)
{
uchar ChannelPhaseOffsetTuningWorddata[2];
uchar ChannelFrequencyTuningWorddata[4];
uchar ChannelFunctionRegisterdata[3] = {0x00,0x23,0x35}; //單頻模式時(shí)選擇,啟用正弦功能(sine)
uchar FunctionRegister1data[3] = {0xD0,0x00,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,目的是為了實(shí)現(xiàn)正余弦功能
WrPhaseOffsetTuningWorddata(p,ChannelPhaseOffsetTuningWorddata); //設(shè)置相位轉(zhuǎn)換字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWorddata,0); //寫(xiě)入相位控制字
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWorddata); //設(shè)置頻率轉(zhuǎn)換字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWorddata,1); //寫(xiě)入頻率控制字
}
void AD9959_Setwaveamplitute(double f,int a) //輸出幅度可自定義調(diào)節(jié)
{
uchar ChannelFrequencyTuningWorddata[4];
uchar ASRAmplituteWordata[3];
uchar AmplitudeControldata[3] = {0xff,0x17,0xff}; //手動(dòng)控制輸出幅度
uchar ChannelFunctionRegisterdata[3] = {0x00,0x23,0x35}; //單頻模式時(shí)選擇,啟用正弦功能(sine)
uchar FunctionRegister1data[3] = {0xD0,0x00,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,目的是為了實(shí)現(xiàn)正余弦功能
WrAmplitudeTuningWorddata1(a,AmplitudeControldata,ASRAmplituteWordata) ;
WriteToAD9959ViaSpi(ACR,3,ASRAmplituteWordata,0); //設(shè)置輸出幅度控制模式
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWorddata); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWorddata,1); //寫(xiě)入頻率轉(zhuǎn)換字
}
//設(shè)置二階調(diào)制
//////////////////////////////////////////////////////
void AD9959_SetFremodulation2(double f1,double f2)
{
// u8 a2 = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0x00,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
//設(shè)置起始頻率S0(0x0A)
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
//設(shè)置終止頻率E0(0x04)
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord1data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation2(double f,int p1,int p2) //p1起始相位,p2終止相位
{
// uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord0data[2];
uchar ChannelPhaseOffsetTuningWord1data[2];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x34}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //二級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0x00,0x00};
// uchar FunctionRegister1data[3] = {0xD0,0x54,0x00}; //二級(jí)調(diào)制時(shí)需進(jìn)行幅度RU/RD時(shí)選擇
//PO進(jìn)行調(diào)頻,P2進(jìn)行幅度RU/RD
// uchar AmplitudeControldata[3] = {0xff,0x1f,0xff}; //開(kāi)啟RU/RD
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
// WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //需輸出幅度RU/RD模式才選擇,且要修改功能寄存器FR1
//設(shè)置地址0x05(CPOW0) 的相位
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,0); //寫(xiě)入相位控制字
//設(shè)置地址0x0a(CW1) 的相位
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,0); //寫(xiě)入相位控制字
// f=2000000; //設(shè)置輸出頻率
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord1data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM2(double f)
{
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelAmplitudeTuningWorddata[4]={0x1f,0x30,0x00,0x00}; //72mV
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar AmplitudeControldata[3]={0x00,0x03,0xff}; //500mV
uchar FunctionRegister1data[3]={0xD0,0x00,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWorddata,0); // 設(shè)置幅度大小(S2)
//設(shè)置輸出頻率大小
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////
//四階調(diào)制 CH0/1
//////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation4(double f1,double f2,double f3,double f4)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0x01,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation4(double f,int p1,int p2,int p3,int p4)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //四級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0x01,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM4(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0x8f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0x01,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 四階調(diào)制 CH2/3
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation42(double f1,double f2,double f3,double f4)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0x51,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation42(double f,int p1,int p2,int p3,int p4)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //四級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0x51,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM42(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0x8f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0x51,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 八階調(diào)制 CH0
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation80(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFrequencyTuningWord4data[4];
uchar ChannelFrequencyTuningWord5data[4];
uchar ChannelFrequencyTuningWord6data[4];
uchar ChannelFrequencyTuningWord7data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0xc2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f5,ChannelFrequencyTuningWord4data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0D,4,ChannelFrequencyTuningWord4data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f6,ChannelFrequencyTuningWord5data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0E,4,ChannelFrequencyTuningWord5data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f7,ChannelFrequencyTuningWord6data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0F,4,ChannelFrequencyTuningWord6data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f8,ChannelFrequencyTuningWord7data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x10,4,ChannelFrequencyTuningWord7data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation80(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelPhaseOffsetTuningWord4data[4];
uchar ChannelPhaseOffsetTuningWord5data[4];
uchar ChannelPhaseOffsetTuningWord6data[4];
uchar ChannelPhaseOffsetTuningWord7data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //八級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0xc2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p5,ChannelPhaseOffsetTuningWord4data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0d,4,ChannelPhaseOffsetTuningWord4data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p6,ChannelPhaseOffsetTuningWord5data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0e,4,ChannelPhaseOffsetTuningWord5data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p7,ChannelPhaseOffsetTuningWord6data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0f,4,ChannelPhaseOffsetTuningWord6data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p8,ChannelPhaseOffsetTuningWord7data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x10,4,ChannelPhaseOffsetTuningWord7data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM80(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0xbf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0x9f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord4data[4]={0x7f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord5data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord6data[4]={0x3f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord7data[4]={0x1f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0xc2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WriteToAD9959ViaSpi(0x0d,4,ChannelAmplitudeTuningWord4data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0e,4,ChannelAmplitudeTuningWord5data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0f,4,ChannelAmplitudeTuningWord6data,0);
WriteToAD9959ViaSpi(0x10,4,ChannelAmplitudeTuningWord7data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 八階調(diào)制 CH1
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation81(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFrequencyTuningWord4data[4];
uchar ChannelFrequencyTuningWord5data[4];
uchar ChannelFrequencyTuningWord6data[4];
uchar ChannelFrequencyTuningWord7data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0xd2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f5,ChannelFrequencyTuningWord4data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0D,4,ChannelFrequencyTuningWord4data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f6,ChannelFrequencyTuningWord5data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0E,4,ChannelFrequencyTuningWord5data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f7,ChannelFrequencyTuningWord6data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0F,4,ChannelFrequencyTuningWord6data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f8,ChannelFrequencyTuningWord7data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x10,4,ChannelFrequencyTuningWord7data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation81(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelPhaseOffsetTuningWord4data[4];
uchar ChannelPhaseOffsetTuningWord5data[4];
uchar ChannelPhaseOffsetTuningWord6data[4];
uchar ChannelPhaseOffsetTuningWord7data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //八級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0xd2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p5,ChannelPhaseOffsetTuningWord4data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0d,4,ChannelPhaseOffsetTuningWord4data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p6,ChannelPhaseOffsetTuningWord5data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0e,4,ChannelPhaseOffsetTuningWord5data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p7,ChannelPhaseOffsetTuningWord6data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0f,4,ChannelPhaseOffsetTuningWord6data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p8,ChannelPhaseOffsetTuningWord7data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x10,4,ChannelPhaseOffsetTuningWord7data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM81(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0xbf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0x9f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord4data[4]={0x7f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord5data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord6data[4]={0x3f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord7data[4]={0x1f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0xd2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WriteToAD9959ViaSpi(0x0d,4,ChannelAmplitudeTuningWord4data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0e,4,ChannelAmplitudeTuningWord5data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0f,4,ChannelAmplitudeTuningWord6data,0);
WriteToAD9959ViaSpi(0x10,4,ChannelAmplitudeTuningWord7data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 八階調(diào)制 CH2
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation82(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFrequencyTuningWord4data[4];
uchar ChannelFrequencyTuningWord5data[4];
uchar ChannelFrequencyTuningWord6data[4];
uchar ChannelFrequencyTuningWord7data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0xe2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f5,ChannelFrequencyTuningWord4data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0D,4,ChannelFrequencyTuningWord4data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f6,ChannelFrequencyTuningWord5data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0E,4,ChannelFrequencyTuningWord5data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f7,ChannelFrequencyTuningWord6data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0F,4,ChannelFrequencyTuningWord6data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f8,ChannelFrequencyTuningWord7data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x10,4,ChannelFrequencyTuningWord7data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation82(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelPhaseOffsetTuningWord4data[4];
uchar ChannelPhaseOffsetTuningWord5data[4];
uchar ChannelPhaseOffsetTuningWord6data[4];
uchar ChannelPhaseOffsetTuningWord7data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //八級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0xe2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p5,ChannelPhaseOffsetTuningWord4data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0d,4,ChannelPhaseOffsetTuningWord4data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p6,ChannelPhaseOffsetTuningWord5data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0e,4,ChannelPhaseOffsetTuningWord5data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p7,ChannelPhaseOffsetTuningWord6data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0f,4,ChannelPhaseOffsetTuningWord6data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p8,ChannelPhaseOffsetTuningWord7data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x10,4,ChannelPhaseOffsetTuningWord7data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM82(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0xbf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0x9f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord4data[4]={0x7f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord5data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord6data[4]={0x3f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord7data[4]={0x1f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0xe2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WriteToAD9959ViaSpi(0x0d,4,ChannelAmplitudeTuningWord4data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0e,4,ChannelAmplitudeTuningWord5data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0f,4,ChannelAmplitudeTuningWord6data,0);
WriteToAD9959ViaSpi(0x10,4,ChannelAmplitudeTuningWord7data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 八階調(diào)制 CH3
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation83(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFrequencyTuningWord4data[4];
uchar ChannelFrequencyTuningWord5data[4];
uchar ChannelFrequencyTuningWord6data[4];
uchar ChannelFrequencyTuningWord7data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0xf2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f5,ChannelFrequencyTuningWord4data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0D,4,ChannelFrequencyTuningWord4data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f6,ChannelFrequencyTuningWord5data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0E,4,ChannelFrequencyTuningWord5data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f7,ChannelFrequencyTuningWord6data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0F,4,ChannelFrequencyTuningWord6data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f8,ChannelFrequencyTuningWord7data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x10,4,ChannelFrequencyTuningWord7data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation83(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelPhaseOffsetTuningWord4data[4];
uchar ChannelPhaseOffsetTuningWord5data[4];
uchar ChannelPhaseOffsetTuningWord6data[4];
uchar ChannelPhaseOffsetTuningWord7data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //八級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0xf2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p5,ChannelPhaseOffsetTuningWord4data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0d,4,ChannelPhaseOffsetTuningWord4data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p6,ChannelPhaseOffsetTuningWord5data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0e,4,ChannelPhaseOffsetTuningWord5data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p7,ChannelPhaseOffsetTuningWord6data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0f,4,ChannelPhaseOffsetTuningWord6data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p8,ChannelPhaseOffsetTuningWord7data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x10,4,ChannelPhaseOffsetTuningWord7data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM83(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0xbf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0x9f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord4data[4]={0x7f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord5data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord6data[4]={0x3f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord7data[4]={0x1f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0xf2,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WriteToAD9959ViaSpi(0x0d,4,ChannelAmplitudeTuningWord4data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0e,4,ChannelAmplitudeTuningWord5data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0f,4,ChannelAmplitudeTuningWord6data,0);
WriteToAD9959ViaSpi(0x10,4,ChannelAmplitudeTuningWord7data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 十六階調(diào)制 CH0
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation160(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8,double f9,double f10,double f11,double f12,double f13,double f14,double f15,double f16)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFrequencyTuningWord4data[4];
uchar ChannelFrequencyTuningWord5data[4];
uchar ChannelFrequencyTuningWord6data[4];
uchar ChannelFrequencyTuningWord7data[4];
uchar ChannelFrequencyTuningWord8data[4];
uchar ChannelFrequencyTuningWord9data[4];
uchar ChannelFrequencyTuningWord10data[4];
uchar ChannelFrequencyTuningWord11data[4];
uchar ChannelFrequencyTuningWord12data[4];
uchar ChannelFrequencyTuningWord13data[4];
uchar ChannelFrequencyTuningWord14data[4];
uchar ChannelFrequencyTuningWord15data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0xc3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f5,ChannelFrequencyTuningWord4data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0D,4,ChannelFrequencyTuningWord4data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f6,ChannelFrequencyTuningWord5data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0E,4,ChannelFrequencyTuningWord5data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f7,ChannelFrequencyTuningWord6data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0F,4,ChannelFrequencyTuningWord6data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f8,ChannelFrequencyTuningWord7data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x10,4,ChannelFrequencyTuningWord7data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f9,ChannelFrequencyTuningWord8data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x11,4,ChannelFrequencyTuningWord8data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f10,ChannelFrequencyTuningWord9data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x12,4,ChannelFrequencyTuningWord9data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f11,ChannelFrequencyTuningWord10data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x13,4,ChannelFrequencyTuningWord10data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f12,ChannelFrequencyTuningWord11data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x14,4,ChannelFrequencyTuningWord11data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f13,ChannelFrequencyTuningWord12data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x15,4,ChannelFrequencyTuningWord12data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f14,ChannelFrequencyTuningWord13data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x16,4,ChannelFrequencyTuningWord13data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f15,ChannelFrequencyTuningWord14data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x017,4,ChannelFrequencyTuningWord14data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f16,ChannelFrequencyTuningWord15data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x18,4,ChannelFrequencyTuningWord15data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation160(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12,int p13,int p14,int p15,int p16)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelPhaseOffsetTuningWord4data[4];
uchar ChannelPhaseOffsetTuningWord5data[4];
uchar ChannelPhaseOffsetTuningWord6data[4];
uchar ChannelPhaseOffsetTuningWord7data[4];
uchar ChannelPhaseOffsetTuningWord8data[4];
uchar ChannelPhaseOffsetTuningWord9data[4];
uchar ChannelPhaseOffsetTuningWord10data[4];
uchar ChannelPhaseOffsetTuningWord11data[4];
uchar ChannelPhaseOffsetTuningWord12data[4];
uchar ChannelPhaseOffsetTuningWord13data[4];
uchar ChannelPhaseOffsetTuningWord14data[4];
uchar ChannelPhaseOffsetTuningWord15data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //十六級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0xc3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p5,ChannelPhaseOffsetTuningWord4data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0d,4,ChannelPhaseOffsetTuningWord4data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p6,ChannelPhaseOffsetTuningWord5data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0e,4,ChannelPhaseOffsetTuningWord5data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p7,ChannelPhaseOffsetTuningWord6data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0f,4,ChannelPhaseOffsetTuningWord6data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p8,ChannelPhaseOffsetTuningWord7data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x10,4,ChannelPhaseOffsetTuningWord7data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p9,ChannelPhaseOffsetTuningWord8data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x11,4,ChannelPhaseOffsetTuningWord8data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p10,ChannelPhaseOffsetTuningWord9data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x12,4,ChannelPhaseOffsetTuningWord9data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p11,ChannelPhaseOffsetTuningWord10data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x13,4,ChannelPhaseOffsetTuningWord10data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p12,ChannelPhaseOffsetTuningWord11data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x14,4,ChannelPhaseOffsetTuningWord11data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p13,ChannelPhaseOffsetTuningWord12data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x15,4,ChannelPhaseOffsetTuningWord12data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p14,ChannelPhaseOffsetTuningWord13data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x16,4,ChannelPhaseOffsetTuningWord13data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p15,ChannelPhaseOffsetTuningWord14data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x17,4,ChannelPhaseOffsetTuningWord14data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p16,ChannelPhaseOffsetTuningWord15data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x18,4,ChannelPhaseOffsetTuningWord15data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM160(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xef,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0xcf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord4data[4]={0xbf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord5data[4]={0xaf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord6data[4]={0x9f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord7data[4]={0x8f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord8data[4]={0x7f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord9data[4]={0x6f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord10data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord11data[4]={0x4f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord12data[4]={0x3f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord13data[4]={0x2f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord14data[4]={0x1f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord15data[4]={0x0f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0xc3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WriteToAD9959ViaSpi(0x0d,4,ChannelAmplitudeTuningWord4data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0e,4,ChannelAmplitudeTuningWord5data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0f,4,ChannelAmplitudeTuningWord6data,0);
WriteToAD9959ViaSpi(0x10,4,ChannelAmplitudeTuningWord7data,0);
WriteToAD9959ViaSpi(0x11,4,ChannelAmplitudeTuningWord8data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x12,4,ChannelAmplitudeTuningWord9data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x13,4,ChannelAmplitudeTuningWord10data,0);
WriteToAD9959ViaSpi(0x14,4,ChannelAmplitudeTuningWord11data,0);
WriteToAD9959ViaSpi(0x15,4,ChannelAmplitudeTuningWord12data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x16,4,ChannelAmplitudeTuningWord13data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x17,4,ChannelAmplitudeTuningWord14data,0);
WriteToAD9959ViaSpi(0x18,4,ChannelAmplitudeTuningWord15data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 十六階調(diào)制 CH1
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation161(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8,double f9,double f10,double f11,double f12,double f13,double f14,double f15,double f16)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFrequencyTuningWord4data[4];
uchar ChannelFrequencyTuningWord5data[4];
uchar ChannelFrequencyTuningWord6data[4];
uchar ChannelFrequencyTuningWord7data[4];
uchar ChannelFrequencyTuningWord8data[4];
uchar ChannelFrequencyTuningWord9data[4];
uchar ChannelFrequencyTuningWord10data[4];
uchar ChannelFrequencyTuningWord11data[4];
uchar ChannelFrequencyTuningWord12data[4];
uchar ChannelFrequencyTuningWord13data[4];
uchar ChannelFrequencyTuningWord14data[4];
uchar ChannelFrequencyTuningWord15data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0xd3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f5,ChannelFrequencyTuningWord4data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0D,4,ChannelFrequencyTuningWord4data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f6,ChannelFrequencyTuningWord5data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0E,4,ChannelFrequencyTuningWord5data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f7,ChannelFrequencyTuningWord6data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0F,4,ChannelFrequencyTuningWord6data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f8,ChannelFrequencyTuningWord7data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x10,4,ChannelFrequencyTuningWord7data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f9,ChannelFrequencyTuningWord8data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x11,4,ChannelFrequencyTuningWord8data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f10,ChannelFrequencyTuningWord9data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x12,4,ChannelFrequencyTuningWord9data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f11,ChannelFrequencyTuningWord10data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x13,4,ChannelFrequencyTuningWord10data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f12,ChannelFrequencyTuningWord11data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x14,4,ChannelFrequencyTuningWord11data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f13,ChannelFrequencyTuningWord12data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x15,4,ChannelFrequencyTuningWord12data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f14,ChannelFrequencyTuningWord13data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x16,4,ChannelFrequencyTuningWord13data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f15,ChannelFrequencyTuningWord14data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x017,4,ChannelFrequencyTuningWord14data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f16,ChannelFrequencyTuningWord15data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x18,4,ChannelFrequencyTuningWord15data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation161(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12,int p13,int p14,int p15,int p16)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelPhaseOffsetTuningWord4data[4];
uchar ChannelPhaseOffsetTuningWord5data[4];
uchar ChannelPhaseOffsetTuningWord6data[4];
uchar ChannelPhaseOffsetTuningWord7data[4];
uchar ChannelPhaseOffsetTuningWord8data[4];
uchar ChannelPhaseOffsetTuningWord9data[4];
uchar ChannelPhaseOffsetTuningWord10data[4];
uchar ChannelPhaseOffsetTuningWord11data[4];
uchar ChannelPhaseOffsetTuningWord12data[4];
uchar ChannelPhaseOffsetTuningWord13data[4];
uchar ChannelPhaseOffsetTuningWord14data[4];
uchar ChannelPhaseOffsetTuningWord15data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //十六級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0xd3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p5,ChannelPhaseOffsetTuningWord4data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0d,4,ChannelPhaseOffsetTuningWord4data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p6,ChannelPhaseOffsetTuningWord5data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0e,4,ChannelPhaseOffsetTuningWord5data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p7,ChannelPhaseOffsetTuningWord6data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0f,4,ChannelPhaseOffsetTuningWord6data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p8,ChannelPhaseOffsetTuningWord7data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x10,4,ChannelPhaseOffsetTuningWord7data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p9,ChannelPhaseOffsetTuningWord8data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x11,4,ChannelPhaseOffsetTuningWord8data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p10,ChannelPhaseOffsetTuningWord9data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x12,4,ChannelPhaseOffsetTuningWord9data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p11,ChannelPhaseOffsetTuningWord10data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x13,4,ChannelPhaseOffsetTuningWord10data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p12,ChannelPhaseOffsetTuningWord11data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x14,4,ChannelPhaseOffsetTuningWord11data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p13,ChannelPhaseOffsetTuningWord12data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x15,4,ChannelPhaseOffsetTuningWord12data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p14,ChannelPhaseOffsetTuningWord13data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x16,4,ChannelPhaseOffsetTuningWord13data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p15,ChannelPhaseOffsetTuningWord14data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x17,4,ChannelPhaseOffsetTuningWord14data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p16,ChannelPhaseOffsetTuningWord15data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x18,4,ChannelPhaseOffsetTuningWord15data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM161(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xef,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0xcf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord4data[4]={0xbf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord5data[4]={0xaf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord6data[4]={0x9f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord7data[4]={0x8f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord8data[4]={0x7f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord9data[4]={0x6f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord10data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord11data[4]={0x4f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord12data[4]={0x3f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord13data[4]={0x2f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord14data[4]={0x1f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord15data[4]={0x0f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0xd3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WriteToAD9959ViaSpi(0x0d,4,ChannelAmplitudeTuningWord4data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0e,4,ChannelAmplitudeTuningWord5data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0f,4,ChannelAmplitudeTuningWord6data,0);
WriteToAD9959ViaSpi(0x10,4,ChannelAmplitudeTuningWord7data,0);
WriteToAD9959ViaSpi(0x11,4,ChannelAmplitudeTuningWord8data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x12,4,ChannelAmplitudeTuningWord9data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x13,4,ChannelAmplitudeTuningWord10data,0);
WriteToAD9959ViaSpi(0x14,4,ChannelAmplitudeTuningWord11data,0);
WriteToAD9959ViaSpi(0x15,4,ChannelAmplitudeTuningWord12data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x16,4,ChannelAmplitudeTuningWord13data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x17,4,ChannelAmplitudeTuningWord14data,0);
WriteToAD9959ViaSpi(0x18,4,ChannelAmplitudeTuningWord15data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 十六階調(diào)制 CH2
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation162(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8,double f9,double f10,double f11,double f12,double f13,double f14,double f15,double f16)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFrequencyTuningWord4data[4];
uchar ChannelFrequencyTuningWord5data[4];
uchar ChannelFrequencyTuningWord6data[4];
uchar ChannelFrequencyTuningWord7data[4];
uchar ChannelFrequencyTuningWord8data[4];
uchar ChannelFrequencyTuningWord9data[4];
uchar ChannelFrequencyTuningWord10data[4];
uchar ChannelFrequencyTuningWord11data[4];
uchar ChannelFrequencyTuningWord12data[4];
uchar ChannelFrequencyTuningWord13data[4];
uchar ChannelFrequencyTuningWord14data[4];
uchar ChannelFrequencyTuningWord15data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0xe3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f5,ChannelFrequencyTuningWord4data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0D,4,ChannelFrequencyTuningWord4data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f6,ChannelFrequencyTuningWord5data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0E,4,ChannelFrequencyTuningWord5data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f7,ChannelFrequencyTuningWord6data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0F,4,ChannelFrequencyTuningWord6data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f8,ChannelFrequencyTuningWord7data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x10,4,ChannelFrequencyTuningWord7data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f9,ChannelFrequencyTuningWord8data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x11,4,ChannelFrequencyTuningWord8data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f10,ChannelFrequencyTuningWord9data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x12,4,ChannelFrequencyTuningWord9data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f11,ChannelFrequencyTuningWord10data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x13,4,ChannelFrequencyTuningWord10data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f12,ChannelFrequencyTuningWord11data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x14,4,ChannelFrequencyTuningWord11data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f13,ChannelFrequencyTuningWord12data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x15,4,ChannelFrequencyTuningWord12data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f14,ChannelFrequencyTuningWord13data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x16,4,ChannelFrequencyTuningWord13data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f15,ChannelFrequencyTuningWord14data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x017,4,ChannelFrequencyTuningWord14data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f16,ChannelFrequencyTuningWord15data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x18,4,ChannelFrequencyTuningWord15data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation162(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12,int p13,int p14,int p15,int p16)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelPhaseOffsetTuningWord4data[4];
uchar ChannelPhaseOffsetTuningWord5data[4];
uchar ChannelPhaseOffsetTuningWord6data[4];
uchar ChannelPhaseOffsetTuningWord7data[4];
uchar ChannelPhaseOffsetTuningWord8data[4];
uchar ChannelPhaseOffsetTuningWord9data[4];
uchar ChannelPhaseOffsetTuningWord10data[4];
uchar ChannelPhaseOffsetTuningWord11data[4];
uchar ChannelPhaseOffsetTuningWord12data[4];
uchar ChannelPhaseOffsetTuningWord13data[4];
uchar ChannelPhaseOffsetTuningWord14data[4];
uchar ChannelPhaseOffsetTuningWord15data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //十六級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0xe3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p5,ChannelPhaseOffsetTuningWord4data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0d,4,ChannelPhaseOffsetTuningWord4data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p6,ChannelPhaseOffsetTuningWord5data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0e,4,ChannelPhaseOffsetTuningWord5data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p7,ChannelPhaseOffsetTuningWord6data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0f,4,ChannelPhaseOffsetTuningWord6data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p8,ChannelPhaseOffsetTuningWord7data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x10,4,ChannelPhaseOffsetTuningWord7data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p9,ChannelPhaseOffsetTuningWord8data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x11,4,ChannelPhaseOffsetTuningWord8data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p10,ChannelPhaseOffsetTuningWord9data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x12,4,ChannelPhaseOffsetTuningWord9data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p11,ChannelPhaseOffsetTuningWord10data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x13,4,ChannelPhaseOffsetTuningWord10data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p12,ChannelPhaseOffsetTuningWord11data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x14,4,ChannelPhaseOffsetTuningWord11data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p13,ChannelPhaseOffsetTuningWord12data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x15,4,ChannelPhaseOffsetTuningWord12data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p14,ChannelPhaseOffsetTuningWord13data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x16,4,ChannelPhaseOffsetTuningWord13data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p15,ChannelPhaseOffsetTuningWord14data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x17,4,ChannelPhaseOffsetTuningWord14data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p16,ChannelPhaseOffsetTuningWord15data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x18,4,ChannelPhaseOffsetTuningWord15data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM162(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xef,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0xcf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord4data[4]={0xbf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord5data[4]={0xaf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord6data[4]={0x9f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord7data[4]={0x8f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord8data[4]={0x7f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord9data[4]={0x6f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord10data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord11data[4]={0x4f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord12data[4]={0x3f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord13data[4]={0x2f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord14data[4]={0x1f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord15data[4]={0x0f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0xe3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WriteToAD9959ViaSpi(0x0d,4,ChannelAmplitudeTuningWord4data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0e,4,ChannelAmplitudeTuningWord5data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0f,4,ChannelAmplitudeTuningWord6data,0);
WriteToAD9959ViaSpi(0x10,4,ChannelAmplitudeTuningWord7data,0);
WriteToAD9959ViaSpi(0x11,4,ChannelAmplitudeTuningWord8data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x12,4,ChannelAmplitudeTuningWord9data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x13,4,ChannelAmplitudeTuningWord10data,0);
WriteToAD9959ViaSpi(0x14,4,ChannelAmplitudeTuningWord11data,0);
WriteToAD9959ViaSpi(0x15,4,ChannelAmplitudeTuningWord12data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x16,4,ChannelAmplitudeTuningWord13data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x17,4,ChannelAmplitudeTuningWord14data,0);
WriteToAD9959ViaSpi(0x18,4,ChannelAmplitudeTuningWord15data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
// 十六階調(diào)制 CH3
/////////////////////////////////////////////////////////////////////////
void AD9959_SetFremodulation163(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8,double f9,double f10,double f11,double f12,double f13,double f14,double f15,double f16)
{
// u8 a = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelFrequencyTuningWord1data[4];
uchar ChannelFrequencyTuningWord2data[4];
uchar ChannelFrequencyTuningWord3data[4];
uchar ChannelFrequencyTuningWord4data[4];
uchar ChannelFrequencyTuningWord5data[4];
uchar ChannelFrequencyTuningWord6data[4];
uchar ChannelFrequencyTuningWord7data[4];
uchar ChannelFrequencyTuningWord8data[4];
uchar ChannelFrequencyTuningWord9data[4];
uchar ChannelFrequencyTuningWord10data[4];
uchar ChannelFrequencyTuningWord11data[4];
uchar ChannelFrequencyTuningWord12data[4];
uchar ChannelFrequencyTuningWord13data[4];
uchar ChannelFrequencyTuningWord14data[4];
uchar ChannelFrequencyTuningWord15data[4];
uchar ChannelFunctionRegisterdata[3] = {0x80,0x23,0x30}; //無(wú)RU/RD
uchar FunctionRegister1data[3] = {0xD0,0xf3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x04,4,ChannelFrequencyTuningWord0data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWord1data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWord1data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f3,ChannelFrequencyTuningWord2data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0B,4,ChannelFrequencyTuningWord2data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f4,ChannelFrequencyTuningWord3data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0C,4,ChannelFrequencyTuningWord3data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f5,ChannelFrequencyTuningWord4data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0D,4,ChannelFrequencyTuningWord4data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f6,ChannelFrequencyTuningWord5data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0E,4,ChannelFrequencyTuningWord5data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f7,ChannelFrequencyTuningWord6data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x0F,4,ChannelFrequencyTuningWord6data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f8,ChannelFrequencyTuningWord7data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x10,4,ChannelFrequencyTuningWord7data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f9,ChannelFrequencyTuningWord8data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x11,4,ChannelFrequencyTuningWord8data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f10,ChannelFrequencyTuningWord9data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x12,4,ChannelFrequencyTuningWord9data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f11,ChannelFrequencyTuningWord10data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x13,4,ChannelFrequencyTuningWord10data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f12,ChannelFrequencyTuningWord11data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x14,4,ChannelFrequencyTuningWord11data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f13,ChannelFrequencyTuningWord12data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x15,4,ChannelFrequencyTuningWord12data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f14,ChannelFrequencyTuningWord13data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x16,4,ChannelFrequencyTuningWord13data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f15,ChannelFrequencyTuningWord14data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x017,4,ChannelFrequencyTuningWord14data,0); //寫(xiě)入頻率控制字
WrFrequencyTuningWorddata(f16,ChannelFrequencyTuningWord15data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(0x18,4,ChannelFrequencyTuningWord15data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetPhamodulation163(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12,int p13,int p14,int p15,int p16)
{
// u8 b = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord0data[4];
uchar ChannelPhaseOffsetTuningWord1data[4];
uchar ChannelPhaseOffsetTuningWord2data[4];
uchar ChannelPhaseOffsetTuningWord3data[4];
uchar ChannelPhaseOffsetTuningWord4data[4];
uchar ChannelPhaseOffsetTuningWord5data[4];
uchar ChannelPhaseOffsetTuningWord6data[4];
uchar ChannelPhaseOffsetTuningWord7data[4];
uchar ChannelPhaseOffsetTuningWord8data[4];
uchar ChannelPhaseOffsetTuningWord9data[4];
uchar ChannelPhaseOffsetTuningWord10data[4];
uchar ChannelPhaseOffsetTuningWord11data[4];
uchar ChannelPhaseOffsetTuningWord12data[4];
uchar ChannelPhaseOffsetTuningWord13data[4];
uchar ChannelPhaseOffsetTuningWord14data[4];
uchar ChannelPhaseOffsetTuningWord15data[4];
uchar ChannelFunctionRegisterdata[3] = {0xc0,0x03,0x30}; //相位調(diào)制模式啟用(連續(xù)掃描可能開(kāi)啟)
uchar AmplitudeControldata[3] = {0x00,0x03,0xff}; //十六級(jí)調(diào)制時(shí)啟用,默認(rèn)輸出最大
uchar FunctionRegister1data[3] = {0xD0,0xf3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器,即相位調(diào)制啟動(dòng)
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWord0data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWord0data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWord1data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWord1data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p3,ChannelPhaseOffsetTuningWord2data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0b,4,ChannelPhaseOffsetTuningWord2data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p4,ChannelPhaseOffsetTuningWord3data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0c,4,ChannelPhaseOffsetTuningWord3data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p5,ChannelPhaseOffsetTuningWord4data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0d,4,ChannelPhaseOffsetTuningWord4data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p6,ChannelPhaseOffsetTuningWord5data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x0e,4,ChannelPhaseOffsetTuningWord5data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p7,ChannelPhaseOffsetTuningWord6data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x0f,4,ChannelPhaseOffsetTuningWord6data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p8,ChannelPhaseOffsetTuningWord7data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x10,4,ChannelPhaseOffsetTuningWord7data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p9,ChannelPhaseOffsetTuningWord8data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x11,4,ChannelPhaseOffsetTuningWord8data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p10,ChannelPhaseOffsetTuningWord9data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x12,4,ChannelPhaseOffsetTuningWord9data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p11,ChannelPhaseOffsetTuningWord10data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x13,4,ChannelPhaseOffsetTuningWord10data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p12,ChannelPhaseOffsetTuningWord11data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x14,4,ChannelPhaseOffsetTuningWord11data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p13,ChannelPhaseOffsetTuningWord12data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x15,4,ChannelPhaseOffsetTuningWord12data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p14,ChannelPhaseOffsetTuningWord13data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字?
WriteToAD9959ViaSpi(0x16,4,ChannelPhaseOffsetTuningWord13data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p15,ChannelPhaseOffsetTuningWord14data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x17,4,ChannelPhaseOffsetTuningWord14data,1); //寫(xiě)入相位控制字
WrPhaseOffsetTuningWorddata(p16,ChannelPhaseOffsetTuningWord15data); //將十進(jìn)制相位數(shù)轉(zhuǎn)換為2進(jìn)制相位控制字
WriteToAD9959ViaSpi(0x18,4,ChannelPhaseOffsetTuningWord15data,1); //寫(xiě)入相位控制字
f=200000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //將十進(jìn)制頻率數(shù)轉(zhuǎn)換為2進(jìn)制頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1); //寫(xiě)入頻率控制字
}
void AD9959_SetAM163(double f)
{
// u8 cn = 0;
uchar ChannelFrequencyTuningWord0data[4];
uchar AmplitudeControldata[3]={0x00,0x03,0xff};
uchar ChannelAmplitudeTuningWord1data[4]={0xef,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord2data[4]={0xdf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord3data[4]={0xcf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord4data[4]={0xbf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord5data[4]={0xaf,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord6data[4]={0x9f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord7data[4]={0x8f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord8data[4]={0x7f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord9data[4]={0x6f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord10data[4]={0x5f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord11data[4]={0x4f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord12data[4]={0x3f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord13data[4]={0x2f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord14data[4]={0x1f,0x30,0x00,0x00};
uchar ChannelAmplitudeTuningWord15data[4]={0x0f,0x30,0x00,0x00};
uchar ChannelFunctionRegisterdata[3] = {0x40,0x03,0x30};
uchar FunctionRegister1data[3]={0xD0,0xf3,0x00};
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); //設(shè)置通道功能寄存器
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWord1data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0b,4,ChannelAmplitudeTuningWord2data,0);
WriteToAD9959ViaSpi(0x0c,4,ChannelAmplitudeTuningWord3data,0);
WriteToAD9959ViaSpi(0x0d,4,ChannelAmplitudeTuningWord4data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x0e,4,ChannelAmplitudeTuningWord5data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x0f,4,ChannelAmplitudeTuningWord6data,0);
WriteToAD9959ViaSpi(0x10,4,ChannelAmplitudeTuningWord7data,0);
WriteToAD9959ViaSpi(0x11,4,ChannelAmplitudeTuningWord8data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x12,4,ChannelAmplitudeTuningWord9data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x13,4,ChannelAmplitudeTuningWord10data,0);
WriteToAD9959ViaSpi(0x14,4,ChannelAmplitudeTuningWord11data,0);
WriteToAD9959ViaSpi(0x15,4,ChannelAmplitudeTuningWord12data,0); //設(shè)置幅度大小(S1)
WriteToAD9959ViaSpi(0x16,4,ChannelAmplitudeTuningWord13data,0); // 設(shè)置幅度大小(S2)
WriteToAD9959ViaSpi(0x17,4,ChannelAmplitudeTuningWord14data,0);
WriteToAD9959ViaSpi(0x18,4,ChannelAmplitudeTuningWord15data,0);
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
/////////////////////////////////////////////////////////////////////////
void AD9959_Frequency_Sweep(double f1,double f2,double a1,double a2) //f1起始頻率,f2終止頻率,a1上升δ,a2下降δ
{
uchar ChannelFrequencyTuningWorddata1[4];
uchar ChannelFrequencyTuningWorddata2[4];
uchar ChannelFrequencyTuningWorddata3[4];
uchar ChannelFrequencyTuningWorddata4[4];
uchar FunctionRegister1data[3] = {0xD0,0x00,0x00}; //默認(rèn)情況下選擇
uchar ChannelFunctionRegisterdata[3] = {0x80,0x43,0x20}; //掃頻模式時(shí)選擇;連續(xù)掃描沒(méi)有啟用,無(wú)RU/RD
uchar SweepRampRatedata[2] = {0xff,0xff}; //默認(rèn)單位掃描時(shí)間最長(zhǎng)
//uchar FunctionRegister1data[3] = {0xD0,0x04,0x00}; //線性掃描時(shí)需要RU/RD時(shí)選擇開(kāi)啟
// uchar AmplitudeControldata[3] = {0xff,0x1f,0xff}; //開(kāi)啟RU/RD
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); // 設(shè)置通道功能寄存器
// WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,1); //需輸出幅度RU/RD模式才選擇,且要修改功能寄存器FR1
// f=500000; // 設(shè)置起始頻率S0(0x04)
WrFrequencyTuningWorddata(f1,ChannelFrequencyTuningWorddata1); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWorddata1,0);
// f=5000000; //設(shè)置終止頻率(0x0A)
WrFrequencyTuningWorddata(f2,ChannelFrequencyTuningWorddata2); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(0x0A,4,ChannelFrequencyTuningWorddata2,0);
// f=100; //設(shè)置上升δ
WrFrequencyTuningWorddata(a1,ChannelFrequencyTuningWorddata3); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(RDW,4,ChannelFrequencyTuningWorddata3,0);
// f=100; //設(shè)置下降δ
WrFrequencyTuningWorddata(a2,ChannelFrequencyTuningWorddata4); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(FDW,4,ChannelFrequencyTuningWorddata4,0);
WriteToAD9959ViaSpi(SRR,2,SweepRampRatedata,1); //設(shè)置單位步進(jìn)時(shí)間
}
void AD9959_Phase_Sweep(int p1,int p2,int a1,int a2,double f) //p1起始相位,p2終止相位,a1設(shè)置上升δ,a2設(shè)置下降δ
{
uchar ChannelPhaseOffsetTuningWorddata1[2];
uchar ChannelPhaseOffsetTuningWorddata2[2];
uchar ChannelPhaseOffsetTuningWorddata3[2];
uchar ChannelPhaseOffsetTuningWorddata4[2];
uchar ChannelFrequencyTuningWord0data[4];
uchar FunctionRegister1data[3] = {0xD0,0x00,0x00}; //默認(rèn)情況下選擇
uchar ChannelFunctionRegisterdata[3] = {0xc0,0xC3,0x30}; //掃相模式時(shí)選擇,連續(xù)掃描沒(méi)有啟用,無(wú)RU/RD
uchar SweepRampRatedata[2] = {0xff,0xff}; //默認(rèn)單位掃描時(shí)間最長(zhǎng)
//uchar FunctionRegister1data[3] = {0xD0,0x04,0x00}; //線性掃描時(shí)需要RU/RD時(shí)選擇開(kāi)啟
// uchar AmplitudeControldata[3] = {0xff,0x1f,0xff}; //開(kāi)啟RU/RD
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0); // 設(shè)置通道功能寄存器
// WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,1); //需輸出幅度RU/RD模式才選擇,且要修改功能寄存器FR1
// p=0;// 設(shè)置起始相位S0(0x04) 數(shù)據(jù)類(lèi)型與子函數(shù)里面不一樣
WrPhaseOffsetTuningWorddata(p1,ChannelPhaseOffsetTuningWorddata1);
WriteToAD9959ViaSpi(CPOW0,2,ChannelPhaseOffsetTuningWorddata1,0);
// p=360;//設(shè)置終止相位E0(0x0A)
WrPhaseOffsetTuningWorddata(p2,ChannelPhaseOffsetTuningWorddata2);
WriteToAD9959ViaSpi(0x0a,4,ChannelPhaseOffsetTuningWorddata2,0);
// p=10;//設(shè)置上升δ
WrPhaseOffsetTuningWorddata(a1,ChannelPhaseOffsetTuningWorddata3);
WriteToAD9959ViaSpi(RDW,4,ChannelPhaseOffsetTuningWorddata3,0);
// p=10;//設(shè)置下降δ
WrPhaseOffsetTuningWorddata(a2,ChannelPhaseOffsetTuningWorddata4);
WriteToAD9959ViaSpi(FDW,4,ChannelPhaseOffsetTuningWorddata4,0);
WriteToAD9959ViaSpi(SRR,2,SweepRampRatedata,0); //寫(xiě)單位步進(jìn)時(shí)間
// f=400000; //設(shè)置輸出頻率大小
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWord0data); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWord0data,1);
}
void AD9959_Amplitute_Sweep(int a,int a1,int a2,double f) //a終止幅度,a1上升δ,a2下降δ,f輸出頻率
{
uchar ChannelAmplitudeTuningWorddata1[4];
uchar ChannelAmplitudeTuningWorddata2[4];
uchar ChannelAmplitudeTuningWorddata3[4];
uchar ChannelFrequencyTuningWorddata4[4];
uchar FunctionRegister1data[3] = {0xD0,0x00,0x00}; //默認(rèn)情況下選擇
uchar ChannelFunctionRegisterdata[3] = {0x40,0x43,0x20}; //幅度掃描位啟動(dòng)
uchar AmplitudeControldata[3] = {0x00,0x0,0x3f}; //幅度掃描模式時(shí)啟用
uchar SweepRampRatedata[2] = {0xff,0xff}; //默認(rèn)單位掃描時(shí)間最長(zhǎng)
WriteToAD9959ViaSpi(FR1,3,FunctionRegister1data,0); //設(shè)置功能寄存器
WriteToAD9959ViaSpi(CFR,3,ChannelFunctionRegisterdata,0);
//寫(xiě)起始幅度S0
WriteToAD9959ViaSpi(ACR,3,AmplitudeControldata,0);
//寫(xiě)終止幅度E0
// a=1023; //寫(xiě)上升δ,不能寫(xiě)到1024,最大為1023
WrAmplitudeTuningWorddata(a,ChannelAmplitudeTuningWorddata1);
WriteToAD9959ViaSpi(0x0a,4,ChannelAmplitudeTuningWorddata1,0); //CTW0 address 0x04.輸出10MHZ頻率
// a=10; //寫(xiě)上升δ
WrAmplitudeTuningWorddata(a1,ChannelAmplitudeTuningWorddata2); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(RDW,4,ChannelAmplitudeTuningWorddata2,0);
// a=10; //寫(xiě)下降δ
WrAmplitudeTuningWorddata(a2,ChannelAmplitudeTuningWorddata3); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(FDW,4,ChannelAmplitudeTuningWorddata3,0);
WriteToAD9959ViaSpi(SRR,2,SweepRampRatedata,0); //寫(xiě)單位步進(jìn)時(shí)間
// f=400000;
WrFrequencyTuningWorddata(f,ChannelFrequencyTuningWorddata4); //寫(xiě)頻率控制字
WriteToAD9959ViaSpi(CFTW0,4,ChannelFrequencyTuningWorddata4,1);
}
#endif // #if USE_AD9959
AD9959_Outset.h
點(diǎn)擊查看代碼
#ifndef _AD9959_Outset_H
#define _AD9959_Outset_H
#define uchar unsigned char
#define uint unsigned int
#include "headers.h"
#if USE_AD9959
/** 通道使能 ********************************************************************************************************************************************************/
/********************************************************************************************************************************************************************/
// extern void AllChannl_init();
extern void AD9959_enablechannelall(void); /* 使能全部通道(不可用)*/
extern void AD9959_enablechannel0(void); /* 使能通道 0*/
extern void AD9959_enablechannel1(void); /* 使能通道 0*/
extern void AD9959_enablechannel2(void); /* 使能通道 0*/
extern void AD9959_enablechannel3(void); /* 使能通道 0*/
/** 正弦波設(shè)置 ********************************************************************************************************************************************************/
/**********************************************************************************************************************************************************************/
/* 頻率幅度相位獨(dú)立可調(diào) */
/* 設(shè)置輸出信號(hào)的 頻率 */
extern void AD9959_Setwavefrequency(double f); // 55 kHz - 200 MHz
/* 設(shè)置輸出信號(hào)的 頻率和相位 */
extern void AD9959_Setwavephase(double f,int p); // 0 - 180 °
/* 設(shè)置輸出信號(hào)的 頻率和幅度 */
extern void AD9959_Setwaveamplitute(double f,int a); // 幅值范圍 0 - 16383 0 - 840 mV
/** 二階調(diào)制波設(shè)置 ********************************************************************************************************************************************************/
/**************************************************************************************************************************************************************************/
/* 設(shè)置二階調(diào)制波的 兩個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation2(double f1,double f2);
/* 設(shè)置二階調(diào)制波的 兩個(gè)信號(hào)頻率和相位 */
extern void AD9959_SetPhamodulation2(double f,int p1,int p2);
/* 設(shè)置二階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM2(double f);
/** 四階調(diào)制波設(shè)置 ********************************************************************************************************************************************************/
/**************************************************************************************************************************************************************************/
//-------------------------------------------------------------------
// CH0/1
//-------------------------------------------------------------------
/* 設(shè)置 CH 0/1 四階調(diào)制波的 四個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation4(double f1,double f2,double f3,double f4);
/* 設(shè)置 CH 0/1 四階調(diào)制波的 頻率和四個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation4(double f,int p1,int p2,int p3,int p4);
/* 設(shè)置 CH 0/1 四階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM4(double f);
//-------------------------------------------------------------------
// CH3/4
//-------------------------------------------------------------------
/* 設(shè)置 CH 3/4 四階調(diào)制波的 四個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation42(double f1,double f2,double f3,double f4);
/* 設(shè)置 CH 3/4 四階調(diào)制波的 頻率和四個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation42(double f,int p1,int p2,int p3,int p4);
/* 設(shè)置 CH 3/4 四階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM42(double f);
/** 八階調(diào)制波設(shè)置 ********************************************************************************************************************************************************/
/**************************************************************************************************************************************************************************/
//-------------------------------------------------------------------
// CH0
//-------------------------------------------------------------------
/* 設(shè)置 CH0 八階調(diào)制波的 八個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation80(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8);
/* 設(shè)置 CH0 八階調(diào)制波的 頻率和八個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation80(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8);
/* 設(shè)置 CH0 八階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM80(double f);
//-------------------------------------------------------------------
// CH1
//-------------------------------------------------------------------
/* 設(shè)置 CH1 八階調(diào)制波的 八個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation81(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8);
/* 設(shè)置 CH1 八階調(diào)制波的 頻率和八個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation81(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8);
/* 設(shè)置 CH1 八階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM81(double f);
//-------------------------------------------------------------------
// CH2
//-------------------------------------------------------------------
/* 設(shè)置 CH2 八階調(diào)制波的 八個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation82(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8);
/* 設(shè)置 CH2 八階調(diào)制波的 頻率和八個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation82(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8);
/* 設(shè)置 CH2 八階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM82(double f);
//-------------------------------------------------------------------
// CH 3
//-------------------------------------------------------------------
/* 設(shè)置 CH3 八階調(diào)制波的 八個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation83(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8);
/* 設(shè)置 CH3 八階調(diào)制波的 頻率和八個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation83(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8);
/* 設(shè)置 CH3 八階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM83(double f);
/** 十六階調(diào)制波設(shè)置 *****************************************************************************************************************************************************************************************************/
/*************************************************************************************************************************************************************************************************************************/
//-------------------------------------------------------------------
// CH0
//-------------------------------------------------------------------
/* 設(shè)置 CH0 十六階調(diào)制波的 十六個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation160(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8,double f9,double f10,double f11,double f12,double f13,double f14,double f15,double f16);
/* 設(shè)置 CH0 十六階調(diào)制波的 頻率和十六個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation160(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12,int p13,int p14,int p15,int p16);
/* 設(shè)置 CH0 十六階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM160(double f);
//-------------------------------------------------------------------
// CH 1
//-------------------------------------------------------------------
/* 設(shè)置 CH1 十六階調(diào)制波的 十六個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation161(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8,double f9,double f10,double f11,double f12,double f13,double f14,double f15,double f16);
/* 設(shè)置 CH1 十六階調(diào)制波的 頻率和十六個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation161(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12,int p13,int p14,int p15,int p16);
/* 設(shè)置 CH1 十六階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM161(double f);
//-------------------------------------------------------------------
// CH 2
//-------------------------------------------------------------------
/* 設(shè)置 CH2 十六階調(diào)制波的 十六個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation162(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8,double f9,double f10,double f11,double f12,double f13,double f14,double f15,double f16);
/* 設(shè)置 CH2 十六階調(diào)制波的 頻率和十六個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation162(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12,int p13,int p14,int p15,int p16);
/* 設(shè)置 CH2 十六階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM162(double f);
//-------------------------------------------------------------------
// CH 3
//-------------------------------------------------------------------
/* 設(shè)置 CH3 十六階調(diào)制波的 十六個(gè)信號(hào)頻率 */
extern void AD9959_SetFremodulation163(double f1,double f2,double f3,double f4,double f5,double f6,double f7,double f8,double f9,double f10,double f11,double f12,double f13,double f14,double f15,double f16);
/* 設(shè)置 CH3 十六階調(diào)制波的 頻率和十六個(gè)信號(hào)的相位 */
extern void AD9959_SetPhamodulation163(double f,int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12,int p13,int p14,int p15,int p16);
/* 設(shè)置 CH3 十六階調(diào)制波的 信號(hào)幅度 */
extern void AD9959_SetAM163(double f);
/** 掃頻設(shè)置 ********************************************************************************************************************************************************/
/********************************************************************************************************************************************************************/
/* 設(shè)置掃頻的 起始頻率、終止頻率、上升δ、下降δ */
extern void AD9959_Frequency_Sweep(double f1,double f2,double a1,double a2);
/* 設(shè)置掃頻的 起始相位、終止相位、上升δ、下降δ */
extern void AD9959_Phase_Sweep(int p1,int p2,int a1,int a2,double f);
/* 設(shè)置掃頻的 終止幅度、上升δ、下降δ、輸出頻率 */
extern void AD9959_Amplitute_Sweep(int a,int a1,int a2,double f);
#endif // #if USE_AD9959
#endif // #ifndef _AD9959_Outset_H
波形
最低頻率波形(并非最低)
可以看到在40kHz的時(shí)候,幅值已經(jīng)明顯衰減

最高頻率波形
可以看到在200MHz的時(shí)候,幅值已經(jīng)明顯衰減

博客導(dǎo)航
本文來(lái)自博客園,作者:膝蓋中箭衛(wèi)兵,轉(zhuǎn)載請(qǐng)注明原文鏈接:http://www.rzrgm.cn/Skyrim-sssuuu/p/19003444

浙公網(wǎng)安備 33010602011771號(hào)
https://orcid.org/0000-0001-5102-772X