浅谈基于C8051F060单片机控制AD9833实现FSK调制

发布者:自在自由最新更新时间:2013-02-16 来源: dzsc关键字:C8051F060  AD9833  FSK调制 手机看文章 扫描二维码
随时随地手机看文章
    数字调频又称移频键控,简记为FSK,它是载波频率随数字信号而变化的一种调制方式。利用基带数字信号离散取值特点去键控载波频率以传递信息的一种数字调制技术。除具有两个符号的二进制频移键控之外,尚有代表多个符号的多进制频移键控,简称多频调制。一种用多个载波频率承载数字信息的调制类型。最常见的是用两个频率承载二进制1和0的双频FSK系统。由于FSK具有方法简单、易于实现、抗噪声和抗衰落性能较强等优点,因此在现代数字通信系统的低、中速数据传输中得到了广泛应用。

  直接数字频率合成技术(DDS)将先进的数字处理技术与方法引入信号合成领域。DDS器件采用高速数字电路和高速D/A转换技术,具备频率转换时间短、频率分辨率高、频率稳定度高、输出信号频率和相位可快速程控切换等优点,可以实现对信号的全数字式调制。

  DDS芯片--AD9833的介绍

  与传统的频率合成技术相比,DDS技术具有很多优点:频率切换时间短、工作频率范围宽、频率分辨率高、相位变化连续和容易对输出信号实现调制等。DDS主要由标准参考频率源、相位累加器、波形存储器、数/模转换器、低通平滑滤波器等构成。其中,参考频率源一般是一个高稳定度的晶体振荡器,其输出信号用于DDS中各部件同步工作。DDS的实质是对相位进行可控等间隔的采样。

  AD9833是ADI公司生产的一款低功耗,可编程波形发生器,能够产生正弦波、三角波、方波输出。波形发生器广泛应用于各种测量、激励和时域响应领域,AD9833无需外接元件,输出频率和相位都可通过软件编程,易于调节,频率寄存器是28位的,主频时钟为25MHz时,精度为0.1Hz,主频时钟为1MHz时,精度可以达到0.004Hz.可以通过3个串行接口将数据写入AD9833,这3个串口的最高工作频率可以达到40MHz,易于与DSP和各种主流微控制器兼容。AD9833的工作电压范围为2.3V-5.5V.AD9833还具有休眠功能,可使没被使用的部分休眠,减少该部分的电流损耗,例如,若利用AD9833输出作为时钟源,就可以让DAC休眠,以减小功耗,该电路采用10引脚MSOP型表面贴片封装,体积很小。

  AD9833的内部电路包括数字器件和模拟器件两部分。主要由相位累加器(由加法器和相位寄存器组成)、ROM波形查询表、数模转换器DAC和低通滤波器LPF构成。AD9833的基本结构原理如图1所示。其中M为频率控制字、FMCLK为时钟频率,相位累加器在时钟FMCLK的控制下以步长M作累加,相位寄存器的输出与相位控制字相加后输入到正弦查询表地址中。正弦查询表包含1个周期正弦波的数字幅度信息,每个地址对应正弦波中0°~360°范围内的1个相位点。查询表把输入的地址相位信息映射成正弦波幅度的数字量信号S(n),经D/A转化器变成阶梯波S(t),再经低通滤波器平滑后就可得到合成的信号波形。其形状取决于波形ROM中存放的幅码,因此用DDS可以产生任意波形。输出正弦波频率为:fOUT=M(fMCK/228),其中,M为频率控制字,由外部编程给定,其范围为0≤M≤228-1 .

图1 AD9833的基本结构原理图

  硬件电路连接

  本设计用Silicon Labs公司推出的完全集成的混合信号片上系统C8051F060来控制AD9833,C8051F060有大量的数字资源需要通过4个低端I/O端口P0、P1、P2和P3才能使用。P0、P1、P2和P3的每个引脚既可定义为通用的端口I/O引脚,又可以分配给一个数字外设或功能(例如:UART0或INT1)。不管引脚被分配给一个数字外设或是作为通用I/O,总是可以通过读相应的数据寄存器得到端口I/O引脚的状态。

  AD9833与单片机C8051F060连接时,使用单片机的3个I/O口和AD9833连接。FSYNC(控制输入,低电平有效)与单片机的可编程管脚P0.7连接,SCLK(串行时钟输入)与可编程管脚P0.4连接,SDATA(串行数据输入)与可编程管脚P0.5连接。三个可编程管脚都可用软件编程实现数据的传送。硬件电路连接如图2所示,单片机产生控制信号和波形参数,通过串行接口将数据传送到AD9833,经AD9833输出的正弦波信号再经低通滤波后输出。

