已回答假定已回答

AD9910 psk调制出现的奇怪问题 求助!

shane 在 2013-1-11 詢問的問題
最後回覆由wangmigooo於2013-1-11提供

您好!
最近在用ad9910做一个psk调制的项目(bpsk),主控制器采用的是msp430,现在能够实现不同频率的输出,在做psk调制的时候,我采用的是在profile0寄存器和profile1寄存器中写入相同的频率控制字,不同的相位控制字,一个相位偏移0,一个相位偏移pi,通过改变profile0管教的高低电平实现选择不同的寄存器,从而实现相位的调制,但现在的情况是:可以实现相位的调制,但是在相位改变的后的(或改变前)会出现一个奇怪的波形,就是我下面附件中的那种,波峰到波谷的跳变,不知道是什么原因引起的,我把程序也贴出,希望高手指教:

 

#include<msp430x14x.h>
#include
"common.h"
long int RegisterData[2] = {0,0};
long int RegisterData1[2] =
{0,0};
int
ph[]={1,1,0,1,0,0,1,1};
//================================
//
主函数
//================================
void main(void)
{
int
i;
P6SEL=0;
P6DIR=0XFF;
P6OUT =0X80; //POWER Control

 

MCU_Initiate(); //MSP430 Initialization

 

 

 

RegisterData[0] =
0x00000002;//SDIO Input
Only
WriteToAD9910ViaSpi(0x00,1,RegisterData);//3-Wire
Communication
//串行写函数是仿照官网给的例子写的应该没有问题,可以实现通信
RegisterData[0] =
0x01384126;
WriteToAD9910ViaSpi(0x02,1,RegisterData);//System Clock =
?M,4分频后83M

 

RegisterData[0] = 0x00400820;//SYNC_CLK
使能
WriteToAD9910ViaSpi(0x01,1,RegisterData);

 

RegisterData[0] =
0x008B7034;//输出频率770Khz
RegisterData[1] =
0x085b0000;//相位不变
WriteToAD9910ViaSpi(0x0E,2,RegisterData);

 

RegisterData1[0]
= 0x008B7034;//输出频率770Khz
RegisterData1[1] =
0x085b8000;//相位改变PI
WriteToAD9910ViaSpi(0x0F,2,RegisterData1);

 

while(1)
{
for(i=0;i<8;i++)
{

 

if(ph==1)//如果检测到数组中的数据为1,置profile0引脚为高选择0x0E寄存器
{
P1OUT|=BIT1;
_NOP();//延时3us
_NOP();
_NOP();

}
else//果检测到数组中的数据为0,置profile0引脚为高选择0x0F寄存器
{
P1OUT&=~BIT1;
_NOP();//延时3us,延时我也改了很多就是不行
_NOP();
_NOP();
}
}
}


}

結果