|
多功能调试测试助手-DDS直接频率合成AD9834
[复制链接]
环境说明:CubeSuites+
由于该环境不支持中文,所以对程序可读性带来很多麻烦,乘有空闲时间可以把使用到的外设程序好好列列
多功能调试测试助手-DDS直接频率合成AD9834
文件:
AD9834.c AD9834.h
函数:
Init_dds();
void send_F(unsigned long val);
细列:
//AD9834初始化
void Init_dds(void)
{
AD9834_SCLK_H; //为下降沿移入数据做准备
AD9834_CS_H; //帧同步无效
SPI16_Write(0x2100);//复位AD9834,同时频率寄存器分2次写入
SPI16_Write(0x2038);//输出正弦波,SIGN BIT OUT有效
}
//同步串行写字
void SPI16_Write(unsigned short data )
{
unsigned char i ;
AD9834_CS_L; //帧同步有效
for(i=0;i<16;i++)
{
if ((data&0x8000)==0x8000)// 数据是否为1
{AD9834_DATA_H;}
else
{AD9834_DATA_L;}
AD9834_SCLK_L; //下降沿有效
NOP(); NOP(); NOP(); NOP(); NOP();NOP(); NOP(); NOP(); NOP(); NOP();
AD9834_SCLK_H;
NOP(); NOP(); NOP(); NOP(); NOP();NOP(); NOP(); NOP(); NOP(); NOP();
data<<=1; //移位,待下位输出
}
AD9834_CS_H; 帧同步数据无效
}
//发送频率值
//AD9834中文数据手册 P21,表11
void send_F(unsigned long val)
{
unsigned short freqHi;
unsigned short freqLo;
//频率值28BIT分2次送入频率寄存器REG0
freqHi = 0x4000|(val & 0xFFFC000) >> 14 ;//B28 (DB13)=1;数据先移位高14BIT
freqLo = 0x4000|(val & 0x3FFF); //B28 (DB13)=1;数据再移位低14BIT
SPI16_Write(freqLo);
SPI16_Write(freqHi);
}
|
|