1 引言
频率是反映信号特性的基本参量之一,频率测量在应用电子技术领域有着重要的地位。测量的数字化、智能化是当前测量技术发展的趋势。数字化处理技术使得测量仪器设备功能完美,但数字处理的实时性受到处理速度的限制,实时测量对电路的处理速度要求越来越高,目前的微控处理芯片发展速度,出现诸如DSP,FPJA等不同领域的应用芯片。作为主要应用于数字语音领域的凌阳SP-CEA061A,有着丰富的硬件资源、可低于3V的工作电压、较低的功耗和高达约50MHz的时钟工作频率,相对于通用的51系列、96系列等单片机,无疑有更佳的性能。特别是SPCE061A内置32k字FLASH存储器、多时基选择定时器、两路D/A转换器和一路A/D转换器,使他在便携式测量仪器中应用更有前景。
2 硬件资源配置
该频率计能测量1Hz-20MHz以上频率的脉冲信号,具有较宽的测量范围,最高输出4位有效显示值,采用4位BCD七段显示码动态扫描输出。其工作框图见图1。图中显示部分采用数码管需增加驱动电路扩大驱动电流,用以保护SPCEA061A。
设置SPCEA061A的工作时钟频率fCPU=fOC=24.576MHz为。利用定时器B(TimerB)定时时间作为频率测量的时基,定时1S,100ms,10ms,1ms,0.1ms五档的脉冲计数时间,定时器B的时钟源和预置寄存器载入数据见标表1,考虑程序工作存在延时存在计数误差,高档位的预置寄存器数据应根据实际情况适当调整校准。定时器A(TimerA)10ms、作为频率测量计数器,被测信号从SPCEA061A的I/O端口B口的IOB2输入。TimerA和TimerB采用FIQ中断工作模式。
设置I/O端口A口的低7位IOA0-IOA6输出BCD七段显示码,IOA7输出小数点。IOA8-IOA10分别输出Hz,kHz,MHz测量单位指示。IOA12-IOA15为动态扫描输出端口,循环选择4位数码管,此时A口的低8位IOA0-IOA7输出对应数字的BCD七段显示码。显示码输出采用中断
3 测量处理流程
频率测量的控制和数据处理由SPCE061A通过程序完成,图2为主程序的流程图。
对单片机进行初始化开始频率测量,首先对测量结果进行判断当前的测量量程是否合适;4位显示数据范围是1000-9999,大于9999判断为超量程,而小于1000为欠量程;根据测量结果的判断依次增加(超量程)和减少(欠量程)测量时间档位,并设置数据相应的小数点位置和单位。对量程合适(1000-9999范围)的结果进行二进制到十进制的转换并译码成七段显示码,加入小数点显示位和单位指示位形成显示码。
显示数据刷新时间是显示结果更新的时间间隔。为了能较好地观测到稳定的显示数据,一般设为0.5s左右更新显示数据。通过对IRQ4的1024Hz中断响应进行计数5000次可获得约0.5s的显示数据刷新时间。在内部RAM中开辟两个显示码存储缓冲区,一个用于存储当前正在译码的显示码,一个用于存储正在输出的显示码。查询显示数据刷新时间寄存计数器,当刷新时间到时,只要互换2个显示码存储缓冲区的首地址就能达到1个指令就能更换多个数据的目的,避免由于中断而造成显示数据出现不一致的状况。更换完显示数据后接着启动计数器TimerA和TimerB进行下一次的测量,频率计每约0.5s测量一次,避免在高频测量时由于测量时间短而造成TimerA和TimerB频率中断占用系统资源。TimerA和TimerB在FIQ中断处理程序中,自动设置停止计数,等待启动状态。
SPCE061A有丰富的中断源,本系统使用了3个中断源:FIQ_TMA,FIQ_TMB和_IRQ4。FIQ用于频率测量,_IRQ4用于动态扫描显示。
图3所示为频率计数测量FIQ中断处理程序流程图。
FIQ有3个中断源,除FIQ_TMA和FIQ_TMB外,还有FIQ_PWM,若产生中断,压栈后采用查询的方式确定中断源。为FIQ_TMA中断,表明计数值大于216-1,肯定超量程,设置1个超量程值50000作为计数结果,并停止计数器计数。为FIQ_TMB中断,为频率测量定时时间到,停止计数器计数。最后读出测量结果,解除中断出栈返回。图4为动态扫描显示IRQ4中断处理程序流程图。
IRQ4有3个4实时时基中断源:4069Hz,2048Hz和1024Hz,选用1024Hz作为动态扫描频率。中断响应后,首先压栈保护,再判断是否为1024Hz时基中断,否则,清除中断出栈返回。若为1024Hz时基中断,先对显示数据刷新计数寄存器累加1,完成0.5s的定时计数。取出当前显示码输出缓冲区首地址,修改循环显示位计数器。输出显示码和显示位码。为了数码显示清晰,IOA口数据修改分三步完成:先清除IOA口数据,使数码管熄灭,再输出显示码,最后输出显示位码。
4 结 语
该频率计的硬件电路简单,容易制作。对SPCE061A加上必要的典型外围电路就可工作,需要接入的电路有:32768的晶体振荡电路、锁相环滤波电路、复位电路和必要的滤波电路。电路可用3V供电。在对SPCE061A进行初始化时,把不用的端口设置为悬浮输入方式,并注意屏蔽其功能。SPCE061A内含看门狗计数器(Watch Dog),WatchDog的清除时间为0.75s,在主程序的循环内必须清除。