⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad9851.c

📁 单片机控制FPGA的程序,包括AD转换,频率输出,测试程序
💻 C
字号:
#include "includes.h"

void delay(unsigned int t_i)
{
  unsigned int i;
  for(i = t_i; i > 0; i--);

}
void ad9851_init(void)
{
  RESET = 0;
  W_CLK = 0;
  FQ_UD = 0;
  RESET = 1;     //9851复位
  delay(delay_con);
  RESET = 0;   
  delay(delay_con);

  W_CLK = 0;     //改变为串行数据传输模式
  delay(delay_con);
  W_CLK = 1;
  delay(delay_con);
  W_CLK = 0;
  delay(delay_con);
  FQ_UD = 1;
  delay(delay_con);
  FQ_UD = 0;

}

void ad9851_send(unsigned char* ptr_data)
{
  unsigned char i,j;
  unsigned char temp;
  FQ_UD = 0;
  for(i = 0; i < 5; i++)
  {
    temp = *(ptr_data + i);
    for(j = 0; j < 8; j++)
	{ 
	  D7 = (temp>>j) & 0x01;
      W_CLK = 1;
	  delay(delay_con);
	  W_CLK = 0;
	  delay(delay_con);
	}
  }
  FQ_UD = 1;
  delay(delay_con);
  FQ_UD = 0;
}
void ad9851_calfreq(double freq/*单位是MHz*/,float phase_data/*单位是度,应为11。25度的整数倍*/, unsigned char* ptr_data)
{
  unsigned char i;
  unsigned char temp_phase;
  unsigned long temp_fdata;
  temp_fdata =  (freq / STEP_OSC) * 1000000;
  for(i = 0; i <4; i++)
    *(ptr_data + i) = (temp_fdata >> (8 * i)) & 0xff;


  temp_phase = (unsigned char)(phase_data /11.25);
  *(ptr_data + 4) = ((temp_phase << 3) & 0xf8);  //如果采用掉电模式,再或上PWR_DOWN,如果采用6*osc则或上MULT6

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -