C8051F060在频率合成器中的应用

来源:本站
导读:目前正在解读《C8051F060在频率合成器中的应用》的相关信息,《C8051F060在频率合成器中的应用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C8051F060在频率合成器中的应用》的详细说明。
简介:介绍数字锁相式频率合成器的基本原理,C8051F060单片机与频率合成器ADF4106的接口电路以及C8051F060单片机对频率合成器ADF4106的实时控制方法。

C8051F系列单片机是Silicon Laboratories公司推出的高集成度SoC芯片,采用3.3 V电源系统供电,降低了系统功耗;采用JTAG接口,可以直接进行在线调试。I/O口采用交叉开关方式进行配置,使I/O口应用更加灵活。频率合成器被广泛应用于通信、雷达、仪器仪表等各类仪器中。为了获得较高的输出频率和较小的频率步进量,大多采用双模技术的锁相环频率合成技术。本文介绍了使用Silicon Laboratories公司的单片机C8051F060控制ADI公司的ADF4106频率合成器芯片来实现频率合成器的实时频率控制,其输出频率最高可达到6 GHz。

1 数字锁相式频率合成器的基本原理

数字锁相式频率合成器的基本原理是,应用数字逻辑电路,把调谐振荡器信号f0经过N分频器(即反馈网络)的取样信号fx与参考频率fr在鉴相/鉴频器进行比较,输出电压经环路滤波器作为调谐电压,修正调谐振荡器的输出频率,达到稳定状态,使两个频率差为零(称为“相位锁定”),如图1所示。

C8051F060在频率合成器中的应用

图1 锁相环基本原理框图

AD4106频率合成器的电路原理如图2所示。

C8051F060在频率合成器中的应用

图2 AD4106频率合成器电路原理

它包括4个24位的寄存器:初始化寄存器、功能寄存器、R参考计数器寄存器和N计数器寄存器,其中每个寄存器的低两位为地址位。

频率的算法为: fVCO=(P×B+A)×fREF/R

其中P为预置比例因子在初始化寄存器的DB22、DB23设置,在此取P=64;A、B为通过N计数器寄存器的DB2~DB20设置。R为通过R参考计数器寄存器的DB2~DB15设置,取R=100。A、B的计算方法为:

由N=fVCO/fPFD=P×B+A(其中fPFD=fREF/R)得

B=MOD(N/64)

A=N-B×64

2 C8051F060单片机简介

C8051F060单片机是表贴TQFP100封装。它包括1个8051内核,2个16位A/D转换器,8个8位A/D转换器,2个12位D/A转换器,1个SPI接口,1个SMBus接口,2个UART接口,64 KB Flash,22个中断源。只用1块C8051F060芯片即可实现单片机8051的各种控制,多路A/D转换和D/A转换,I2C、SPI数据总线传输,RS232、RS485串口通信等功能,从而大大减少了元器件的种类,缩小了印制板的面积,节约了成本,提高了系统可靠性;而其交叉开关方式的配置,使I/O口应用更加灵活方便。其原理框图如图3所示。

C8051F060在频率合成器中的应用

图3 C8051F060单片机原理框图

3 AD4106与C8051F060的接口电路

单片机C8051F060与AD4106的接口电路如图4所示。

C8051F060在频率合成器中的应用

图4 AD4106与C8051F060接口电路

单片机C8051F060与AD4106的通信遵循SPI数据总线规则,它可以同时控制多片AD4106,其时序图如图5所示。

4 软件编制与调试

在软件编制时,首先要对单片机C8051F060和AD4106进行初始化。包括对单片机的I/O端口和交叉开关、SPI总线、定时器的初始化,对AD4106的初始化寄存器、功能寄存器、R参考计数器寄存器初始化;以及对AD4106的N计数器寄存器进行赋值,使之输出要求的频率。部分源代码程序如下:

5

图5 SPI总线时序图

