多功能调试测试助手-DDS直接频率合成AD9834
时间:10-02
整理:3721RD
点击:
环境说明: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);
- }
