4.7 电源管理 第一部分 ---- Windows CE设备驱动开发之电源管理


http://blog.youkuaiyun.com/fenstein/article/details/3746254


原文位置Windows CE 5.0 Documentation中Developing a Device Driver->Power Management目录下

Windows CE设备驱动开发之电源管理

 

4.7电源管理

电源管理模块管理设备电源,从而全面改进操作系统的电源使用效率;它所有设备的电源使用,同时能与不支持电源管理的应用程序及驱动程序共存。

使用电源管理可以有效的减少目标设备的电源消耗,同时,能在运行、空闲、复位及挂起电源状态时维持并保护RAM中的文件系统。

电源管理具有以下特性:

使设备具有自行电源管理功能的框架;

建立一种在系统中使设备电源在挂起和恢复状态间切换的机制;

一个对系统环境、电源状态、设备电源状态有统一认识的模块。你可以定制电源管理模块,使全系统的电源分配适合您的设备;

当系统挂起或恢复时,使系统跳过所有代码调用PowerOffSystem函数。

对于支持电源管理的驱动程序,在设备枚举时应尽量准确的向电源管理模块报告其性能,然后将收到来自电源管理模块的获取或更改其电源状态的请求。对于自行管理电源的设备,必须通过DevicePowerNotify向电源管理模块发送请求来更改电源状态。

电源管理模块与设备在一个正常的线程执行环境中通过调用DeviceIoControl进行通讯。

 

4.7.1、            电源管理架构

在不依赖Windows CE电源管理模型的情况下,只能对设备进行简单的管理。电源管理器为OEM厂商提供了较大的灵活性,同时驱动开发人员也不用为了兼容电源管理模型而牺牲驱动程序性能。在基本的Windows CE电源模型中,在操作系统挂起或恢复时,设备会收到标识信息(notification)。这一标识信息在中断处理时产生,所以设备在挂起状态时可以做什么工作,有多长时间做这一工作被严格限制。下图描述了Windows CE电源管理的结构。

使用电源管理器时,设备会从I/O控制代码(IOCTLs)收到电源状态改变通知。因为IOCTLs在线程中执行,在线程中驱动开发者可以更为灵活的处理电源状态改变。使用IOCTLs还能够区分设备电源状态与系统电源状态。这样,在系统运行时可以将部分设备关闭,而某些设备也可以在系统挂起时一直开启。

除了管理设备电源,电源管理器还向应用程序通知其它与电源相关事件的发生。例如:当系统从挂起状态恢复运行时,电源管理器会向相关应用程序发出通知。

电源管理器是一个名为pm.dll的动态链接库,系统运行时被Device.exe进程直接调用。当电源管理API被调用时,Device.exe调用pm.dll的入口函数。在Platform Builder 4.0及其后续版本中提供了Pm.dll的源代码,OEM厂商可以根据其设备修改Pm.dll。

电源管理器担任设备、应用程序及预定义的操作系统电源状态的仲裁者。电源管理器定义了下列规则,使上述三部分以这些规则进行通讯:

l         系统电源状态限定了所有设备的最大功耗;

l         应用程序以最小功耗来获取指定设备的最低性能等级。

l         当设备功耗在其最大功耗与最小功耗范围内时,电源管理器允许设备自行管理其电源。

l         如果最小功耗高于最大功耗,那么,在应用程序请求设备运行期间,设备电源将持续提升。

l         设备可以在一个或多个电源状态下运行。电源状态以有限的数字表示。详见设备电源状态章节。

l         系统转为挂起状态后,对应用程序有用的最小功耗将被取消。

l         系统电源状态是描述所有设备中最大的设备电源状态。系统电源状态由OEM厂商定义,并在注册表中描述,同时,在电源管理器中可以加入部分支持代码。OEM厂商可以定义任意数量的系统电源状态。详见系统电源状态章节。

在电源管理器框架内部,OEM厂商可以定义系统电源状态来设定最大设备电源状态。设备调用DevicePowerNotify来控制其电源等级,应用程序调用SetPowerRequirement来确认它们需要使用的设备是否正在合适的性能等级运行。

 

4.7.1.1              电源管理器和ACPI/APM

电源管理器并不涉及高级配置与电源接口(ACPI)或高级电源管理(APM)。ACPI规范将系统电源状态定义为一个从高功率/高性能到低功率/低性能的线性集。Windows CE电源管理器允许OEM厂商定义任意数目的系统电源状态,但并不要求定义的系统电源状态是线性的。

我们鼓励开发者根据情况定义操作系统电源状态,并根据设备定位或环境控制设备电源。例如:开发者可以定义系统电源状态,据此可以做到在装置不在支架(cradle)中时可以关闭某些设备,或者当系统使用外接交流电源时允许设备运行在高功耗电源等级。同样的,开发者可以根据系统环境定义不同的空闲、挂起状态。开发者需要定制电源管理器并保证在适当或必须的时候在各种电源状态间切换。

