单片机对ad9854的控制_第1页
单片机对ad9854的控制_第2页
单片机对ad9854的控制_第3页
单片机对ad9854的控制_第4页
单片机对ad9854的控制_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机对ad9854的控制

1数字频率合成自20世纪30年代末开始,频率合成技术开始开发,频率合成已成为网络系统中不可或缺的一部分。现在主要包括三种基本技术:(1)直接式频率合成(DS);(2)锁相环式频率合成(PLL),也叫间接式频率合成;(3)直接数字式频率合成。其中直接式频率合成的频率转换速度快,输出频带宽,可达上千兆赫,频率分辨率可达微赫兹量级,但由于非线性器件引入的杂波成分较多而且很复杂,因此需要大量的滤波器。锁相环式频率合成结构简单、易于集成、输出频带宽、频谱纯度好,但锁相环本身是一个闭环的反馈系统,所以鉴相频率(频率分辨率)与频率转换时间的矛盾难以解决。直接数字式频率合成技术(DirectDigitalSynthesis-DDS)采用全数字技术,是一种新的频率合成方法。DDS是基于相位的线性性质以及相位与幅度的对应关系实现频率合成的。它由相位累加器,相位幅度转换和数模转换器组成。具有频率分辨率高、稳定度高、频率转换速度快、相位噪声低等优点。能够很容易地实现PSK和FSK调制等优势。2集成d/a转换、超高速比较器、4-20倍编程采用AD9854是ADI公司推出的一款单片DDS芯片,具有主要特点:300MHz的内部时钟频率、FSK,BPSK,PSK,CHIRP,AM等操作模式、两个集成12位D/A转换、超高速比较器、4-20倍可编程参考时钟倍乘器、两个48位可编程频率寄存器、两个14位可编程相位偏置寄存器、12位幅度调制和可编程功能等。它采用先进的0.35μm的CMOS工艺,只需要3.3V的电源供应,就可以产生输出频率高达150MHz的同步正交信号,平均每秒产生百万新频率。输出的正弦信号经过滤波后,可以再通过内部比较器转化为方波。其内部的幅度、频率、相位寄存器,可以对输出信号的幅度、频率、相位进行控制。3ad9854中一个加标系统设计采用对AD9854进行控制的单片机是凌阳公司的SPCE061A,它是一款16位的微处理器,CPU的时钟频率可达0.32MHz-49.152MHz,32K字的闪存,2K字的工作静态存储器,总共有32位的I/O端口,分为16位的IOA口和16位的IOB口,每个口都可以单独地进行输入输出设置。但是这款单片机不具有其他单片机的读写时序控制引脚,因此在对AD9854的控制中,需要单独拿出一个引脚作为读写时序引脚。由图1所示,要对其进行控制,首先要搭建好其外部电路,根据我们的实验要求,将REFCLKB脚接上电源,实行单端输入方式。再将S/PSELECT管脚设置为1,采用并行输入输出方式。搭建好外部电路后,开始对AD9854的I/Oupdate信号进行设置,对信号控制是否正确关系着AD9854是否能正常工作。I/Oupdate信号是为了将操作输入的数据从I/O口缓冲寄存器转移到DDS的核心寄存器中而产生的一个由低到高的上升沿。这个信号可以从外部提供,也可以由内部产生。当此信号由外部提供时,我们应将控制寄存器中的INT/EXTUpdateClk位设置为0,此时内部的系统时钟将会与之同步以防止程序寄存器中的数据部分的转移而造成程序执行错误。如要内部自行产生,则要将INT/EXTUpdateClk位设置为1,此时默认的I/OUpdate信号的周期为65×(SYSTEMCLOCKPERIOD×2)。同样内部产生的I/Oupdate信号也可以由32位的UpdatedClock寄存器(地址为16-19)控制,信号的周期公式是(N+1)×(SYSTEMCLOCKPERIOD×2),其中SYSTEMCLOCKPERIOD是1/SYSTEMCLOCK,N是需要往32位寄存器中输入的数值,它的适用范围是1至(232-1)。I/OUpdate信号的高电平的持续时间是8个时钟周期。接下来,对AD9854中的内部的40个寄存器进行设置。其中地址为1D-20的寄存器为32位的控制寄存器,分别对工作模式,比较器,输出幅度,系统时钟等进行了控制。首先,对地址为1D的寄存器进行设置,此寄存器主要控制比较器开关和各个输出通路的开关。在实验中,没有使用到比较器,而且要求各个通路都有输出,因此1D地址的控制寄存器保持默认值10h。地址为1E的寄存器主要控制芯片内部PLL倍乘器的开关以及倍乘器倍数。在实验中,对AD9854的外部使用20MHz的晶振作为振荡源,并将系统工作时钟设定为200MHz,因此要将1E寄存器中的PLLRange位设置为1,由于用到了AD9854的内部PLL倍乘器,所以BypassPLL位设置为0,倍乘器倍数应设置为10,因此1E地址的控制器中的内容应为4Ah。地址为1F的控制寄存器主要控制芯片的工作模式以及I/Oupdate的内外部方式,我们采用的仍然是single-tone模式,而且用的也是内部产生I/Oupdate信号,因此寄存器采用的是默认值01h。地址为20的控制寄存器主要是对输出波形幅值的控制以及在串行输入输出时的一些设置。在实验中,我们采用的是并行输入输出方式,因此对串行的一些设置都默认为0。对于幅值的设置,如果是要AD9854内部产生幅值,则OSKEN位设置为0,OSKINT位设置为1。如果是通过专门的幅值寄存器对输出幅值进行调控,则OSKEN位设置为1,OSKINT位设置为0。实验中,仍然将此控制寄存器的内容设置为默认值20h,通过专门的幅值寄存器对输出幅值进行调节。设置完控制寄存器后,我们再对频率寄存器,幅度寄存器,相位寄存器进行设置。芯片中共有两个频率寄存器,两个相位寄存器。由于我们采用的Single-Tone模式,因此我们只用PhaseAdjust1和FrequencyTuningWord1这两个寄存器。PhaseAdjust寄存器是对产生的波形的相位进行控制,地址为00和01,它是一个14位的寄存器,因此产生的波形的相位具有14位的精度。FrequencyTuningWord寄存器是对波形的频率进行控制,地址为04至09,它的精度为48位,因此我们需要往里面输入48位的频率控制字,频率控制字的计算公式是:FTW=(DesiredOutputFrequency×2N)/SYSCLK。其中N是相位累加器的分辨率,我们在此取48,算出来的频率控制字是一个十进制数字,因此要把它转化为48位的二进制数。通过此寄存器控制的频率范围可从0至1/2的SYSCLK。SYSCLK是芯片的系统时钟。对幅度进行控制的寄存器是地址为21至24的OutputShapeKeyI和OutputShapeKeyQ,它们都是12位的寄存器。在AD9854进行读写操作时,重要的问题是要注意它的读写时序,在实验中,我们未对AD9854进行读操作,所以下面只介绍了写操作的时序。由2图所示,在进行写操作时,可将地址和数据同时写入,在WR引脚接收到一个高电平后,数据和地址被写入。具体的写程序语句如下:*P_IOB_Data=0x0001;*P_IOA_Data=0x1e4a;*P_IOB_Data=0x0000;这条指令是对地址为1e的控制寄存器进行写操作,单片机的IOB0口连接到AD9854的WR引脚。4系统程序设置为了更好的说明16位处理器对AD9854的控制,这里写了一个程序:#defineP_IOA_Data(volatileunsignedint*)0x7000#defineP_IOA_Buffer(volatileunsignedint*)0x7001#defineP_IOA_Dir(volatileunsignedint*)0x7002#defineP_IOA_Attrib(volatileunsignedint*)0x7003#defineP_IOB_Data(volatileunsignedint*)0x7005#defineP_IOB_Buffer(volatileunsignedint*)0x7006#defineP_IOB_Dir(volatileunsignedint*)0x7007#defineP_IOB_Attrib(volatileunsignedint*)0x7008#defineP_SystemClock(volatileunsignedint*)0x7013#defineP_WatchDog_Clear(volatileunsignedint*)0x7012//对单片机I/O地址设置voidmain(){*P_IOA_Dir=0xffff;*P_IOA_Attrib=0xffff;*P_IOA_Data=0x0000;*P_IOB_Dir=0xffff;*P_IOB_Attrib=0xffff;*P_IOB_Data=0x0000;//对单片机I/O口的属性进行操作*P_IOB_Data=0x0001;*P_IOA_Data=0x1600;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x1700;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x1807;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x19CF;*P_IOB_Data=0x0000;//对update信号周期的设置*P_IOB_Data=0x0001;*P_IOA_Data=0x1d10;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x1e0a;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x1f01;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x2020;*P_IOB_Data=0x0000;//对控制寄存器的设置*P_IOB_Data=0x0001;*P_IOA_Data=0x210f;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x22ff;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x230f;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x24ff;*P_IOB_Data=0x0000;//幅度控制*P_IOB_Data=0x0001;*P_IOA_Data=0x0400;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x05ff;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x06ff;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x07ff;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x08ff;*P_IOB_Data=0x0000;*P_IOB_Data=0x0001;*P_IOA_Data=0x09ff;*P_IOB_Data=0x0000;//频率控制while(1){*P_WatchDog_Clear=0x0001;}}程序中,将update信号的周期设置为20μs,得出的控制字为000007CF。将频率控制寄存器中写入00ffffffffff,此数字转换成十进制为1099511627775,代入到频率控制字的计算公式中得出可以得到781.25kHz的频率。用示波器进行测量观察,得到图3波形:由观察到的波形可以看出,update信号的周期为20μs,输出波形的频率为782.9kHz,与初始设定值相一致,可知,实验程序是正确的。5模式2,或达到2个控制位wr的操作凌阳16位单片机可以单独对每个引脚进行输入输出的设置,因此即使它没有专门的读写时序引脚,一样

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论