本文目录一览

1,ad9833这个芯片会输出直流吗最近在网上买了一个ad9833的dds模

可以输出直流,它支持0-12.5mhz 当频率设置为零时就是直流
酒吧三三

ad9833这个芯片会输出直流吗最近在网上买了一个ad9833的dds模

2,谁会用AD9833这种芯片

第一:硬件电路图查看AD9833的数据手册中的典型应用即可;第二:本器件无法转换为DIP封装,查看AD9833的数据手册的介绍,自建封装。注意:文中BSC实际为毫米(mm)。

谁会用AD9833这种芯片

3,proteus有ad9833吗

proteus里是没有ad9833的,其实,proteus里的元件只是典型的,常用的。
可以非常遗憾地告诉你,连最新版的7.10里都没有ad9开头的元件。你只能找一个相近的元件仿真一下。如果连相近的也没有,那就没办法了!

proteus有ad9833吗

4,通过硬件SPI设置AD9833输出方波怎么弄延迟关键么SPI写函数已

第一步,查看芯片手册配置SPI工作方式,控制芯片的SPI工作方式必须和AD9833的一样。第二步,使用厂商做好的函数进行AD9833的设置。(我没有用过AD9833)但是带串行接口的芯片一般都需要设置一下,怎么设置需要看AD手册了。第三步,向AD发送你想要输出的数字量吧。

5,基于DDS芯片AD9833的低频信号发生器 DXP原理图怎么画啊

这个芯片是标准的MSOP-10的封装,DXP里面有这个库文件。对于原理图可以参考手册33页评估板的接法,简单说就是单片机接一个SPI口到它;供电;外界一个参考晶振;输出可以根据频率加一些低通滤波器。关于DDS类芯片的使用在ADI有个中文参考文档用这个关键词在google搜索“DDS(Direct Digital Synthesizer)常见问题解答”谢谢!
任务占坑

6,AD9833如何输出锯齿波

