DDS AD9959 应用电路和配置源程序 AD9959 是一款有四个DDS 通道,最高达500M SPS 的数字频率合成芯片。 常用电路接法: 主要程序: #include "config.h" void delay(void) { unsigned int i; for(i=0;i<10;i++); } /***************************************************************************** 功能描述: 加载寄存器,上升延有效 *****************************************************************************/ void run(void) { CLR_IOUPDATE; CLR_IOUPDATE; CLR_IOUPDATE; CLR_IOUPDATE; CLR_IOUPDATE; CLR_IOUPDATE; CLR_IOUPDATE; SET_IOUPDATE; SET_IOUPDATE; } /***************************************************************************** 函数名: write_a_byte 功能描述: 通过串口写一个字节, MSB first,上升延有效 *****************************************************************************/ void write_a_byte(uint8 w_data) { uint8 i; for(i=0;i<8;i++) { if(w_data & 0x80) { SET_SDIO0; } else { CLR_SDIO0; } w_data <<= 1; SET_DDSSCLK; CLR_DDSSCLK; } } /***************************************************************************** 函数名: write_CSR 功能描述: 写CSR 寄存器: *****************************************************************************/ void write_CSR(uint8 w_data) { CLR_SDIO3; CLR_DDSCS; write_a_byte(0x00); //write address 0. CSR's address is 0. write_a_byte(w_data); SET_DDSCS; SET_SDIO3; } void write_FR1(uint8 w_data1,uint8 w_data2,uint8 w_data3) { CLR_SDIO3; CLR_DDSCS; write_a_byte(0x01); //write address 1. FR1's address is 0x01 write_a_byte(w_data1); write_a_byte(w_data2); write_a_byte(w_data3); SET_DDSCS; SET_SDIO3; } void write_FR2(uint8 w_data1,uint8 w_data2) { CLR_SDIO3; CLR_DDSCS; write_a_byte(0x02); //write address 2 write_a_byte(w_data1); write_a_byte(w_data2); SET_DDSCS; SET_SDIO3; } void write_CFR(uint8 w_data1,uint8 w_data2,uint8 w_data3) { CLR_SDIO3; CLR_DDSCS; write_a_byte(0x03); write_a_byte(w_data1); write_a_byte(w_data2); write_a_...