APP下载

基于Cortex M0+的超低功耗多路高精度数字频率测量仪的设计

2015-05-30王静郑晖晖

科技资讯 2015年27期
关键词:高精度

王静 郑晖晖

摘 要:该文设计的频率测量仪选用通用的集成前端处理电路,从超低功耗高精度着手,其核心控制模块为当前最新推出的微功耗ARM Cortex M0+处理器,主要是利用其多路高速定时器/计数器功能完成在单位时间内频率的计算工作,并利用信号整形和放大电路完成对待测信号的处理。测量得到的值,采用动态显示的方式通过LED显示器显示出来。

关键词:高精度 微功耗 频率测量仪 ARM Cortex M0+

中图分类号:TN 915.6 文献标识码:A 文章编号:1672-3791(2015)09(c)-0055-02

随着科学技术和计算机技术的快速发展,频率的测量显得越来越重要,测量频率的方法也日趋多样,在测量性能提升的同时,设计的成本与复杂度也不断提高。而频率测量仪器功能也从单一的频率测量,变得更丰富。

该文所设计的频率测量仪选用通用的集成前端处理电路,从超低功耗高精度着手,其核心控制模块为当前最新推出的微功耗ARM Cortex M0+处理器,主要是利用其多路高速定时器/计数器功能完成在单位时间内频率的计算工作,并利用信号整形和放大电路完成对待测信号的处理。测量得到的值,采用动态显示的方式通过LED显示器显示出来。

1 基于Cortex M0+的功能模块电路设计

Cortex M0+控制模块、LED数码管显示器模块、信号发生与调理模块、计数模块、电源模块等构成了数字显示的频率测量仪。

高精度频率测量仪,需要自制信号源,并能够正常输出正弦波、方波、三角波,故选用精密函数发生器ICL8038。

该设计使用LED显示电路,频率计数显示要精确到小数点后面2位,因此需要有4个LED显示器,又综合考虑CPU的处理速度和电源的使用效率等其它因素,该设计的频率测量仪采用动态显示方式,该设计的计数电路由74LS290构成。

信号的放大、整形电路是将其他信号如正弦波、三角波信号转换成脉冲信号,这个功能是靠施密特触发器或者单稳态触发器来完成的。

该电路使用集成芯片LTC3638、CN302实现电源充放电的管理,对锂电池进行充电,锂电池的饱和电压为4.2 V。通过设置LTC3638的外围电路将LTC3638的输出电压设置为4.2 V。

2 基于UC/OS II的嵌入式软件设计

2.1 软件设计规划

2.1.1系统移植

该设计将在MCU中移植UC/OS II(Micro Control Operation System Two),进行任务调度,实现实时2路频率的测量、显示。

2.1.2信号处理

頻率计开始工作以及频率测量的过程,需要对程序进行初始化操作。除了包含中断控制初始化和定时器/计数器控制模式初始化过程外,还包括初始化堆栈指针(SP)和通用工作寄存器。

2.1.3中断控制

中断控制是当CPU执行相应的程序,Cortex M0+接收到中断源的中断响应信号,使Cortex M0+停止当前任务,执行能够引起响应的中断服务程序,当中断服务程序执行完毕后,回到刚才暂停程序的位置,继续执行相应的程序。

2.2 系统资源

Cortex M0+处理器采用了三级流水线的冯·诺伊曼结构(Von Neumann architecture)。它是基于一个32位处理器的内核,特点是集成度高、而且功耗非常低。

2.3 系统移植

2.3.1 Cortex M0+的启动代码

启动代码包括:初始化堆栈,初始化异常向量表,定义异常入口函数及复位异常响应代码。

2.3.2 Systick启动

在移植系统之前,我们需要先启动Systick异常,启动的目的是为系统提供一个可以使系统能够处理延时或者超时等与时间有关的事件的周期性的信号源。

(1)Systick使能与优先级分配。

在内核启动之后,可进行Systick异常的使能和优先级分配。

(2)Systick异常处理函数。

Systick异常处理函数每次响应时都调用了OSTimeTick。OSTimeTick做了两件事情:一是给OSTime加1,二是将等待任务的剩余时间值减1,并将等待时间为0的任务进入就绪状态,运行其最高优先级任务。

2.3.3 OS初始化和启动

在OS启动时,需要根据内核的不同进行任务堆栈的初始化,多任务的启动。

(1)任务堆栈初始化。

(2)多任务的启动。

(3)MSP与PSP切换。

2.3.4 任务切换

(1)任务切换函数OSCtxSw。

任务切换函数OSCtxSw作用就是保存被中止运行任务的断点和恢复待运行任务的断点并启动它。因此这个函数中主要是一系列的压栈和出栈操作。

(2)中断任务切换函数OSIntCtxSw。

OS在完成中断服务程序后,并不一定回到被中断的任务,而是进行一次中断调度来决定是返回被中断任务还是调用一个更高优先级任务。而此刻函数OSIntCtxSw是用来完成任务切换工作。该函数一般用在中断服务程序的末尾,它的作用是用来保护被中止运行程序的断点,如果已经在中断服务程序的前段完成了此工作的话,那么它的工作只是恢复待运行任务的断点。

2.4 多中断处理

(1)优先级定义。

(2)中断编号定义与中断使能。

(3)优先级分配。

(4)多中断响应程序编写。

(5)多中断响应问题小结。

①中断响应启动HardFault_Handler异常。

②中断嵌套后并未返回运行系统。

2.5 应用层总体设计

本设计其主程序流程图如图1所示。

2.6 部分关键子程序算法

2.6.1 中断检测

可采用同步法测量。

2.6.2 数码转化

因为Cortex M0+测量频率的结果是以10进制的形式显示出来的,但是测量的数据是以2进制的形式计算,并以16进制的形式存储在RAM里的,所以在显示之前还需要将数据进行转换。

2.6.3 数码显示

显示程序分为7种模式,分别对应6组不同数据范围的高位或低位消隐,以及一种错误模式显示。display00子函数为小数点后两位显示程序,当测量数据小于1 000时,对小数显示程序进行调用,使测量结果显示两位小数。

为了确保系统能工作正常,就要对电路重要部分仿真,即我们把波形整形电路、分频电路进行了仿真,Proteus软件是非常好的Cortex M0+的仿真软件。我们采用安捷伦33 500B任意波形发生器作为标准信号输入,进行系统测量精度的测试,最后我们还要进行误差分析、系统噪声控制、系统功耗分析。

参考文献

[1] 史坡,廉德宇,沈昱明,等.一种精确频率测量仪设计[J].仪器仪表学报,2006,27(S2):1532-1533.

[2] 何铮,周娜.智能家居基于 Cortex M3/M0的感知与控制子网设计[J].单片机与嵌入式系统应用,2014(12):25-27.

[3] 朱锦明.基于Cortex-M0+内核的KE02微控制器的应用研究[D].苏州大学,2014.

[4] 张如芹.Cortex-M0单片机二—十进制整数转换的快速算法[J].单片机与嵌入式系统应用,2013,13(7):32-33.

猜你喜欢

高精度
高抗扰高精度无人机着舰纵向飞行控制
船载高精度星敏感器安装角的标定
基于高精度测角的多面阵航测相机几何拼接
高精度免热处理45钢的开发
高精度VLBI技术在深空探测中的应用
DFD-1500I高精度自动检重秤