基于单片机的手持频谱分析方法研究
2019-01-03逯玉宏魏国庆
逯玉宏,魏国庆
(重庆金美通信有限责任公司,重庆400030)
1 引言
近年来,无线频谱分析技术的应用越来越广泛,尤其在无线通信领域显示出强大的优越性,对测量仪器的需求越来越大,要求也越来越高。无线电信号的测量一般分为两大类,一类是在时间轴上直接观察信号的波形,用示波器观察信号的动态变化,但是只能从中观察信号的幅度和瞬时的变换,不能区分信号。另一类是在频域测量信号,能够在频域观察信号所在频段上的噪声范围、频率分量、功率以及信号失真等。无线频谱分析需要依靠进口的频谱分析设备,这种大型的用户终端灵活性较差、成本高、启动时间缓慢,不便于野外环境的使用。故此,提出一种基于C8051F120单片机的频谱测试方法,增加了便利性,成本更低,灵活性更高,改变了一直以来频谱测量需要大型仪器人工手动测试的现状,同时提高了测试效率和准确性[1]。
2 关键硬件电路设计与分析
2.1 系统结构组成
系统设计以小型化、智能化为目标,采用嵌入式结构设计。所涉及的多路电路模块主要包括:C8501单片机主控电路,RS-232串口电路,5×5键盘电路,OLED显示器电路,以及射频模块和天线接口模块。系统设计如图1所示。其核心是选用了C8051单片机作为主控单元,通过RS-232串口与电脑相连接,RS-232串口通信电路采用芯片实现计算机串口与单片机I/O口之间的转换,可以方便完成系统的程序升级和参数标定,将采集到的数据通过TXT文件格式上报备份存贮,并建立一个友好的人机界面,实现数据的记录和查询。OLED显示屏提供用户界面,显现功能选择提示与结果反显。用户通过面板按键设定工作方式,进行功能选择,输入信息[2-3]。
图1 系统总体框图
系统主要包含以下几项功能:频谱扫描分析功能、时域载波分析功能、射频干扰功能。提供扩展通道与测试模式选择,用户可以更换测试模块,分析与产品相关的频谱。
2.2 射频模块
射频模块与单片机通过SPI总线连接,其射频信号的输入可以通过同频段天线或者射频电缆实现。该模块负责完成不同频点的场强值RSSI的生成及测量,它采用一块射频器件及单片机的模拟量采集口AIN0,射频器件用于所支持频段内RSSI值的产生,单片机的ADC可以快速完成RSSI值的抽样采集,采用数组的方式暂存。射频芯片MAX2837的SDI端输出数据的格式见表l所示[4-5]。
表1 MAX2837 SDI脚数据输入格式
射频芯片MAX2837从SPI串行接口输出数据的过程如下:单片机使CS变低并提供时钟信号给CLK,由SDI读取数据结果。CS变低将停止任何转换过程,CS变高将启动一个新的转换过程。如图2所示SPI接口时序图。
图2 SPI接口时序
射频模块在换频时,需要依次配置地址分别为0x13、0x12、0x11这三个寄存器,依次是分频比的整数、小数2、小数1,写给射频模块的时序是5位地址,10位参数。采用查表的方法可以快速的切换频率,但需要很大的存贮空间。若采用公式法,则如下式所示:
其中:DIV RATIO为分频比,fRF为收发频率,取值范围为 2300MHz~2700MHz,Reference_clk 为参考时钟,频率为20MHz。
简化的单片机算法如下式所示:
式中:initdiv为分频比整数部分,frac为分频比小数部分。
通过以上频率字配置,可得到该频率下接收场强值RSSI,射频信号通常是间歇性的,时强时弱,需要将采样到的数据与上次比较判定上升沿、下降沿,取上升沿和下降沿之间的数据求和取平均计算出场强值,保存在频谱缓存中。通过单片机的ADC.0对场强信号RSSI进行采样,在有限的时间内对接收的RSSI值取平均,作为RSSI的有效值,如下式所示:
其中Ui为接收场强信号,N为接收场强数目。
2.3 OLED显示模块
采用的OLED屏JTC12864YE024为水平128点、垂直64点像素。为消除闪烁现象及便于绘图,采用数组disp[8][128]与显示屏像素对应,扫描方式为下高位,从左到右。一个RSSI数据截除直流分量及倍率缩小到63以下,才可以完整显示。在设定坐标系时,显示64行,128列,分别对应纵坐标的0~63,横坐标的0~127。纵坐标值与页码及对应字节数据转换如表2所示。
表2 纵坐标值与页码及对应字节数据转换表
其中page为页码,Y为纵坐标值,BIT为页字节数据所用到的位[6-7]。
屏显公式如下式所示:
其中,disp [ index1 ][j]为显示屏对应的像素值,index1=7-c_d/8=0,1,… ,63,j=0,1,… ,127,authority为显示屏电子像素值表集合,index2=7-c_d%8=0,1,…,63,为显示屏电子像素值表中的查表下标,c_d为场强值,单位为dB。
2.4 键盘模块
键盘模块主要用来扫描信号,由C8051F120单片机的P2口定时置位b_k,依次拉低Y1,读入P1,b_k&=b;置高 Y1,拉低 Y2,读入 P1,b_k&=b;置高Y2,拉低 Y3,读入 P1,b_k&=b;置高 Y3,拉低 Y4,读入P1,b_k&=b;置高 Y4,拉低 Y5,读入 P1,b_k&=b;置高Y5;完成一次扫描工作,输入口P1检测到数据为0x1E,0x1D,0x1B,0x17,0x0F时,b_za为1判定为单键按下动作,同时清零b_za锁定,只输出一次按键标志b_jiana=1。键盘每0.1s扫描一次,不需要延迟消抖部分。以该方法实现键盘,优点是效率高,只采用4个位变量,一个键值变量。依次释放检测标志b_k,当前P1口全高标志b,释放标志b_za,用于出口的键按下标志b_jiana,键值jian,再增加一个变量chang,用于长按识别,键释放时清零,键按下时加1计数,计数到30时,b_za=1,chang=28,输出连续按键信息,如此可便于光标的快速移位及控制参数等变量的快速递变。51系列单片机具有灵活的位变量运算能力,但RAM比较珍贵,如此高效的键盘实现方法也具有创新性。键盘原理图如图3所示。键盘的权位值说明见表3。
图3 5×5键盘原理图
表3 键值权位表
3 系统软件设计与分析
支持8051单片机的C编译器主要有德国Keil Software公司开发的Keil C51编译器,所产生的代码运行速度极高,可内嵌汇编实现混合编程,该测试系统所有程序的编译均采用此款编译器。信号处理部分由单片机C8051F120完成,该单片机具有片内JTAG调试和边界扫描功能,可在线调试,支持断点、单步等,比使用仿真芯片、目标仿真头的仿真系统具有更好的性能,但比起串口调试来,仍表现出调试速度慢的缺点。串口调试就是通过单片机内部的空闲串口,工作于高优先级中断模式,通过UBOOT监控程序配合实现程序更新、当前PC位置查询、RAM特殊功能寄存器修改等功能,必须的通讯串口都是采用PCA模拟的,同时保留串口调试方式。此设计实现了程序不开箱更新,调试效率非常高;主要功能是将采集到的电压还原成实际值,经过倍率计算、区间选择、倒像等处理,将相应的值存入外部静态镜像RAM中,驱动12864OLED屏显[8-10]。
系统的主控流程主要包括了系统初始化、OLED驱动显示、键盘控制、测量模块等几大部分。测试系统各个部分由单片机控制,协调各个模块共同完成频谱检测功能。由定时器2驱动时间节拍。典型的时刻为10μs,另外提供20μs等备选项。考虑到电池供电低功耗的需要,平时操作PCON休眠,ADC采样后将数据按照从大到小的顺序暂存,多次采样后将采样值评估计算保存到频谱表中,切换到下一频点;达到频率上限时,将频谱表中的数据按面板设定的水平分辨率和垂直分辨力写在屏幕的镜像数组中。51单片机处理xram数据效率较为低下,这一部分代码采用汇编优化。另外,在镜像数组中叠加垂直闪烁光标、水平触发门限光标、页眉参数,计算出的射频信号强度等信息后,调用汇编优化过的显示驱动函数还原波形。整体程序流程如图4所示。
图4 主控程序流程图
频谱扫描实现:定频信号,只要在一个频点上驻留的时间与收发周期相当,或频率的变换特别快,总会捕捉到射频信号。频谱测量的原理是,模块在限定的频率范围内以设定的步进量反复切换接收频率,完成RSSI的多次采样存储,检测到信号时RSSI会变大,OLED屏幕上显示为一个或多个波峰;没检测到信号时RSSI值被认为是白噪声,OLED上显示为一条直线。在周期性扫描过程中,一次扫描完成时如果没有采样到理想的波峰,会自动修改接收增益,每频点驻留时间及步进间隔,一般是扫描范围越大,步进间隔也相应增大。如图5所示,在频率为2440.9MHz时,扑捉到了信号,带宽分别为 10MHz、1.75MHz。
图5 频率2440.9MHz时两次捕捉到信号
时域上波形复现:射频模块工作在定频接收模式,以设定的时间间隔采样RSSI值存贮,再按照设定的的倍率显示出来,以此可观测到波形的信号部分,以及收发占空比等信息,如图6所示。
图6 频率为2440MHz的时域波形
射频干扰实现:利用射频模块的小功率发射功能,对正在通信的频点实施干扰,检测设备的抗干扰能力及其他综合能力。如图7所示,在2350MHz频率处的信号已被干扰。
图7 受到干扰的频率2350MHz信号
4 结束语
针对大型的用户终端灵活性较差、成本高、启动时间缓慢、不方便在野外环境使用,设计一种以单片机为核心的频谱测试方法,系统为手持设备,小而灵巧。完成频谱扫描分析功能、时域载波分析功能、射频干扰等功能,结果表明:硬件设备和软件方法可完成频谱分析等基本功能,且操作界面更加简洁,可在工程人员的设备检测工作中担当重用。