微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 血流检测仪的动态电源管理模块设计

血流检测仪的动态电源管理模块设计

时间:06-25 来源:EDN 点击:


  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具体值为:

  (3)power_44b0_ioctl()函数设计

  函数原形:static int power_44b0_ioctl (struct inode *inode, struct file *filp,unsigned int cmd, unsigned int arg)。

  功能说明:设备ioctl的操作函数。

  参数说明:inode,文件指针,执行操作类型,根据操作类型指定不同参数。

  返回值:0表示成功,否则返回ENOTTY。

  判断cmd的值,根据cmd的不同值进行不同的操作,电源设备的ioctl主要实现以下14种操作:

  (4)power_key_44b0_interrupt

  函数原形:static void power_key_44b0_interrupt(int irq, void *dev_id, struct pt_regs *regs) 。

  功能说明:响应关机键,进入stop模式。

  参数说明:中断号,设备id,寄存器结构。

  下面介绍函数的算法描述。

  在正常状态下:

  2 总结

  仪器配置2200mAh的镍氢电池,经过测试,电源管理模块使整个系统的功耗降低了60%。系统在数据采集状态下,由电池的输出电流为220mA左右;如果处于IDLE状态,则电流总消耗为80mA;在STOP状态(关闭ARM和所有设备,维持一个32768 Hz的时钟),电流可降到10mA。实验表明,利用动态电源管理,可对便携式医疗仪器实现有效电源管理。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top