图2 硬件电路连接[page]

  软件控制

  写数据到控制寄存器

  单片机传送数据到AD9833的时序如图3所示:FSYNC引脚是使能引脚,电平触发方式,低电平有效。进行串行数据传输时,FSYNC 引脚必须置低,这种情况下,16个SCLK的下降沿数据被送到AD9833的输入移位寄存器。在第16个SCLK的下降沿FSYNC可以被置高,当然,也可以连续加载多个16位数据,仅在最后一个数据的第16个SCLK的下降沿时将FSYNC置高。需要注意的是,在FSYNC开始变为低前(即将开始写数据时)),SCLK必须为高电平。

图3 串行时序

  单片机写16位数据到AD9833时,高位在前,低位在后。用软件模拟时钟信号和片选信号。传送数据的程序如下:

  数据写入方式

  设置控制寄存器中的D15D14=00,表示数据写入控制寄存器;设置B28(D13)=1,表示28位数据可以连续写入频率寄存器,默认先写入低14位频率字,再连续写入高14位频率字到频率寄存器中;设置B28(D13)=0,表示28位数据分两次写入频率寄存器,此时配合 HLB 的值使用(当HLB=1时允许高14位频率字写入到频率寄存器,当HLB=0时允许低14位频率字写入到频率寄存器)。因此写入到控制寄存器的数据可为:0010 0000 0000 0000,表示设置连续28位频率字。数据写入流程图如图4所示。

图4 数据写入流程图

  选择频率寄存器

  由于AD9833片内有2个频率寄存器,即FREQ0、FREQ1,因此要确定是将频率控制字写入哪一个。这可通过设置 D15D14 的值来进行选择,当D15D14=01表示14位的频率字将写入FREQ0;当D15D14=10表示14位的频率字将写入FREQ1.以输出频率为7230Hz为例,介绍写入到频率寄存器1的频率字。[page]

  写入低14位数据为:1011 0110 0001 1110,表示将低14位频率字写入FREQ1.

  写入高14位数据为:1000 0000 0000 1011,表示将高14位频率字写入FREQ1.

  主程序设计

  首先,对C8051F060单片机初始化,这包括单片机晶振初始化、端口初始化,定义控制AD9833的I/O接口及交叉开关,接着初始化AD9833.当AD9833初始化时,为避免DAC产生虚假输出,RESET必须置为1(RESET不会复位频率、相位和控制寄存器),直到配置完毕,需要输出时才将RESET置为0;RESET为0后的8-9个MCLK时钟周期可在DAC的输出端观察到波形。AD9833初始化流程图如图5所示。然后,写频率寄存器0的控制字(0x2000),在进行FSK调制时,AD9833的两个频率寄存器装载不同的频率值,本实验中,频率寄存器0装载低频率6830Hz,频率寄存器1装载高频率7230Hz,通过设置AD9833的控制寄存器的FSELECT位来选择频率寄存器。主程序流程如图6所示。

           

  图5 AD9833初始化              图6 主程序流程图

  实验结果

  在示波器上能观测到FSK调制信号,为方便截图,设置频率为7230Hz的正弦信号在示波器上进行观察,图7是频率为7230Hz的正弦信号经过低通滤波之后的频谱图。由图7可以看出,实际输出频率为7.22985Hz.图8是对应的时域图形。

图7 输出频率为7230Hz的频谱图             图8 频率为7230Hz时域图

  结论

  本实验中设计的FSK调制信号,在工程中有较强的实用价值,已成功应用于井下声波传输系统中。

关键字:C8051F060  AD9833  FSK调制 引用地址:浅谈基于C8051F060单片机控制AD9833实现FSK调制

上一篇:基于单片机的HT1621液晶显示系统设计方法
下一篇:DDS芯片AD9850的工作原理及其与单片机的接口分析

推荐阅读最新更新时间:2024-03-16 13:18

基于stm32的FSK调制解调器的设计
大致要求:设计一个FSK调制解调器,基带信号码速率为2000B/s,载波速率为4khz和8khz,解调信号要能完整还原基带信号。实现方法多种多样,通信领域内调制解调器的设计大多数用的都是硬件电路,鉴于笔者对编程情有独钟(其实笔者还是懂一点电路设计知识的~),所以最终决定用stm32来设计,纯编程实现。看起来高大上,但实际做起来不难,不过有挺多东西要考虑的。 总的设计思路如下: 首先是基带信号的产生,它也是我们要调制和解调的目标。基带信号由一连串随机的码元序列构成,为了模拟随机的码元序列,笔者用定时器设计8位的PN码序列,码元速率为2000B/s。定时器3定时0.5ms,每进入一次中断,变量num加一,设置一次IO引脚电平,
[单片机]
基于stm32的<font color='red'>FSK调制</font>解调器的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved