打印

诚心求助AD9850的疑问,各位好心的帮帮忙吧

[复制链接]
1739|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 shexujia 于 2011-8-9 15:51 编辑

本来应该挺简单的。
但是写进去的频率和出来的波形相差十万八千里了。经常出来杂波或者没现象。
PDF上面说过有2个工作方式控制位。若不输入00的话,可能导致不可预测的问题。调试的时候有动过相位的那8位数据。莫非这样就挂了芯片??:'(
还是我硬件软件自己的问题呢??其他闲置的7个数据口有接地了
帮帮忙呀。
程序如下:
/****************************************************************
函数名称: ad9850_reset_serial()
功    能: ad9850复位(串口模式)
入口参数: 无
返回值  : 无
修    改: 2011-5-26
说    明: 参考芯片手册Figure 22.Serial-Load Enable Sequence
****************************************************************/
void ad9850_reset_serial(void)
{
ad9850_w_clk_clr;
ad9850_fq_up_clr;

//reset信号
ad9850_rest_clr;
ad9850_rest_set;
ad9850_rest_clr;
//w_clk信号
ad9850_w_clk_clr;
ad9850_w_clk_set;
ad9850_w_clk_clr;
//fq_up信号
ad9850_fq_up_clr;
ad9850_fq_up_set;
ad9850_fq_up_clr;

}
/****************************************************************
函数名称: ad9850_wr_serial()
功    能: 向ad9850中写命令与数据(串口)
入口参数: w0:为ad9850中w0的数据; frequence:为写入的频率
返回值  : 无
修    改: 2011-5-26
说    明:
****************************************************************/
void ad9850_wr_parrel(unsigned char w0,long frequence)
{
unsigned char i,w;
long  y;
y = frequence * 34.359738;
//计算频率的HEX值
//写w4数据
ad9850_w_clk_clr;
ad9850_fq_up_clr;
for(i=0;i<32;i++)
{
  w =y&0x00000001;
  if(w)
  ad9850_bit_data_set;
  else
   ad9850_bit_data_clr;
  y=y>>1;
  ad9850_w_clk_set;
  delay(1);
  ad9850_w_clk_clr;

}
//写w0数据
w = w0;
for(i=0;i<8;i++)
{
  if(w&0x01) ad9850_bit_data_set;
  else ad9850_bit_data_clr;
  w=w>>1;
  ad9850_w_clk_set;
  delay(1);
  ad9850_w_clk_clr;
}
//移入始能
ad9850_fq_up_set;
delay(1);
ad9850_fq_up_clr;
}

相关帖子

沙发
shexujia|  楼主 | 2011-8-9 15:50 | 只看该作者
已自救成功。问题出在空置的那7个数据口是有2个需要接高电平才是,见PDF。谢谢捧场

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

23

帖子

1

粉丝