基于AT91RARM的功放闭环数字控制设计与实现

(整期优先)网络出版时间:2013-06-16
/ 3

基于AT91RARM的功放闭环数字控制设计与实现

江海洲

江海洲陕西烽火电子股份有限公司产品研究所

摘要:随着通信系统的发展,要求通信具有更高的传输可靠性、更强的抗干扰能力。在无线信号发射过程中,射频信号必须经功放放大,再经天线发射出去,信号经功放后的幅度和稳定性对通信的可靠性和抗干扰起着关键作用。功放输出信号的幅度越大通信距离就越远,接收的准确性就越高,通信效果就越好。在发射端,功放输出功率控制一方面需要保证功放的安全可靠,另一方面又要尽可能使功放输出功率最大。因此,对功放的输出功率控制就显得十分重要。

关键词:功放闭环控制ALCADDA

一、概述

本文提出一种基于ARM的数字闭环功放控制系统,通过检测正、反向功率采样输入电压,确定输出功率上升或下降的最佳步径,按照该步径增加或者减少ALC输出幅度,从而达到对功放输出功率的控制,并实时检测输出功率是否超过额定输出功率,如超过额定输出功率,根据求出的最大上升或下降步径进行相应的调整,及时将功放输出功率调整到额定功率,这样形成一个闭环控制系统。由于采用ARM为处理核心,处理速度和计算精度都得到保证。这样既能保证功放的安全可靠又可以使功放尽量输出可发射的最大功率。

二、系统硬件结构

整个系统由AT91R40008、MAX1295、TLV5639I等组成,系统框图如图1所示。

图1系统结构图

从图1可以看出,ARM是核心控制单元;激励信号经过ALC输出控制后到功放,再经过天线发射出去。AD转换MAX1295负责采集功放的正向和反向电压值,将电压值回送到ARM,ARM根据正、反向功率采样输入电压值进行功放控制,通过DA转换TLV5639I输出ALC控制电压,从而以达到对功放输出功率的控制。Flash保存ARM所需要的程序,供ARM上电调用。ARM对MAX1295、TLV5639I以及Flash都是经过ARM的EBI接口连接,EBI接口是ARM的外部总线接口(ExternalBusInterface),可以方便的和外部Flash、并口AD、DA等设备连接。

三、闭环控制算法

通过比较系统行为(输出)与期望行为之间的偏差,并消除偏差以获得预期的系统性能,既存在由输入端到输出端的信号前向通路,也包含从输出端到输入端的信号反馈通路,两者组成一个闭合的回路,因此称为闭环控制系统。在实际控制过程中,当正向功率较大时,若反向功率也较大,表示此时功放和天线调谐失调,应迅速降低增益,使功放输出幅度减小;若反向功率较小则适当降低增益值。当正向功率较小时,若反向功率较大,则保持增益值不变;若反向功率较小,则逐渐提高增益值,使功放输出幅度恢复到设定值。ARM中的功放闭环控制程序流程如图2所示。

图2功放闭环控制程序流程图

四、软件实现

#defineDAC_TLV5639_REG_PIN13

#defineDAC_TLV5639_LDAC_PIN12

#defineDAC_TLV5639_CFG0x0011//DA配置值

#defineDAC_TLV5639_ALC(*(volatileINT16U*)0x00800000)//CS1

#defineADC_CH_FWDPWR0u//正向功率采样

#defineADC_CH_REVPWR1u//反向功率采样

#defineADC_MAX1295_CFG0x98//AD配置值

#defineADC_MAX1295(*(volatileINT16U*)0x00C00000)//CS2

typedefstruct

{

INT16Upow_max;//正向功率最大值

INT16Upow_min;//正向功率最小值

INT16Upow_maxref;//反向功率最大值

INT16Uad[2];//正、反向功率采样AD转换值存储

INT16Ualc_out;//ALC输出控制值

INT8Urt;//设备收、发控制标识

}TCAdDa;

TCAdDaBsp_Ad_Da;//定义功放控制全局变量

INT8Uch_ad;//定义AD转换模拟输入通道选择全局变量

voidAdDa_Init(void)

{

ch_ad=ADC_CH_FWDPWR;

Bsp_Ad_Da.ad[0]=0;

Bsp_Ad_Da.ad[1]=0;

Bsp_Ad_Da.pow_min=2162;

Bsp_Ad_Da.pow_max=2180;

Bsp_Ad_Da.pow_maxref=255;

Bsp_Ad_Da.rt=1;

Gpio_Config(DAC_TLV5639_REG_PIN,0,1,1);

Gpio_Config(DAC_TLV5639_LDAC_PIN,0,1,1);

OSTimeDly(OS_10ms);

DAC_TLV5639_ALC=DAC_TLV5639_CFG&(0xfff);

OSTimeDly(OS_10ms);

Gpio_SetValue(DAC_TLV5639_REG_PIN,0);

Gpio_SetValue(DAC_TLV5639_LDAC_PIN,0);

Gpio_Config(ADC_MAX1295_INT_PIN,0,0,1);

OSTimeDly(OS_10ms);

ADC_MAX1295=(ADC_MAX1295_CFG&0xff)|ADC_CH_FWDPWR;

OSTimeDly(OS_10ms);

TC1_Init();

}