你给的是个信号发知生器电路,只有输出信号,是没有外输入信号的;另外,555定时器电路,在其中的定时电容上,也可得到锯齿波的;利用市电,可道采用个带过零点检版测的光耦芯片电路,可得到50Hz的正方波(占空比=50%);通过微分电路,即可获得窄脉冲波,然后再积权分,即可得到你想要的很陡峭的锯齿波了;
有可能是你的负载上有电容,你断开其他的电路,直接去测量ad9833的输出脚就可以了,下面是一个例程,工参考#include "head.h"#include "cpu.h"#include "ad9833.h"//定义延时变量,用于宏ad9833_delay()()unchar ad9833_delay_t;/******************ad9833 延时******************//*宏定义:ad9833_delay() */#define ad9833_delay()\ad9833_delay_t = (ad9833_delay_value);\while ( --ad9833_delay_t!= 0 );\}/************延迟n 个sclk 节拍***************/void delay_n_mclk(unchar n)unchar i,t;for(i=0;i<=n;i++) ad9833_sclk = 1; for(t=0;t<20;t++); ad9833_sclk = ~ad9833_sclk; for(t=0;t<20;t++); }}/******************向单个ad9833 写入一个16位的信息字节******************///ad9833_16 表示写入的信息,which_ad9833 表示写入哪个ad9833;void write_16bit_one(unchar char_1,unchar char_2, unchar which_ad9833_cs)unchar i,t;ad9833_sclk = 1; switch(which_ad9833_cs) //确定片选 case 1: p1=~0x80; break; case 2: p1=~0x40; break; case 3: p1=~0x20; break; case 4: p1=~0x10; break; case 5: p1=~0x08; break; case 6: p1=~0x04; break; default: p1=~0x00; break; }for(i=0;i<8;i++) //对于确定次数的循环建议使用for()结构 if((char_1<{ ad9833_sdata = 1; } else { ad9833_sdata = 0; } ad9833_sclk = 0; for(t=0;t<20;t++); ad9833_sclk = ~ad9833_sclk;//在下降沿写?ad9833_delay(); //_nop_(); ad9833_delay(); for(t=0;t<10;t++); } for(i=0;i<8;i++) //对于确定次数的循环建议使用for()结构 { if((char_2< { ad9833_sdata = 1; } else { ad9833_sdata = 0; } ad9833_sclk = 0; for(t=0;t<20;t++); ad9833_sclk = ~ad9833_sclk;//在下降沿写?ad9833_delay(); //_nop_(); ad9833_delay(); for(t=0;t<10;t++); } p1 = 0xff; } /******************向所有ad9833 写入一个16位的信息字节******************/ void write_16bit_all(unint ad9833_16_data) { unchar t,i; i = 8; ad9833_sclk = 1; p1 = 0xff; //片选 p1 = 0x03; for(i=0;i<16;i++) //对于确定次数的循环建议使用for()结构 { if((ad9833_16_data< { ad9833_sdata = 1; } else { ad9833_sdata = 0; } ad9833_sclk = 0; for(t=0;t<20;t++); ad9833_sclk = ~ad9833_sclk;//在下降沿写?ad9833_delay(); //_nop_(); ad9833_delay(); for(t=0;t<10;t++); while (--t != 0); } p1 = 0xff; //片选拉高 delay_n_mclk(8); } /******************初始化ad9833 ******************/ //主要实现控制寄存器的d8位的reset 置1,使得内部所有寄存器 //初始化为频率为50,相位移为0 void ad9833_init(void) { write_16bit_all_two(0x21,0x00); //reset=1, //write_28bit_one_fr(1, 0, 0x4000,0x0000 );//改freg0 //ad9833_50hz_0ps_init();//初始化为标准三相电源 write_16bit_all_two(0x00,0x00); //reset=0, } /******************初始化为标准三相电源 ******************/ //初始化为频率为50,相位移为0 void ad9833_50hz_0ps_init(void) { write_28bit_one_fr(1, 0, 0x6a,0x40,0x40,0x13 );//改freg0 write_28bit_one_fr(1, 1, 0xaa,0x40,0x80,0x13);//改freg1 write_12bit_one_pr(1, 0, 0, 0,0);//改preg0 write_12bit_one_pr(1, 1, 0, 0,0);//改preg1 } /****************** 向单个ad9833写入12位到某一相位寄存器 ******************/ //if_to_all 0:表示写向单个ad9833;--1:表示写向所有ad9833; //phase_0_or_1 表示写向哪一个相位寄存器--0:表示写向preq0-- 1:表示写向preq1 //phase_12_data: 表示相位信息; //which_ad9833_cs: 若if_to_all=0, 则使用该变量表示写向哪个ad9833 void write_12bit_one_pr(bit if_to_all, bit phase_0_or_1, unchar char_1,unchar char_2,unchar which_ad9833_cs) { unint word_12; if (phase_0_or_1 == 1)//确定写入的14位信息 word_12= char_1 |0xe0; //写向preq1 else word_12= char_1 |0xc0; //写向preq0 if (if_to_all == 1) //写动作 {//写向所有的ad9833 write_16bit_all_two(word_12,char_2); } else //写向单个的ad9833 { write_16bit_one(word_12,char_2,which_ad9833_cs); } } /****************** 改变某个ad9833 频率寄存器的msbs 或lsbs ******************/ //msbs_or_lsbs 0:表示写向单个ad9833的lsbs; 1:表示写向所有 ad9833的msbs; //if_to_all 0: 表示写向单个ad9833; 1: 表示写向所有 ad9833; //freq0_or_1 0:表示写向freq0 1:表示写向freq1 //msbs_or_lsbs_14_data : 表示要写入的内容 //which_ad9833_cs : 如果if_to_all=0, 则使用该变量表示写向哪个 ad9833 void write_14bit_one_fr( bit msbs_or_lsbs, bit if_to_all,unchar freq0_or_1,unchar char_1,unchar char_2,unchar which_ad9833_cs) { unchar word_14_h,control_word_h,control_word_l; if (freq0_or_1 == 1) //确定写入的14位信息 { //写向freq1 word_14_h= char_1 |0x80; } else //写向freq0 { word_14_h= char_2 |0x40; } if(msbs_or_lsbs == 1) //确定控制寄存器的内容 {// 1:表示写向所有ad9833的msbs; control_word_h= 0x10 ; control_word_l = 0x00; } else { // 0:表示写向单个ad9833的lsbs; control_word_h= 0x00 ; control_word_l = 0x00; } if (if_to_all == 1) //写动作 { //写向所有的ad9833 write_16bit_all_two(0x20,0x00); write_16bit_all_two(word_14_h,char_2); } else //写向单个的ad9833 { write_16bit_one(0x20,0x00, which_ad9833_cs); write_16bit_one(word_14_h,char_2, which_ad9833_cs); } } /****************** 向ad9833写入连续的28位到某一频率寄存器 ******************/ //if_to_all 0:表示写向单个ad9833; 1:表示写向所有 ad9833; //freq0_or_1 0:表示写向freq0 1:表示写向 freq1 void write_28bit_one_fr(bit if_to_all, unchar freq0_or_1, unchar low_14_h,unchar low_14_l,unchar high_14_h,unchar high_14_l) { if (if_to_all==1) //写动作 { //写向所有的ad9833 write_16bit_all_two(0x20,0x00); write_16bit_all_two(low_14_h,low_14_l); write_16bit_all_two(high_14_h,high_14_l); } else { //写向单个的ad9833 write_16bit_one(0x20,0x00, freq0_or_1); write_16bit_one(low_14_h,low_14_l, freq0_or_1); write_16bit_one(high_14_h,high_14_l, freq0_or_1); } } ////////////////////替代void write_16bit_all(unint ad9833_16_data), //,一下函数可以用 void write_16bit_all_two(unchar char_1,unchar char_2) { unchar t,i; i = 8; ad9833_sclk = 1; p1 = 0xff; //片选 p1 = 0x03; for(i=0;i<8;i++) //对于确定次数的循环建议使用for()结构 {// _nop_(); if((char_1< { ad9833_sdata = 1; } else { ad9833_sdata = 0; } ad9833_sclk = 0; for(t=0;t<20;t++); ad9833_sclk = ~ad9833_sclk;//在下降沿写?ad9833_delay(); //_nop_(); ad9833_delay(); for(t=0;t<10;t++); } for(i=0;i<8;i++) //对于确定次数的循环建议使用for()结构 { if((char_2< { ad9833_sdata = 1; } else { ad9833_sdata = 0; } ad9833_sclk = 0; for(t=0;t<20;t++); ad9833_sclk = ~ad9833_sclk;//在下降沿写?ad9833_delay(); //_nop_(); ad9833_delay(); for(t=0;t<10;t++); } p1 = 0xff; //片选拉高 delay_n_mclk(8); }

文章TAG:这个  芯片  输出  直流  ad9833  
下一篇