本帖最后由 kokoromi 于 2011-3-21 08:45 编辑
你好,我也在做AD9834。但是无论如何我用51都驱动不了,DDS没有任何输出。请问能不能将程序贴出来呢?实在是不知道哪里出了问题,拜托你了。。。 1# kokoromi ...
onmyway12 发表于 2011-3-20 15:22 
我用的是PIC24HJ系列的单片机,不是51系列的,程序可能会不太一样,另外我用的是软件模拟SPI的方式。需要注意的是,SPI的速度不要超过2M,速度太快传输数据会有问题。我贴在下面吧:
void Send_word(unsigned int word);
#define AD9834_FSYNC PORTCbits.RC5
#define AD9834_SDATA PORTCbits.RC3
#define AD9834_SCLK PORTCbits.RC4
void main()
{
AD9834_SCLK = 1; //准备产生下降沿
AD9834_FSYNC = 1; //高电平,数据无效
Send_word(0x2000); //发送控制字,设置一次性写FREQ REG
Send_word(0x4000 + 0x0000); //写FREQ REG 的LSB,加0x4000使最高两位变为01,选中FREQ0
Send_word(0x4000 + 0x003F); //写FREQ REG 的MSB,加0x4000使最高两位变为01,选中FREQ0
Send_word(0xC000); //写PHASE0 REG
}
/*发送字*/
void Send_word(unsigned int word)
{
unsigned char i;
AD9834_FSYNC = 0; //低电平,数据有效
for(i = 0;i < 16;i++) //传输16位字
{
word <<= 1; //控制字左移一位
AD9834_SDATA = SRbits.C; //最高位赋给AD9834_SDATA
AD9834_SCLK = 0; //产生下降沿,传输AD9834_SDATA
AD9834_SCLK = 1; //准备下一次下降沿
}
AD9834_FSYNC = 1; //高电平,数据无效
}
|