void PORT_Init (void) { //I*O端口及交叉开关初始化

char old_SFRPAGE = SFRPAGE;

SFRPAGE = CONFIG_PAGE;//开关置配置页

XBR0= 0x07;

//配置UART0、UART1、SPI、SMBUS、INT0、INT1

XBR1= 0x14;

XBR2= 0x44;

//允许交叉开关,弱上拉全局允许开漏方式

P0MDOUT = 0x15;//允许P0开漏方式

P1MDIN= 0XFF;

P1MDOUT= 0Xf3;//允许P1开漏方式

P2MDOUT= 0X7f;//允许P2口输出为推挽方式

P3MDOUT= 0X17;//设置P3

SFRPAGE= old_SFRPAGE;//还原 SFRPAGE

}

void SPI_Init (void) {//SPI总线端口初始化

char old_SFRPAGE = SFRPAGE;

SFRPAGE = SPI0_PAGE;

SPI0CFG = 0x40;

//MSTEN=1,C8051F060工作于主方式下;CKPHA=0,

//CKPOL=0,上升沿采样,时钟无效时为低电平

SPI0CN = 0x0b;

//使能SPI总线 4线主模式; SPI使能;标志位清0

SPI0CKR = SYSCLK/2/2000000;

SPIEN=1;

SFRPAGE = old_SFRPAGE;//还原 SFRPAGE

}

void Init_pll() { //ADF4106初始化

pll_init=0xddfea3;send_pll(pll_init);

pll_fun=0xddfea2;send_pll(pll_fun);

pll_ref=0x120190;send_pll(pll_ref);

//设置参考频率为100 kHz,晶振频率为10 MHz,R=100

}

unsigned long n_count(float fvco) {

//计算AD4106频率合成器输出频率对应的N值装载值

unsigned long a,b,n,l,m;

n=fvco/0.1;a=n%64;b=n/64;a=a<<2;

b=b<<8;l=0x200001;

m=l|a;m=m|b;

return(m);

}

void send_pll(unsigned long data command) {

//往AD4106频率合成器送数

unsigned int k=0,flag=1,j;

//发送命令给ADF4106,3字节,command的长度为3字节

unsigned char temp[3];

pll_le=0;//开始装载数据

for(j=0;j<5;j++);

for(k=0;k<3;k++)

//将3字节长的数据拆分成3个字节,由高到低分别存储

//在temp[0]、temp[1]、temp[2]中

temp[2-k]=command>>(k*8);

SPI0DAT=temp[0];//发送最高字节

k=1;

while(flag) {

if(SPIF==1) {

//等待发送完毕后,继续发送其他字节

SPIF=0;SPI0DAT=temp[k];k++;

}

if(k==3) {

while(SPIF!=1);//等待全部发送完毕后返回

flag=0;SPIF=0;pll_le=1;//装载数据完毕

}

}

}

当要输出的频率为点频时,只要由输出频率f计算出分频比N,并将控制字送到ADF4106中即可。要实现扫频,首先要确定扫频时间间隔(定时器装入初值);再设置起始频率f1、扫频频率步进值Δf和扫描停止频率f2,然后启动定时器TR0=0,定时时间间隔到后,频率加Δf,TF0清零重新计时,直到设置的终止频率后再回到起始频率,重新从起始频率开始扫频。

结语

C8051F060作为新一代8051单片机,具有功能强大、体积小、工作稳定等特点,适用于复杂控制系统。本文只介绍了其控制频率合成器ADF4106方面的应用,采用C8051F060控制数字锁相式频率合成器ADF4106只是其中一小部分应用,它同时还可应用于许多其他电路,如应用于数据采集电路系统、数字输出电路及各种接口电路等。优点有:速度快,比用传统的单片机速度提高了十几倍;采用3.3 V供电,系统功耗低;可以实现在线调试;采用交叉开关,对I/O端口操作灵活。ADF4106的工作状态可以很方便地通过软件在线监测和控制;可以根据需要对点频和扫频的参数进行设置修改,实现任意点频的稳定输出和扫频输出。目前这一功能已得到广泛应用。

提醒:《C8051F060在频率合成器中的应用》最后刷新时间 2024-03-14 00:56:54,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C8051F060在频率合成器中的应用》该内容的真实性请自行鉴别。