基于C8051F060单片机控制AD9833实现FSK调制
扫描二维码
随时随地手机看文章
在数字信息传输中,基带数字信号通常要经过调制器调制,将频率搬移到适合信息传输的频段上。2FSK就是用数字信号去调制载波的频率(移频键控),由于它具有方法简单、易于实现、抗噪声和抗衰落性能较强等优点,因此在现代数字通信系统的低、中速数据传输中得到了广泛应用。
直接数字频率合成技术(DDS)将先进的数字处理技术与方法引入信号合成领域。DDS器件采用高速数字电路和高速D/A转换技术,具备频率转换时间短、频率分辨率高、频率稳定度高、输出信号频率和相位可快速程控切换等优点,可以实现对信号的全数字式调制。
DDS芯片——AD9833的介绍
AD9833是一块完全集成的DDS芯片,仅需要1个外部参考时钟、1个低精度电阻器和一些解耦电容器就能产生高达12.5MHz的正弦波。除了产生射频信号外,该电路还广泛应用于各种调制解调方案,这些方案全都用在了数字领域。
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 。
硬件电路连接
本设计用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输出的正弦波信号再经低通滤波后输出。
软件控制
写数据到控制寄存器
单片机传送数据到AD9833的时序如图3所示:FSYNC引脚是使能引脚,电平触发方式,低电平有效。进行串行数据传输时,FSYNC 引脚必须置低,这种情况下,16个SCLK的下降沿数据被送到AD9833的输入移位寄存器。在第16个SCLK的下降沿FSYNC可以被置高,当然,也可以连续加载多个16位数据,仅在最后一个数据的第16个SCLK的下降沿时将FSYNC置高。需要注意的是,在FSYNC开始变为低前(即将开始写数据时)),SCLK必须为高电平。
单片机写16位数据到AD9833时,高位在前,低位在后。用软件模拟时钟信号和片选信号。传送数据的程序如下:
SCLK =1; //时钟信号
FSYNC=1;
Delay(100) ; 延时子程序
FSYNC=0; //片选有效
for(i=0;i<16;i++)
{ SDATA=datas&0x8000;
SCLK=0; //时钟信号下降沿数据送入I/O口。
Delay(50) ;
SCLK=1;
datas=datas<<1; //16位数据从高位到低位送入
}
Delay(50) ;
FSYNC=1;
SCLK=0;
数据写入方式
设置控制寄存器中的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所示。
选择频率寄存器
由于AD9833片内有2个频率寄存器,即FREQ0、FREQ1,因此要确定是将频率控制字写入哪一个。这可通过设置 D15D14 的值来进行选择,当D15D14=01表示14位的频率字将写入FREQ0;当D15D14=10表示14位的频率字将写入FREQ1。以输出频率为7230Hz为例,介绍写入到频率寄存器1的频率字。
写入低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所示。
实验结果
在示波器上能观测到FSK调制信号,为方便截图,设置频率为7230Hz的正弦信号在示波器上进行观察,图7是频率为7230Hz的正弦信号经过低通滤波之后的频谱图。由图7可以看出,实际输出频率为7.22985Hz。图8是对应的时域图形。
结论
本实验中设计的FSK调制信号,在工程中有较强的实用价值,已成功应用于井下声波传输系统中。