系统电源状态与ACPI模式有显著的区别。然而,设备电源状态表面上看起来与ACPI规范中的设备电源状态类似,但实际上,他们仍有细微的区别。例如:在Windows CE中D3电源状态被设定为在操作系统挂起时可使指定设备担任唤醒源的功能。

4.7.1.2              电源挂起、恢复回调函数

挂起和恢复电源事件的回调函数与电源管理器无关。当CPU被停止,操作系统将进入挂起状态,这时回调函数会被系统调用。并在OEMPowerOff被调用前立即执行。在电源管理器请求关闭系统电源并进入挂起状态之前,电源管理器会时常对设备驱动进行IOCTL调用。当然,情况并不总是这样。电源管理器框架允许设备在系统运行时被关闭,也允许设备在系统挂起时处于开启状态。

当设备电源状态为D0,D1或D2,如果掉电事件发生时,开发者可以自行决定进行何种处理。此时,通常关闭设备电源,并在加电事件发生时恢复供电。如果设备可以不依赖CPU即可运行,在挂起状态时或许可以使此设备运行。如果设备在挂起期间一直处于供电状态,那可能是电源管理器配置错误,或者是应用程序使用POWER_FORCE标记对此设备进行了SetPowerRequirement调用。

 

4.7.1.3              其他电源管理API

电源管理器创建于标准的Windows CE电源体系结构的上层。所以,不管电源管理器如何运行,流接口设备驱动程序在系统挂起或恢复时总是通过XXX_PowerUp和XXX_PowerDown获取通知。下表列出了与电源管理相关的API。

函数名

功能描述

GetSystemPowerStatusEx2

获取电池状态信息。

PowerPolicyNotify

以事件的形式通知电源管理器,以便执行必要的处理,从而实现OEM创建的电源策略。

OEMIdle

被系统内核调用。在没有线程需要运行时将处理器置为空闲状态。

OEMPowerOff

当关机按钮被按下,或图形、窗体、事件子系统(GWES)超时时被调用。使处理器进入挂起状态。

XXX_PowerDown (Device Manager)

挂起设备电源。仅用于能被软件控制关闭的设备。

XXX_PowerUp (Device Manager)

恢复设备电源。


