醫用動態電源管理模塊設計方案
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中實現)??刂贫丝谑荊PC2,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具體值為:








評論