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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCAdDa Bsp_Ad_Da; //定义功放控制全局变量
INT8U ch_ad; //定义AD转换模拟输入通道选择全局变量 void AdDa_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);
基于AT91R ARM的功放闭环数字控制设计与实现
发表时间:2013-08-06T16:02:50.577Z 来源:《教育与发展》2013年第6期供稿 作者: 江海洲 [导读] 随着通信系统的发展,要求通信具有更高的传输可靠性、更强的抗干扰能力。
江海洲 陕西烽火电子股份有限公司 产品研究所 摘要:随着通信系统的发展,要求通信具有更高的传输可靠性、更强的抗干扰能力。在无线信号发射过程中,射频信号必须经功放放大, 再经天线发射出去,信号经功放后的幅度和稳定性对通信的可靠性和抗干扰起着关键作用。功放输出信号的幅度越大通信距离就越远,接 收的准确性就越高,通信效果就越好。在发射端,功放输出功率控制一方面需要保证功放的安全可靠,另一方面又要尽可能使功放输出功 率最大。因此,对功放的输出功率控制就显得十分重要。 关键词:功放闭环控制 ALC AD DA
一、概述 本文提出一种基于ARM的数字闭环功放控制系统,通过检测正、反向功率采样输入电压,确定输出功率上升或下降的最佳步径,按照 该步径增加或者减少ALC输出幅度,从而达到对功放输出功率的控制,并实时检测输出功率是否超过额定输出功率,如超过额定输出功 率,根据求出的最大上升或下降步径进行相应的调整,及时将功放输出功率调整到额定功率,这样形成一个闭环控制系统。由于采用ARM 为处理核心,处理速度和计算精度都得到保证。这样既能保证功放的安全可靠又可以使功放尽量输出可发射的最大功率。 二、系统硬件结构 整个系统由AT91R40008、MAX1295、TLV5639I等组成,系统框图如图1所示。

图2 功放闭环控制程序流程图
四、软件实现 #define DAC_TLV5639_REG_PIN 13 #define DAC_TLV5639_LDAC_PIN 12
#define DAC_TLV5639_CFG 0x0011 //DA配置值 #define DAC_TLV5639_ALC (*(volatile INT16U *)0x00800000) // CS1
INT16U pow_max; //正向功率最大值
INT16U pow_min; //正向功率最小值
INT16U pow_maxref; //反向功率最大值
INT16U ad[2]; //正、反向功率采样AD转换值存储
INT16U alc_out; //ALC输出控制值
INT8U rt; //设备收、发控制标识 }TCAdDa;
OSTimeDly(OS_10ms); ADC_MAX1295=(ADC_MAX1295_CFG & 0xff)|ADC_CH_FWDPWR; OSTimeDly(OS_10ms); TC1_Init(); } void TC1_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; } void AdDa_AdIsr(void) { switch(ch_ad) { case 0: Bsp_Ad_Da.ad[0]=(INT16U)(ADC_MAX1295 & 0xfff); ADC_MAX1295=(ADC_MAX1295_CFG & 0xff)|ADC_CH_REVPWR; ch_ad=ADC_CH_REVPWR; break; case 1: 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; } void AdDa_Alc(void) { register u_int r; register u_int rpx;
图1 系统结构图 从图1可以看出,ARM是核心控制单元;激励信号经过ALC输出控制后到功放,再经过天线发射出去。AD转换MAX1295负责采集功放 的正向和反向电压值,将电压值回送到ARM,ARM根据正、反向功率采样输入电压值进行功放控制,通过DA转换TLV5639I输出ALC控制 电压,从而以达到对功放输出功率的控制。Flash保存ARM所需要的程序,供ARM上电调用。ARM对MAX1295、TLV5639I以及Flash都是 经过ARM的EBI接口连接,EBI接口是ARM的外部总线接口(External Bus Interface),可以方便的和外部Flash、并口AD、DA等设备连 接。 三、闭环控制算法 通过比较系统行为(输出)与期望行为之间的偏差,并消除偏差以获得预期的系统性能,既存在由输入端到输出端的信号前向通路, 也包含从输出端到输入端的信号反馈通路,两者组成一个闭合的回路,因此称为闭环控制系统。在实际控制过程中,当正向功率较大时, 若反向功率也较大,表示此时功放和天线调谐失调,应迅速降低增益,使功放输出幅度减小;若反向功率较小则适当降低增益值。当正向 功率较小时,若反向功率较大,则保持增益值不变;若反向功率较小,则逐渐提高增益值,使功放输出幅度恢复到设定值。ARM中的功放 闭环控制程序流程如图2所示。
#define ADC_CH_FWDPWR 0u // 正向功率采样
#define ADC_CH_REVPWR 1u // 反向功率采样
#define ADC_MAX1295_CFG 0x98 // AD配置值 #define ADC_MAX1295 (*(volatile INT16U *)0x00C00000) // CS2 typedef struct {
相关文档
最新文档