<think>我们正在设计一个基于BH-ITR20001/T24光耦的应用电路。首先,回顾一下该光耦的关键特性: - 高隔离电压(5000Vrms) - 宽电流传输比(CTR)范围:50%至600% - 快速开关时间(ton≤4μs, toff≤3μs) - 工作温度范围:-55°C至+110°C 典型应用包括: 1. 开关电源的反馈隔离 2. PLC数字输入模块 3. 工业控制系统的信号隔离 下面我们设计一个典型的开关电源反馈电路和数字信号隔离电路。 ### 一、开关电源反馈电路设计 在反激式开关电源中,光耦用于将输出电压反馈信息传递到初级侧的PWM控制器,同时实现电气隔离。 #### 电路原理图 ```plaintext 次级侧 光耦隔离 初级侧 +--------+ +-------------+ +---------+ | | | | | | | TL431 |---[R1]------| ANODE EMIT|---------| PWM_CTRL| | | | | | | (FB引脚)| | | | | CATHODE COLL| | | | | +-------| | | | +--------+ +-------------+ +---------+ | | | GND GND GND ``` #### 元件选型与计算 1. **TL431基准源**:提供精确的2.5V基准,通过电阻分压网络监测输出电压$V_{out}$。 2. **限流电阻R1**:限制通过光耦LED的电流$I_F$,计算公式: $$ R_1 = \frac{V_{out} - V_{ref} - V_F}{I_F} $$ 其中: - $V_{ref}=2.5V$(TL431参考电压) - $V_F \approx 1.2V$(光耦正向压降) - $I_F$通常取5-10mA(确保CTR稳定) 例如,当$V_{out}=12V$,$I_F=5mA$时: $$ R_1 = \frac{12 - 2.5 - 1.2}{0.005} = 1660\Omega \quad (\text{取1.8kΩ标准值}) $$ 3. **光耦输出侧电阻**:连接PWM控制器的FB引脚,其阻值需根据CTR最小值设计。设PWM控制器要求反馈电流$I_{FB}=1mA$,CTR最小值为50%: $$ I_C = \text{CTR}_{min} \times I_F = 0.5 \times 5mA = 2.5mA $$ 则上拉电阻$R_{pull-up}$为: $$ R_{pull-up} = \frac{V_{CC}}{I_C} = \frac{5V}{2.5mA} = 2k\Omega $$ (实际需考虑FB引脚电压,通常取3-10kΩ) #### 稳定性设计 - **相位补偿**:在TL431的REF引脚到阴极间并联电容$C_c$(典型值1-10nF),补偿反馈环路相位裕度[^2]。 - **噪声抑制**:在光耦输出端(集电极-发射极)并联100pF电容,滤除高频干扰。 ### 二、数字信号隔离电路设计 用于PLC输入模块,将24V工业信号转换为3.3V/5V逻辑电平。 #### 电路原理图 ```plaintext 工业侧 光耦隔离 逻辑侧 +24V ──┬───────[R2]────┤ ANODE EMIT ├─── GND │ │ │ ├───[R3]─┬──────┤ CATHODE COLL ├─── VCC(3.3V) │ │ │ │ │ DI_IN ZD1 +─────────────────+ R4 │ │ │ GND GND LOGIC_OUT ``` (ZD1为保护稳压管,可选24V) #### 元件选型与计算 1. **输入限流电阻R2**:根据输入电压和光耦LED电流计算。设$V_{in}=24V$,$I_F=5mA$: $$ R_2 = \frac{V_{in} - V_F}{I_F} = \frac{24 - 1.2}{0.005} = 4560\Omega \quad (\text{取4.7kΩ}) $$ 2. **下拉电阻R3**:确保无输入时阴极可靠接地(典型值10kΩ)。 3. **输出上拉电阻R4**:根据逻辑电平需求设计。当光耦导通时,集电极电流$I_C$需满足逻辑低电平要求。设逻辑低电平阈值$V_{IL}=0.8V$,$I_C=1mA$: $$ R_4 = \frac{V_{CC} - V_{CE(sat)}}{I_C} \approx \frac{3.3V - 0.3V}{0.001} = 3k\Omega $$ (实际需验证光耦饱和压降$V_{CE(sat)}$,BH-ITR20001典型值0.3V) #### 保护设计 - **过压保护**:并联稳压管ZD1(24V)防止输入过压损坏LED。 - **反接保护**:在输入串联二极管防止电源反接。 - **EMC增强**:在光耦输入/输出侧并联100pF电容,并采用短走线设计。 ### 三、设计注意事项 1. **CTR衰减补偿** 高温环境下CTR会下降,设计时需预留2倍以上余量。例如高温85°C时CTR衰减约30%,则初始设计$I_F$应增加40%[^3]。 2. **开关速度优化** 高速应用需减小负载电阻$R_L$(但会增加功耗),或采用图腾柱输出结构: ```plaintext VCC │ [R] │ ├───► B │ │ COLL─┐ ▼ ▼ │┌───────┐ ││ NPN │ └┤ ├───► OUT │ │ └───────┘ │ GND ``` 3. **隔离间隙** 在PCB布局中,输入/输出走线间距≥8mm,并开≥2mm的隔离槽以满足5000V隔离要求[^4]。 ### 完整设计示例(开关电源反馈) ```plaintext +───────────────────────────────+ │ 次级侧 │ │ │ │ Vout ────[R_div1]───┬───────┐ │ │ │ │ [R_div2] │ │ │ ├─ TL431_REF │ GND │ │ │ │ TL431_ANODE ────[1.8kΩ]──┬────┘ │ │ │ TL431_CATHODE ───────────┘ │ │ │ ├───▶ BH-ITR20001 ANODE │ │ │ GND │ │ │ BH-ITR20001 EMIT ────[3.3kΩ]──┴───▶ PWM_FB │ │ │ BH-ITR20001 COLL ────────────┬───▶ Vcc(5V) │ │ +───────────────────────────────+ ``` ### 相关问题 1. 如何测试光耦的电流传输比(CTR)? 2. 在高温环境下如何提高光耦电路的可靠性? 3. 光耦在开关电源反馈回路中产生振荡的原因及解决方法? 4. 如何设计光耦的加速关断电路以提高开关速度? [^2]: 开关电源环路补偿设计指南,TI应用报告SLVA301 [^3]: BH-ITR20001数据手册第7页温度特性曲线 [^4]: IPC-2221B第6.3节电气间隙规范</think>以下是针对BH-ITR20001/T24光耦的应用电路设计指南,包含关键电路设计和工程注意事项: ### 一、基础驱动电路设计 #### 1. 典型输入侧配置 ```plaintext Vcc ──┬───[R_lim]───┬──▶ 光耦引脚1 (阳极) │ │ [可选保护] │ │ │ GND ───────────┴──▶ 光耦引脚2 (阴极) ``` - **限流电阻计算**: $$R_{lim} = \frac{V_{in} - V_F}{I_F}$$ 例:$V_{in}=5V$时,取$I_F=10mA$: $$R_{lim} = \frac{5V - 1.2V}{10mA} = 380Ω \quad (\text{取标准值390Ω})$$ - **保护元件**: - 反向并联二极管(防反接) - TVS管(防浪涌,选6V规格) #### 2. 输出侧接口电路 ```plaintext 光耦引脚4 (集电极) ─┬──[R_L]───▶ Vcc(3.3V/5V) │ [负载] │ 光耦引脚3 (发射极) ──┴──▶ GND ``` - **负载电阻选择**: $$R_L = \frac{V_{CC} - V_{CE(sat)}}{I_C}$$ 设$V_{CC}=5V$,$I_C=2mA$: $$R_L ≈ \frac{5V - 0.3V}{2mA} = 2.35kΩ \quad (\text{取2.4kΩ})$$ ### 二、典型应用电路 #### 1. 开关电源反馈回路 ```plaintext 次级侧 光耦 初级侧 +───────+ +─────────+ +─────────+ │ │ │ │ │ │ │ TL431 ├─[2kΩ]─┬──────┤ AN EM ├─────────┤ PWM_CTRL│ │ │ │ │ │ │ (FB引脚)│ │ │ ├──────┤ CA CO ├───[3kΩ]─┤ │ +───────+ │ │ │ │ │ │ │ +─────────+ +─────────+ GND [0.1μF] │ GND ``` - **设计要点**: 1. CTR按最小值50%设计余量 2. 补偿电容(0.1μF)抑制振荡 3. 工作频率≤100kHz(满足$t_{on}+t_{off}=7μs$) #### 2. PLC数字输入模块 ```plaintext 24V_IN ──[4.7kΩ]──┬──▶ AN │ [5.1V Zener] │ GND ────────▶ CA │ EM ────────▶ MCU_GPIO │ CO ───[10kΩ]──▶ 3.3V ``` - **保护设计**: - 齐纳二极管钳位输入电压 - 共模扼流圈抑制工业噪声 - 输入侧并联100pF电容 ### 三、关键设计参数计算 #### 1. 动态性能优化 - **最大开关频率**: $$f_{max} = \frac{1}{t_{on} + t_{off}} = \frac{1}{4μs + 3μs} ≈ 143kHz$$ - **加速电容配置**: 在$R_L$并联10-100pF电容可减少$t_{off}$ 30% #### 2. 热设计考虑 - **功率耗散计算**: $$P_d = I_F \times V_F + I_C \times V_{CE}$$ 典型值:$P_d = 10mA \times 1.2V + 2mA \times 0.3V = 12.6mW$ - **CTR温度补偿**: 高温区需增加$I_F$: $$\Delta I_F = I_{F0} \times 0.005 \times (T_j - 25°C)$$ $T_j=85°C$时需增加30%驱动电流 ### 四、PCB设计规范 1. **隔离设计**: - 输入/输出间距≥8mm - 开1.5mm隔离槽(Creepage≥6.5mm) 2. **布线要点**: - 输入输出地平面分离 - 敏感信号包地处理 - 光耦下方禁止走线 3. **EMC措施**: - 电源引脚加0.1μF陶瓷电容 - 长距离传输用双绞线 - 金属屏蔽罩接机壳地 ### 五、可靠性增强方案 1. **寿命延长设计**: - 驱动电流不超过20mA - 避免$V_R$>5V(反向击穿防护) - 工作温度≤85°C(降额使用) 2. **故障诊断方法**: ```mermaid graph LR A[输出异常] --> B{测量V_F} B -->|V_F<0.8V| C[LED短路] B -->|V_F>1.5V| D[LED开路] B -->|0.8V<V_F<1.5V| E[检测CTR] E -->|CTR<40%| F[光耦老化] E -->|CTR正常| G[检查外围电路] ``` ### 六、替代方案对比 | 参数 | BH-ITR20001 | TLP785 | 优化建议 | |---------------|-------------|--------------|--------------------------| | 隔离电压 | 5000Vrms | 3750Vrms | 高压场合首选本型号 | | CTR范围 | 50-600% | 100-300% | 宽范围设计更灵活 | | 价格 | $0.25 | $0.18 | 成本敏感场合用PC817替代 | > ⚠️ **设计验证清单** > 1. 实际测量$V_F$@20mA(应在1.15-1.25V) > 2. 高温测试CTR衰减(85°C时衰减应<35%) > 3. 注入群脉冲测试(±4kV/5kHz通过性) --- ### 相关问题 1. 如何精确测量光耦的电流传输比(CTR)? 2. 在高温环境下如何补偿光耦的CTR衰减? 3. 光耦反馈回路产生振荡的根本原因是什么? 4. 如何设计光耦的加速关断电路以提高开关速度? [^1]: 光耦寿命加速测试方法参考JESD22-A108F [^2]: 隔离设计规范依据IEC 60664-1:2020 [^3]: 开关电源光耦反馈设计指南-TI SLUA618
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值