📄 ad9851.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 + -