AD9854概述
AD9854數(shù)字合成器是高集成度的器件,它采用先進(jìn)的DDS技術(shù),片內(nèi)整合了兩路高速、高性能正交D/A轉(zhuǎn)換器通過數(shù)字化編程可以輸出I、Q兩路合成信號(hào)。在高穩(wěn)定度時(shí)鐘的驅(qū)動(dòng)下,AD9854將產(chǎn)生一高穩(wěn)定的頻率、相位、幅度可編程的正弦和余弦信號(hào),作為本振用于通信,雷達(dá)等方面。AD9854的DDS核具有48位的頻率分辨率(在300M系統(tǒng)時(shí)鐘下,頻率分辨率可達(dá)1uHZ)。輸出17位相位截?cái)啾WC了良好的無雜散動(dòng)態(tài)范圍指標(biāo)。AD9854允許輸出的信號(hào)頻率高達(dá)150MHZ,而數(shù)字調(diào)制輸出頻率可達(dá)100MHZ。通過內(nèi)部高速比較器正弦波轉(zhuǎn)換為方波輸出,可用作方便的時(shí)鐘發(fā)生器。
ad9854優(yōu)勢和特點(diǎn)
00MHz內(nèi)部時(shí)鐘速率
FSK、BPSK、PSK、線性調(diào)頻、AM操作
兩個(gè)集成式12位數(shù)模轉(zhuǎn)換器(DAC)
超高速比較器,均方根抖動(dòng):3ps
出色的動(dòng)態(tài)性能:80dBSFDR(100MHz±1MHzAOUT)
4×至20×可編程基準(zhǔn)時(shí)鐘乘法器
兩個(gè)48位可編程頻率寄存器
兩個(gè)14位可編程相位偏移寄存器
12位可編程振幅調(diào)制和開關(guān)輸出形鍵控功能
單引腳FSK和BPSK數(shù)據(jù)接口
通過輸入/輸出接口提供PSK功能
線性或非線性FM線性調(diào)頻功能,具有單引腳頻率保持功能
ad9854構(gòu)成的信號(hào)發(fā)生器電路
鍵盤共設(shè)有16個(gè)鍵,由P1.0~P1.3四條行線和P1.4~P1.7四條列線構(gòu)成。其中包括數(shù)字鍵、單位鍵及功能鍵,用來對(duì)所需信號(hào)的頻率、幅度及功能進(jìn)行控制,最后輸出的信號(hào)頻率、幅度等信息通過液晶顯示屏顯示出來。顯示部分采用國顯公司的GXM1602NSL液晶模塊,它的核心是HD44780。與W78E58的數(shù)據(jù)傳輸采用8位并行傳輸,可顯示兩行共32個(gè)點(diǎn)陣字符。HD44780支持用戶自定義字符,故可以通過編程將頻率、幅度、波形等漢字及數(shù)字信息顯示出來。還采用了通信接口(RS232)與PC機(jī)相聯(lián),PC機(jī)的控制命令可以通過TXD(Pin10)和RXD(Pin11)與W78E58進(jìn)行交互,控制信號(hào)源的輸出。
stm32驅(qū)動(dòng)ad9854程序分享
#include <stm32f10x_lib.h》
#include “sys.h”
#include “delay.h”
#define AD9854_DATA GPIOC-》ODR
#define AD9854_ADDR GPIOC-》ODR
#define ad9854_reset PBout(12)
#define ad9854_rd PBout(13)
#define ad9854_wr PBout(14)
#define ad9854_updata PBout(15)
unsigned char ControlRegister[]={0x14,0x4f,0x00,0x60}; //AD9852控制寄存器初始值, Mode 0
unsigned char FTW[]={0x00,0x00,0x37,0xec}; //Frequency Tuning Word 1 倍頻 300MHz 后輸出頻率 對(duì)應(yīng)的 FTW 值
unsigned char PAR[]={0x00,0x00}; //Phase Adjust Register 1
unsigned char OSK[]={0x0a,0xff}; //Output shaped keying multiplier, 650mv
voidsingle_wave(unsigned long intfre);
void Init_AD9854(void);
void AD9854_Set_Mode0(void);
void AD9852_Send(unsigned char addr,unsigned char data);
voidchange_frequency(unsigned long intfre_temp); voidInit_Port(void);
int main( void )
{
Stm32_Clock_Init(9); // 9倍頻
delay_init(72); // 72M晶振時(shí)延時(shí)
delay_ms(200);
Init_Port();
Init_AD9854();
single_wave(1000000);
while(1);
}
voidInit_Port(void)
{
RCC-》APB2ENR |= 1<<3 ;
GPIOB-》CRH &= 0x0000ffff ;
GPIOB-》CRH |= 0x33330000 ;
GPIOB-》ODR |= 0xf000 ;
RCC-》APB2ENR |= 1<<4 ;
GPIOC-》CRL &= 0x00000000 ;
GPIOC-》CRL |= 0x33333333 ;
GPIOC-》CRH &= 0x00000000 ;
GPIOC-》CRH |= 0x33333333 ;
GPIOC-》ODR |= 0xffff ;
}
void AD9852_Send(unsigned char addr,unsigned char data) //按照并行輸入時(shí)序
{
ad9854_wr = 1; // AD9854_WR_SET;
AD9854_ADDR &= 0x00ff|addr<<8;
AD9854_ADDR |= 0xff00&addr<<8;
ad9854_wr = 1; // AD9854_WR_SET;
AD9854_DATA &= 0xff00|data;
AD9854_DATA |= 0x00ff&data;
ad9854_wr = 0; // AD9854_WR_CLR; ad9854_wr = 1; // AD9854_WR_SET; ad9854_updata = 1; //
AD9854_UPDATA_SET;
ad9854_updata = 0; //
AD9854_UPDATA_CLR;
}
void Init_AD9854(void)
{
unsigned char addr;
unsigned char i;
ad9854_reset = 0 ; // AD9854_RESET_CLR;
ad9854_wr = 1 ; // AD9854_WR_SET; ad9854_rd = 0 ; // AD9854_RD_CLR; ad9854_updata = 0 ; // AD9854_UPDATA_CLR;
addr = 0x1d;
for(i=4;i》0;i--)
{
AD9852_Send(addr,ControlRegister[4-i]);
addr++;
}
}
void AD9854_Set_Mode0(void) //Mode 0 設(shè)置
{
unsigned char addr;
unsigned char counter;
for(addr=0x00,counter=2;counter》0;counter--) //設(shè) 置 Phase Adjust Register 1
{
AD9852_Send(addr,PAR[2-counter]);
addr++;
}
for(addr=0x04,counter=4;counter》0;counter--) //設(shè) 置 Frequency Tuning Word 1
{
AD9852_Send(addr,F(xiàn)TW[4-counter]);
addr++;
}
for(addr=0x21,counter=2;counter》0;counter--) //設(shè) 置 Output shaped keying multiplier
{
AD9852_Send(addr,OSK[2-counter]);
addr++;
}
}
voidsingle_wave(unsigned long intfre)
{
unsigned char addr,i;
unsigned long intff;
unsigned char *p;
ff=(unsigned long int)(4294967296*fre/300000000); p=(unsigned char*)&ff;
for(addr=0x04,i=0;i<4;i++) //設(shè) 置 Frequency Tuning Word 1
{AD9852_Send(addr,*(p+3-i));
addr++;
}
for(addr=0x00,i=0;i<2;i++) //設(shè) 置 Phase Adjust Register 1
{
AD9852_Send(addr,PAR[i]);
addr++;
}
for(addr=0x21,i=2;i》0;i--) //設(shè)
置 Output shaped keying multiplier
{
AD9852_Send(addr,OSK[2-i])
addr++;
}
}
voidchange_frequency(unsigned long intfre_temp) {
unsigned char addr,counter;
unsigned char *p;
p=(unsigned char*)&fre_temp;
for(addr=0x04,counter=0;counter<4;counter++) //設(shè)置 Frequency Tuning Word 1
{
AD9852_Send(addr,*(p+3-counter));
addr++;
}
}
-
STM32
+關(guān)注
關(guān)注
2270文章
10895瀏覽量
355730 -
AD9854
+關(guān)注
關(guān)注
12文章
50瀏覽量
28099
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論