医用动态电源管理模块设计方案
1.2.1 驱动提供接口
系统硬件电源管理模块为系统电源管理功能的实现提供必要的硬件基础,并为驱动程序提供如下编程接口:
◆ 系统供电方式接口,通过此接口驱动和应用程序,可知道系统此时是由电池供电还是由外接电源供电;
◆ 电池电量检测接口,通过此接口驱动程序可检测到系统的电量,应用程序由此可实现系统电池电量的显示及电池电量报警等功能;
◆ 电池充电状态,当系统使用外接电源供电时,可对系统中的电池充电,通过此接口驱动可获取电池的充电状态(正在充电或电池已充满);
◆ 电池温度检测接口,通过此接口驱动程序可检测到电池的温度,电池温度和电池电量相结合可用来计算电池的使用时间,同时在电池过热(电池有问题)时向用户报警,提醒用户关机或更换电池。
电源管理驱动部分主要给上层提供如下接口。
(1)取得电池电量及系统用电情况
通过端口ADC1读取电池电压。上限电压为4.2 V,下限电压为3.6 V ,报警电压为3.6 V,强行关机电压为3.4V。数据电压关系:1024-5 V ;0-0 V。
电池充电管理由硬件实现,但在电池充电到4.2 V时,延时30min关闭充电功能(应用层完成)。
控制端口为GPC1,1为外部电源供电,0为电池供电。在系统接有外接电源时,系统由外部电源供电。
(2)电池充电控制
控制端口为GPA9,0为充电,1为关闭充电,当电池电源低于3.8 V时,GPA9设为0,开始充电(应用层完成)。
5V电源只用于数据采集,非数据采集状态下关闭5 V电源(在ADC中实现)。控制端口是GPC2,0为打开,1为关闭。
(3)假关机
关机状态下,只关闭键盘灯和液晶屏,但系统仍处于正常运行状态。关闭键盘灯、液晶屏以及其他外设的工作由上层软件实现。
1.2.2 程序流程
uClinux启动时调用module_init(Power_44b0_init)函数,进而power_44b0_init被调用,进行相关的初始化:
◆ power0_44b0_reg_init()初始化硬件寄存器;
◆ power_44b0_device_register()注册power_44b0_fops以及中断处理函数power_key_44b0_interrupt(),并且初始化定时器power_down_timer;
◆ 用户程序通过power_44b0_open()函数打开/dev/power设备,通过power_44b0_release()函数释放/dev/power设备,通过power_44b0_ioctl()函数实现对设备的各种操作;
◆ 关机进入stop模式,通过中断处理函数power_key_44b0_interrupt()处理关机键对应的中断,按下关机键后用power_down_timer计时,当3s后,power_down_timer对应的动作power_down_timer_call()发生,从而进入stop模式。
1.2.3 接口设计与接口函数实现
(1)数据结构说明
电源和设备状态由power_status_t的结果表示。

(2)file_operations的值
电源管理模块驱动的file_operations具体值为:

评论