- UID
- 1023166
- 性别
- 男
- 来自
- 燕山大学
|
(2)硬件设备驱动模块层:这层是硬件设备驱动模块功能的实现层,对各个硬件设备的驱动在相应的硬件设备驱动模块中完成。分别完成设备的打开、读、写、控制和关闭功能。
为了使程序具有良好的可读性、可维性,采用了结构化程序设计方法,即"自顶向下,逐步求精"的程序设计方法和"单入口单出口"的控制结构,从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图,使每一个模块的功能变单纯而明确,为下一步软件的功能扩充和修改打下了良好的基础。
4 功耗的管理设计
4.1 外设的功耗管理
功耗管理,除CPU 核的控制外,还要保证外设在需要使用时及时上电,使用完后立即关闭,从而达到降低功耗的目的。对外设的功耗管理通过IO 输出口来控制MOS 管的通断,从而打开或关断外部设备的电源。
通信电台的功耗最大,占系统耗电量的比例大,需要严格的计算控制。电台设备从上电启动到关闭分三个阶段:上电启动阶段T1,数据发送阶段T2,等待数据发送阶段T3。
(1)设备上电的时机: 信道编码后,需要发送数据时打开。
(2)设备启动时间T1:设备从上电到可以发送数据需要一个过渡时间,具体的时间值与设备有关,需要看具体设备的手册。
(3)数据发送时间T2:这里的数据发送时间是指数据通过串口发送出去的时间,当数据从串口发出后,程序会返回一个数据发送完毕的信息,T2 时间由接口设备自动控制。
图3 通信设备功耗控制示意图
(4)等待数据发送结束时间T3:有些通信设备带有数据缓冲区,当数据从串口发送给通信设备时,不是立即就将数据发送出去,而是先暂存在数据缓冲区,此时如果立即关闭设备电源,可能有数据没有发送完,所以需要一个等待时间。
(5)设备关电时机:当T3 结束后,立即关闭设备的电源。
实际编程时T1 的值根据具体的设备的数据手册来确定;T3 的值也需要根据具体的设备来调试,以接收端能准确可靠的接收到数据,T3 的值最小为准。
4.2 CPU 核的功耗管理
CPU 核在没有任务可做时要进入低功耗状态STOP 模式,在程序中通过空闲任务连续运行状态来判定。当所有的任务都不运行时,操作系统会自动运行空闲任务,当空闲任务连续运行超过一定的时间后(超过程序中需要的最大等待时间),关闭所有的外设,让CPU进入STOP 模式。具体的实现是将原有的空闲任务程序进行修改,增加一个记数器,当记数到一定的数值(即一定的时间)后,进入STOP 模式。
修改后的OS_TaskIdle 程序如下:
void OS_TaskIdle (void *pdata)
{
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{
OS_ENTER_CRITICAL();
OSIdleCtr++;
OS_EXIT_CRITICAL();
Count = count +1;
If (count > 某个数值)
{ 将CPU 进入STOP 模式;
}
OSTaskIdleHook();
}
}
由于空闲任务随时可能被别的任务抢先,当重新执行空闲任务时,如接着抢先点继续执行,全局变量COUNT 没有被清零,所以在每个任务开始运行或执行结束后,都需要对COUNT 清零,这样可以保证COUNT 重新记数,在FOR 循环语句中,当COUNT 记数到一定值,CPU 将进入STOP 模式。
5 结束语
本RTU 微控制器经过试运行后,功耗满足要求,静态功耗小于500μA/12V,在采用10AH 的蓄电池加太阳能板(容量灵活组合),可以保证系统无日照50 天正常工作。由于采用了μCOS-II 操作系统,并编写了硬件驱动程序的内核接口和用户接口,使程序具有良好的移植性,也方便了应用程序开发人员编写程序。
本文作者创新点:提出了一种基于ARM7 和μCOSII 的RTU 低功耗设计方案。采用ARM7 处理机,又根据RTU 设备工作特点设计了电源功耗管理软件,实现了RTU 高的处理能力、低的功耗及长时间的电池供电。
该设计可大规模应用在全国水情测报系统中,将会有500 万以上的经济效益。 |
|