voidTC1_Init(void)

{

Pow->PS_PCER=(Pow->PS_PCER)|bit5;//T1设备时钟时能

Tcb->BCR=1;

Tcb->TC[1].CCR=bit1;

Tcb->TC[1].IDR=0xFFFFFFFF;

Tcb->TC[1].CMR=0x4104;//0x4104:clk/1024

Tcb->TC[1].CCR=bit0;

Tcb->TC[1].RC=3;

Tcb->TC[1].IER=bit0|bit4;

Tcb->TC[1].CCR=bit2;

Tcb->TC[1].CV=0x0;

Tcb->BMR=0x0;

Aic_Set_VEC(__TC1_IRQ__,AdDa_AdIsr,__IRQ_NEGATIVE_EDGE__|7);

Aic->EOICR=Tcb->TC[1].SR;

}

voidAdDa_AdIsr(void)

{

switch(ch_ad)

{

case0:

Bsp_Ad_Da.ad[0]=(INT16U)(ADC_MAX1295&0xfff);

ADC_MAX1295=(ADC_MAX1295_CFG&0xff)|ADC_CH_REVPWR;

ch_ad=ADC_CH_REVPWR;

break;

case1:

Bsp_Ad_Da.ad[1]=(INT16U)(ADC_MAX1295&0xfff);

ADC_MAX1295=(ADC_MAX1295_CFG&0xff)|ADC_CH_AGC_AD1;

ch_ad=ADC_CH_FWDPWR;

break;

default:

break;

}

if(Bsp_Ad_Da.rt==0)

{

AdDa_Alc();

}

Aic->EOICR=Tcb->TC[1].SR;

}

voidAdDa_Alc(void)

{

registeru_intr;

registeru_intrpx;

if(Bsp_Ad_Da.ad[0]>Bsp_Ad_Da.pow_max||Bsp_Ad_Da.ad[1]>Bsp_Ad_Da.pow_maxref)//减功率

{

rpx=0;

r=0;

if(Bsp_Ad_Da.ad[1]>Bsp_Ad_Da.pow_maxref)

{

rpx=Bsp_Ad_Da.ad[1]-Bsp_Ad_Da.pow_maxref;

}

if(Bsp_Ad_Da.ad[0]>Bsp_Ad_Da.pow_max)

{

r=Bsp_Ad_Da.ad[0]-Bsp_Ad_Da.pow_max;

}

if(rpx>r)

r=rpx;

if(r<8)

r=1;

if((Bsp_Ad_Da.alc_out+r)<0x2000)

Bsp_Ad_Da.alc_out+=r;

else

Bsp_Ad_Da.alc_out=0x1fff;

AdDa_Write(Bsp_Ad_Da.alc_out);

}

else

{

if((Bsp_Ad_Da.ad[0]<Bsp_Ad_Da.pow_min)&&Bsp_Ad_Da.alc_out>0)//增功率

{

if((Bsp_Ad_Da.ad[1]+0x80)>Bsp_Ad_Da.pow_maxref)

return;

r=Bsp_Ad_Da.pow_min-Bsp_Ad_Da.ad[0];

r=r>>1;

if(r<16)

r=1;

if(Bsp_Ad_Da.alc_out>r)

Bsp_Ad_Da.alc_out-=r;

else

Bsp_Ad_Da.alc_out=0;

AdDa_Write(Bsp_Ad_Da.alc_out);

}

}

}

voidAdDa_Write(INT16Udat)

{

DAC_TLV5639_ALC=(dat&(0xfff));

}

五、总结

本文介绍了对发射机功放输出功率进行控制的闭环控制算法、软件实现,以及系统组成。通过计算正、反向功率检测电压,确定允许功放输出功率升、降的最大步径来控制功放输出功率。整个系统采用ARM、AD转换MAX1295和DA转换TLV5639I来实现,经过短波系统测试,基于闭环控制算法的功放输出效率明显高于其他典型的线性控制算法,在确保功放安全的前提下,对提高功放的效率具有实用价值。

参考文献:

(1)AT91ARMThumbMicrocontrollersAT91R40008ElectricalCharacteristics

(2)MAX1295265ksps6-Channel12-BitADCsWith+2.5VReferenceAndParallelInterfaceUseInformation

(3)TLV5639I12-BitDigital-To-AnalogConvertersWithInternalReferenceAndPowerDownUserGuide

(4)李驹光ARM应用系统开发详解北京:清华大学出版社2004

作者简介:江海洲(1978-),男,陕西凤翔人,陕西烽火电子股份有限公司产品研究所工程师。