電池及收費
電池充電使用者體驗
本主題涵蓋Windows 10電池和充電的建議。 所有執行 Windows 的裝置都有一致的電池充電體驗,不論尺寸、指令集或平臺架構為何。 因此,使用者具有電池充電的一致和品質體驗。
連接到充電器時,一律會發生充電。
除了電池故障的情況之外,執行 Windows 的裝置一律能夠在連接到電池時充電。
Windows 一律可以在連線到電池時開機。
(家用版、專業版、企業版和教育版) Windows 10:
如果裝置處於 S5 (關機狀態) ,則不論電池計量和電池是否可卸載,它一律可以在連線到電池時開機進入 Windows。
Windows 10 行動裝置版:
電池必須存在且有足夠的充電等級,系統才能開機。
硬體會自發管理充電。
硬體會為裝置的電池收費,而不需要在主要 CPU 上執行的韌體、Windows、驅動程式或其他軟體 () 。 此需求僅適用于傳統型版本的Windows 10。 Windows 10 行動裝置版系統可能需要支援 UEFI 充電應用程式和/或其他軟體元件,才能充電電池。
當電池完全充電或發生錯誤時,充電會自動停止。
當電池完全充電時,硬體會自動停止充電。 這麼做不需要在主要 CPU 上執行的韌體、Windows、驅動程式或其他軟體 () 。 如果有電池或熱故障狀況,也會自動停止充電。
連接到充電器時發生充電
使用者預期其裝置在連線到電池時收費。 因此,無論電源狀態為何,每當裝置連接到電池時,硬體都必須嘗試充電電池。 這項期望適用于所有電源狀態,包括作用中的 (S0) 、睡眠 (S3) 、休眠 (S4) 、關機 (S5) 、 (G2/G3) 和 S0 閒置。 當電池完全充電或發生錯誤狀況時,充電可能會停止。
不建議在 Windows 或韌體未開機或執行時,以較低的速率為電池收費的設計。 例如,當系統完全關閉並聯機到電池,並在裝置開機且 ACPI 韌體可用來定期監視電池時,電池可能會以較慢的速率充電。
最後,當系統處於熱狀況時,設計可能會以較低的速率來充電電池。 在此案例中,熱度可能會透過變慢或完全消除電池充電來降低。 熱條件是任何良好系統設計的例外狀況。
連接到 AC 電源時,Windows 一律可開機
Windows 10 傳統型版本
使用者預期他們可以在裝置連線到電池時立即開機並使用其裝置。 因此,當連線到 AC 電源時,裝置必須一律開機且可完全使用。 不論電池計量等級、電池/充電狀態,以及電池 (已卸載式) ,這都會保持 true。
如果裝置需要最小電池容量才能開機韌體和 Windows,硬體必須確保平臺一律保留電池容量。 保留的電池容量不得向 Windows 公開。
Windows 10 Mobile
當系統連線到 AC 電源且電池存在時,系統應該嘗試開機至作業系統,只要電池有足夠的電量在開機程式期間為系統提供電源。
硬體自發管理充電
如上面所指定,使用者預期裝置在連線到電池時收費。 因此,硬體必須充電電池,而不需要在主要 CPU 上執行的韌體、Windows、驅動程式或其他軟體 () ,因為其中一或多個元件可能無法運作,或可能在任何指定時間處於錯誤狀態。 此需求僅適用于傳統型版本的Windows 10。 Windows 10 行動裝置版系統可能需要支援 UEFI 充電應用程式和/或其他軟體元件,才能充電電池。
當完全收費或發生錯誤時,充電會自動停止
當電池完全充電或發生錯誤時,硬體會自動停止充電。 如同充電,這必須完成,而不需要在主要 CPU () 上執行的韌體、Windows、驅動程式或其他軟體。 此外,硬體必須符合所有電池安全法規條件。
電源和充電指標
Windows 會使用使用者可在數個地方看到的圖示,提供電源和電池狀態指示器。 位置包括電池系統匣圖示和鎖定畫面。
裝置也可以有實體指示器,例如 LED,指出充電狀態。 此指標對耗電量的影響很小。
Windows 電源和充電圖示
Windows 會在三個位置顯示電源和充電狀態:
在鎖定畫面上:
Windows 會顯示具有電源和充電狀態的電池圖示。
僅限桌上出版本的桌面系統匣 (Windows 10) :
Windows 會顯示具有電源和充電狀態的電池圖示。 當使用者按一下電池圖示時,他們可以檢視資訊,例如剩餘容量、預估剩餘時間,以及每個電池的詳細資料,如果配備多個電池) ,則 (。
狀態列 (僅限行動裝置 SKU) :
Windows 會顯示具有電源和充電狀態的電池圖示。 當使用者從畫面頂端向下撥動以展開控制中心時,他們可以檢視實際的電池百分比。
省電模式設定:
在 [省電模式設定] 頁面 ([設定 - 系統 - >> 省電模式]) 中,Windows 會顯示整體電池百分比、電池狀態 (充電與充電) 和充電/充電的預估剩餘時間。
對於能夠 S0 閒置的平臺,如果顯示顯示,Windows 會在系統連線到或中斷連接電源時,短暫啟動顯示器,以通知使用者電源變更。
平臺硬體充電指標
Windows 中內建的圖示只會解決 Windows 正在執行且顯示給使用者的案例。 不過,當系統關機或關閉顯示器的 S0 閒置狀態時,不會顯示幕幕上的指標。 由於使用者無法在畫面上看到視覺提示,因此平臺可能包含實體充電指示器來表示電源存在。
下一節提供使用停駐解決方案在 S0 Idle 平臺上實作鍵盤和滑鼠/觸控板的建議。 本節也會討論挑戰和原則,以及潛在的解決方案。 這兩種潛在解決方案都適用于行動裝置和 A/C 電源固定座。
將電源和充電子系統公開至 Windows
執行 Windows 的每個行動裝置都包含一或多個電池和電源,例如 AC 介面卡。 來自這些子系統的資訊會將電源管理狀態傳達給使用者。 狀態包括隨時剩餘的電池容量、AC 介面卡的狀態和電池充電狀態,以及預估的剩餘電池時間。 電源子系統資訊會在 Windows 電池計量和其他電源管理診斷公用程式中公開。
下一節提供使用停駐解決方案在 S0 Idle 平臺上實作鍵盤和滑鼠/觸控板的建議。 本節也會討論挑戰和原則,以及潛在的解決方案。 這兩種潛在解決方案都適用于行動裝置和 A/C 電源固定座。
一般電源子系統硬體拓撲
一般而言,Windows 預期電源和充電子系統有兩個硬體拓撲之一。
下圖說明使用平臺內嵌控制器的第一個拓撲,這在執行 Windows 的現有裝置中很常見。 內嵌控制器會在行動裝置中執行多個功能,包括電源來源控制、電池計量管理、電源按鈕/開關偵測,以及 PS/2 相容的鍵盤和滑鼠輸入。 內嵌控制器通常會透過低針腳計數 (LPC) 匯流排連接到核心晶片。 Windows 查詢,並透過 ACPI 內嵌控制器介面通知電源子系統資訊。
下一個圖說明第二個拓撲,其會使用電池充電控制器和油量測計元件,直接透過 I}C 之類的輕量周邊匯流排連接到平臺的核心晶片。 在此設定中,Windows 會透過 I¹C 匯流排的通訊來查詢電源子系統,並收到有關電源子系統變更的通知。 ACPI 控制方法環境不支援簡單周邊 (SPB) 作業區域,而不是使用電池或充電子系統的設備磁碟機。 SPB 作業區域可讓 ACPI 控制方法程式碼與透過 I¹C 連線至核心晶片的電池充電控制器和燃料量測計元件進行通訊。
電池和電源子系統驅動程式模型
Windows 提供強固的電池和電源子系統裝置磁碟機模型。 電源管理資訊會透過電池設備磁碟機傳遞給 Windows 電源管理員,然後透過電池裝置 IRP 和一組電源管理軟體 API 匯總並公開給 Windows 使用者介面。
電池驅動程式模型是埠/迷你埠模型,也就是已定義電池型號和介面,以便透過迷你埠公開新的電池類型。 不過,在實務上,只有兩個小型埠在 Windows 生態系統中具有任何重大用途 - 支援 ACPI 控制方法電池的電池迷你埠驅動程式,以及適用于 USB 連接之 UNinterruptible Power Supply (UPS) 裝置的 HID 電池迷你埠驅動程式。
所有電腦預期都會透過 ACPI 控制方法介面公開電池和充電子系統。 電池迷你埠介面不應該用於平臺特定的電池充電子系統。 有 ACPI 規格定義的控制項方法可讓 Windows 輪詢電池資訊和狀態。 同樣地,有事件驅動模型可讓硬體平臺通知 Windows 電池和電源變更,例如從 AC 轉換到電池電源。
狀態輪詢
Windows 電源管理員會定期向電池要求狀態資訊,包括剩餘的充電容量和目前的清空率。 此要求源自 Power Manager、較高層級的使用者介面元件或應用程式。 電源管理員會將要求轉換成 I/O 要求封包 (IRP) 到電池裝置 () 。 當電池透過 ACPI 控制項方法介面公開時,控制項方法電池驅動程式 (cmbatt.sys) 會執行適當的 ACPI 控制項方法。 在狀態資訊的情況下,會執行_BST (電池狀態) 方法。
_BST 方法需要 ACPI 韌體從電源子系統取得目前資訊,然後使用 ACPI 規格所指定的格式封裝緩衝區中的資訊。 從內嵌控制器存取電池狀態所需的特定程式碼,或透過 IーC 連線的電池充電器包含在 ACPI 韌體內,以及包含_BST方法的程式碼的一部分。 _BST方法的淨結果是傳回至控制方法電池驅動程式所需的資訊緩衝區。 控制方法電池驅動程式最後會將緩衝區轉換成電池驅動程式和 Windows 電源管理員所需的格式。
狀態變更通知
電源和電池子系統會產生數個通知給 Windows 以進行狀態變更,包括從 AC 轉換為電池電源。 如果需要輪詢的高頻率,Windows 進行這些狀態變更的輪詢並不實用。 因此,硬體平臺必須使用事件驅動模型,在電池狀態大幅變更時通知 Windows。
當電池狀態變更,包括剩餘容量或充電狀態時,ACPI 韌體會在控制方法電池裝置上發出通知 (0x80) 。 然後,Windows 控制項方法電池驅動程式會評估_BST方法,並將更新的資訊傳回給電源管理員。
當電池靜態資料變更,包括最後一次充電容量、設計容量和迴圈計數時,ACPI 韌體會在控制方法電池裝置上發出通知 (0x81) 。 然後,Windows 控制項方法電池驅動程式會評估_BIX方法,並將更新的資訊傳回給電源管理員。
平臺會透過系統控制中斷 (SCI) 中斷 ACPI 韌體環境,在內嵌控制器配備的平臺和 GPIO 的情況下,在電池子系統硬體直接連線到核心晶片的情況下,透過 GPIO 中斷 ACPI 韌體環境。
使用內嵌控制器的 ACPI 作業
其電池和電源子系統連線到一般內嵌控制器的平臺會使用 ACPI Embedded Controller 作業區域來協助 ACPI 控制方法環境和平臺硬體之間的通訊。
ACPI 韌體必須在 ACPI 命名空間中定義內嵌控制器,如 ACPI 規格的第 12.11.1 節所述,包括:
- 內嵌控制器的 Device () 節點。
- 指出裝置為內嵌控制器的_HID物件。
- _CRS 物件,表示內嵌控制器的 IO 資源。
- 定義內嵌控制器 SCI 的_GPE物件。
- 作業區域,描述內嵌控制器內含的資訊,這些資訊可由命名空間中的其他 ACPI 控制項方法程式碼存取,包括電池狀態和資訊方法。
ACPI 規格的第 12 節會說明完整的詳細資料。
從內嵌控制器存取電池資訊
ACPI 控制項方法會讀取內嵌控制器作業區域中所述的值,以存取內嵌控制器的資訊。
當電池狀態變更時通知作業系統
當內嵌控制器偵測到電池狀態變更時,包括充電狀態變更或_BTP所指定的剩餘容量,內嵌控制器會產生 SCI,並在內嵌控制器狀態命令中設定SCI_EVT位, (EC_SC) 暫存器。 Windows ACPI 驅動程式會與內嵌控制器通訊,併發出查詢命令 (QR_EC) ,以要求發出通知的特定資訊。 然後,內嵌控制器會設定對應至要執行之_QXX方法的位元組值。 例如,內嵌控制器和 ACPI 韌體可以定義值0x33為電池狀態資訊的更新。 當內嵌控制器將值設定為通知0x33時,ACPI 驅動程式會執行 _QXX 方法。 _QXX方法的內容通常是命名空間中控制方法電池裝置上的通知 (0x80) 。
使用 I IoC 連線充電系統的 ACPI 作業
平臺也可以透過 I IoC 等低電源序列匯流排,將其電池和電源子系統連線到核心晶片組。 在這些設計中,ACPI GenericSerialBus 作業區域是用來在 ACPI 控制方法和電池子系統硬體之間進行通訊。 將電池子系統硬體連接到 GPIO 中斷可讓 ACPI 控制方法在電池狀態變更時執行。
當電池和電源子系統硬體透過 ILpC 連線時,ACPI 韌體必須定義:
連線 IIoC 中斷之 GPIO 控制器裝置的 Device () 節點,包括:
- 描述 GPIO 控制器硬體識別碼的 _HID 物件。
- _CSR 物件,描述 GPIO 控制器的中斷和硬體資源。
- _AEI物件,此物件會將一或多個 GPIO 行對應至 ACPI 事件方法執行。 這可讓 ACPI 方法執行以回應 GPIO 行中斷。
裝置 () 節點,用於連線電池油量計和充電硬體的 IHttpC 控制器,包括:
- _HID和_CSR物件,描述 IーC 控制器的硬體識別碼和資源。
- 描述 IUC 裝置之虛擬命令暫存器之 IUC 裝置範圍內的 GenericSerialBus OperationRegion。
- GenericSerialBus OperationRegion 內的欄位定義。 欄位定義可讓I裝置外部的 ASL 程式碼存取I 裝置的虛擬命令暫存器。
描述 GPIO 控制器,並將 GPIO 線路對應至 ACPI 事件,可讓控制方法在引發來自 ILpC 裝置的 GPIO 中斷時執行電池狀態和通知。 描述 GenericSerialBus 作業區域可讓 ACPI 程式碼的電池狀態透過 IUC 匯流排進行通訊,並從電池油量計和充電子系統讀取暫存器和資訊。
從充電系統存取電池資訊
ACPI 控制方法可以透過電池子系統硬體所連線的I匯流排來傳送和接收命令,藉此執行電池狀態。 控制方法程式碼會支援狀態和電池靜態資訊方法,從 ACPI 命名空間中所述的 GenericSerialBus 作業區域讀取和寫入資料。 控制方法程式碼會透過 GenericSerialBus 作業區域,從燃料量測計裝置或有關電池容量和迴圈計數的靜態資訊,讀取 IUC 匯流排上的資料。
當電池狀態變更時通知 Windows
當狀態變更且中斷實際連接到核心晶片上的 GPIO 線路時,電池子系統硬體可能會產生中斷。 GPIO 行可以使用 ACPI 中所述之 GPIO 控制器底下的 _AEI 物件,對應至特定的控制方法執行。 發生 GPIO 中斷時,Windows ACPI 子系統會執行與特定 GPIO 線路相關聯的方法,進而在控制方法電池裝置上執行 Notify () ,導致 Windows 重新評估狀態和靜態資訊方法來更新電池狀態。
電源供應器物件的 ACPI 實作
ACPI 韌體必須實作 ACPI 電源裝置。 此物件必須以硬體識別碼 (_HID) 「ACPI0003」 回報本身。 這個物件也必須實作 ACPI _PSR (Power Source) 方法。 這個方法會傳回電源的狀態,並傳達電源目前在線上 (AC 電源) 或離線 (電池電源) 。 系統的所有輸入電源都必須透過單一_PSR方法多工處理。 例如,如果系統透過 DC 筒式連接器或個別的擴充座連接器提供電源,_PSR就必須在線上傳達。 請勿使用多個 ACPI 電源裝置。
當系統連線到主要電源時,_PSR方法只能回報線上 (AC 電源) 。 當_PSR狀態變更時,平臺必須在 ACPI 命名空間的裝置上產生中斷和通知 (0x80) 。 這必須在平臺偵測到實體狀態變更之後立即執行。
電池靜態資訊的 ACPI 實作
ACPI 韌體必須針對每個電池實作 ACPI _BIX 方法,以提供電池的靜態資訊,包括設計容量、迴圈計數和序號。 下表會展開 ACPI 規格中所述欄位的定義,並列舉此資訊的 Windows 特定需求。
欄位 | 描述 | Windows 特定需求 |
---|---|---|
修訂版 | 指出_BIX修訂 | 必須設定為 0x0 |
電源單位 | 決定硬體所報告的單位。 任一種:MA/MAh 或 mW/mWh。 | 必須設定為 0x0,表示單位為 mW/mWh |
設計容量 | 指出 mWh 中電池的原始容量 | 必須設定為精確的值,而且不能0x0或0xFFFFFFFF |
上次完整收費容量 | 指出電池的目前完整充電容量 | 必須設定為精確的值,而且不能0x0或0xFFFFFFFF 此值必須更新每個週期計數增加的時間。 |
電池技術 | 指出電池是否可充電或一次性使用。 | 必須設定為 0x1,表示電池可充電 |
設計電壓 | 表示電池的設計電壓 | 在 mV 中新增時,必須設定為電池的設計電壓。 不得設定為 0x0 或 0xFFFFFFFF。 |
警告的設計容量 | 表示 OEM 提供的低電池警告層級。 | Windows 會忽略此值。 |
低的設計容量 | 指出在系統關閉之前,Windows 必須立即關閉或休眠的重要電池計量。 | 必須設定為0x0與 5% 的電池設計容量之間的值。 |
電池容量細微性 1 | 指出硬體在 [警告] 設計容量與 [設計容量為低] 之間可偵測到的剩餘費用變更數量下限。 | 必須設定為不超過 1% 的電池設計容量的值。 |
電池容量細微性 2 | 指出硬體在上次完整收費容量與警告設計容量之間可偵測到的剩餘費用變更數量下限。 | 必須設定為不超過 75mW 的值, (大約是 25Whr 電池) 的 .25%, (電池設計容量的 1/400) 。 |
週期計數 | 表示電池迴圈計數。 | 必須設定為大於0x0的值。 不得設定為 0xFFFFFFFF。 |
測量精確度 | 指出電池容量測量的精確度。 | 必須設定為 95,000 或更高,表示 95% 的精確度或更高。 |
取樣時間上限 | 兩個連續_BST評估之間支援的取樣時間上限,這會顯示剩餘容量的差異。 | 沒有特定需求。 |
最小取樣時間 | 兩個連續_BST評估之間支援的最小取樣時間,這會顯示剩餘容量的差異 | 沒有特定需求。 |
最大平均間隔 | 電池燃料量測計所支援的最大平均間隔,以毫秒為單位。 | 沒有特定需求。 |
最小平均間隔 | 電池燃料量測計所支援的最小平均間隔,以毫秒為單位。 | 沒有特定需求。 |
型號 | OEM 提供的電池型號號碼 | 不得為 Null。 |
序號 | OEM 提供的電池序號 | 不得為 Null。 |
電池類型 | OEM 提供的電池類型資訊 | 沒有特定需求。 |
OEM 資訊 | OEM 提供的資訊 | 沒有特定需求。 |
電池即時狀態資訊的 ACPI 實作
ACPI 韌體必須針對每個電池實作 ACPI _BST 方法,以提供電池的即時狀態資訊,包括剩餘容量和目前清空率。 下表會擴充 ACPI 規格中所述欄位的定義,並列舉此資訊的 Windows 特定需求。
欄位 | 描述 | Windows 特定需求 |
---|---|---|
電池狀態 | 指出電池目前正在充電、正在卸載或處於重大狀態。 | 只有在電池正在充電時,電池狀態才會報告充電。 同樣地,只有在電池正在卸載時,[電池狀態必須] 才會報告充電。 不充電或卸載的電池必須回報兩個位。 |
電池顯示速率 | 從電池提供以 mW 為單位的目前清空速率。 | 必須大於 0x0 且小於 0xFFFFFFFF。 必須在_BIX中度量精確度的值內正確性。 |
剩餘電池容量 | 以 mWh 提供剩餘的電池容量。 | 必須大於 0x0 且小於 0xFFFFFFFF。 必須在_BIX中度量精確度的值內正確性 |
電池目前電壓 | 表示電池終端機的目前電壓。 | 必須在 mV 中0x0值與0xFFFFFFFF之間。 |
當_BST中的任何資料變更時,平臺必須在 ACPI 命名空間的電池裝置上產生中斷和通知 (0x80) 。 這必須在平臺偵測到實體狀態變更之後立即執行。 這包括充電 (的 [電池狀態] 欄位中的任何變更,也就是 Bit0) 或卸載 (,也就是 Bit1) 位。
此外,平臺必須實作 _BTP-Battery Trip Point-method。 _BTP可讓 Windows 指定已超過的剩餘容量閾值,平臺必須在 ACPI 命名空間的電池裝置上產生中斷和通知 (0x80) 。 _BTP 方法可防止 Windows 定期輪詢電池。
電池控制方法
ACPI 規格可透過 Device-Specific 方法或_DSM控制方法,提供裝置和作業系統特定的控制方法。 ACPI 規格的 9.14.1 節會說明_DSM。
Windows 支援下列控制項方法電池裝置的_DSM方法。
熱收費率方向
欄位 | 值 | 描述 |
---|---|---|
UUID | 4c2067e3-887d-475c-9720-4af1d3ed602e | GUID,指出 Windows 控制項方法電池驅動程式支援的擴充功能 |
修訂識別碼 | 0x0 | 此功能的第一個修訂 |
函式索引 | 0x1 | 設定電池計量節流 |
引數 | 熱限制 | 從 0 到 100 的整數值,表示熱電量限制。 值為 40% 表示電池應該以最大速率的 40% 收費。 值為 0% 表示應該停止電池充電,直到再次呼叫此方法為止。 |
傳回值 | 無 | n/a |
使用者可服務電池
欄位 | 值 | 描述 |
---|---|---|
UUID | 4c2067e3-887d-475c-9720-4af1d3ed602e | GUID,指出 Windows 控制項方法電池驅動程式支援的擴充功能 |
修訂識別碼 | 0x0 | 此功能的第一個修訂 |
函式索引 | 0x2 | 指出此_DSM供 OSPM 判斷電池裝置是否為使用者可服務。 |
引數 | 無 | 不需要任何引數。 |
傳回值 | 包含單一整數的封裝。 | 0x0如果電池無法供使用者使用,且無法由終端使用者取代,或可由終端使用者取代為其他工具。 0x1使用者是否可以更換電池,而不需要其他工具。 |
需要充電監控程式
欄位 | 值 | 描述 |
---|---|---|
UUID | 4c2067e3-887d-475c-9720-4af1d3ed602e | GUID,指出 Windows 控制項方法電池驅動程式支援的擴充功能 |
修訂識別碼 | 0x0 | 此功能的第一個修訂 |
函式索引 | 0x3 | 指出此_DSM適用于 OSPM,以判斷控制方法電池是否需要定期重設監視程式,以維持高目前充電,以及必須重設監視程式的時間 |
引數 | 無 | 不需要任何引數。 |
傳回值 | 包含單一整數的封裝。 | 如果電池不需要監視程式服務,0x0。
包含0x0000001e和0x12C的值表示以秒為單位的最大波狀間隔。 所有其他值都會被忽略,而且會被視為0x0,而且不需要重設監看狗。 如果指定了有效的監看狗間隔,則每當將 _BST 方法中的 BatteryState 值設定為充電時,Windows 會以一個間隔執行_BST方法, 不支援此值的動態更新。 |
協力廠商電池迷你埠驅動程式
在Windows 10中,OEM 和 IHV 可以開發自己的協力廠商電池迷你埠驅動程式,以取代 Microsoft cmbatt.sys 驅動程式,並直接與電池硬體通訊。 範例電池驅動程式是由 GitHub 上的 Microsoft 提供,以及作為 WDK 範例套件的一部分。
傳統型版本的 USB 充電 (Windows 10)
Microsoft 會辨識提供支援行動裝置 USB 充電選項的值。 透過歐盟的標準化工作來標準化行動電話充電裝置,USB 電池已廣泛推出,且可在各種裝置上運作,包括 Windows Phone、MP3 播放機、GNSS 裝置等。Microsoft 瞭解提供單一電池的價值,可用來收取多個裝置的費用,包括執行 Windows 的裝置。 此外,基於 USB 充電的廣泛產業支援,有一個可降低成本和環境影響的輔助優點。
從Windows 8開始,行動裝置可以透過 USB 電源和/或透過 USB 收費,前提是符合以下所述的電池充電需求。 此外,還有一些必須符合的 USB 特定需求,以確保高品質的使用者體驗。
USB 電源/充電必須完全在平臺韌體中實作。 支援不得要求作業系統、驅動程式或應用程式。
連接到另一部裝置時,裝置「不得」列舉。 因此,裝置在連線到標準電腦 USB 埠時不會收費,因為這些埠預設限制為 500mA。 唯一的例外狀況是使用此埠進行偵錯和初始處理站韌體程式設計。
裝置支援從專用 USB 充電埠充電。 當裝置連線到符合 USB 電池充電規格 1.2版的電池時,裝置必須收費。 當連接到標準 USB 電池時,裝置不應為每個充電標準繪製超過 1.5A。 OEM 可以選擇支援較高的目前層級,前提是符合下列條件:
- 裝置會自動偵測特定充電類型的適當費率的充電類型和費用。
- 裝置和電池符合所有相關的電力和安全性標準。
- OEM 會隨附設備與相關聯的纜線。
透過標準 micro-AB 接收器、USB-C (建議) 或專屬的擴充座連接器,支援 USB 充電。 裝置上不允許使用 micro-B 接受器。 如果使用專屬的擴充座連接器,OEM 必須隨附適當的纜線與裝置,才能從標準 USB 電池充電。
如果實作 micro-AB 埠,裝置必須自動偵測纜線類型、設定,並擔任適當的角色。 如果插入 micro-B 外掛程式且未在埠上啟用偵錯,則應該假設有充電角色。 如果插入 micro-B 外掛程式並在埠上啟用偵錯,則應該假設偵錯角色 (亦即不支援) 收費。 如果插入微 A 外掛程式,則會假設 USB 主機角色是由 Windows 辨識連接的 USB 裝置。
如果 micro-AB 埠也可作為偵錯埠運作,裝置必須透過韌體提供方法,才能在充電和偵錯角色之間切換。 提供給終端使用者的預設設定必須有偵錯 DISABLED。
如果 micro-AB 埠也可作為偵錯埠運作,裝置應該透過專用的筒式連接器或專屬的擴充座連接器來提供替代輸入電源路徑。
平臺設計工具與實作者檢查清單
您可以使用下列檢查清單來驗證平臺設計和系統韌體遵守所概述的電池和充電子系統指引。
電池子系統和 ACPI 韌體實作檢查清單
系統設計工具應該確保他們已完成 ACPI 韌體中的下列工作,以確保正確報告電池和電源子系統資訊給 Windows:
為 ACPI 命名空間中的每個電池裝置新增 Device () 物件。
每個電池裝置都必須提供下列控制方法和物件:
- _HID值為 PNP0C0A。
- 擴充_BIX電池資訊:
傳達電池靜態資訊,包括最後一個完整充電容量、設計容量和迴圈計數。
_BST-電池狀態:
傳達目前的電池狀態,包括剩餘容量、清空率和充電狀態。
_BTP-Battery 車程點:
啟用事件驅動電池狀態模型,以減少輪詢的定期工作。 _BTP可讓 Windows 指定剩餘充電容量的閾值,平臺應該在電池裝置上的通知 (0x80) 發出,以要求 Windows 更新電池狀態資訊。
_STA-一般狀態:
可讓 Windows 知道電池是否存在於裝置中,其中電池可能是可移動的,或是可攜式擴充座中可能有電池的位置。
在 ACPI 命名空間中新增 AC 配接器/電源來源的單一 Device () 物件。
電源裝置必須提供下列控制方法和物件:
具有 ACPI0003 值的_HID
_PSR電源:
表示電源目前在線上 (AC 電源) 或離線 (電池電源) 。 裝置的所有輸入電源都必須透過 _PSR 方法進行多工處理。 例如,如果裝置是透過 DC 圓筒連接器或個別的擴充座連接器來電源,_PSR就必須在線上傳達。 請勿使用多個 ACPI 電源裝置。
_BIX 方法必須支援上述電池靜態資訊中所述的欄位和條件約束:
- [ 修訂 ] 欄位必須設定為 0x0。
- [電源單位]欄位必須設定0x0。
- [設計容量] 和 [上次完整充電容量]值必須設定為電池和充電子系統中的精確值,且不等於0xFFFFFFFF或0x00000000。
- [ 電池技術] 欄位必須設定為 [0x1]。
- 設計 電壓 欄位必須正確設定,且不等於0x00000000或0xFFFFFFFF。
- [ 低設計容量 ] 必須設定為休眠或從完全開啟狀態關閉系統所需的最小值。
- [電池容量細微性 1]和 [電池容量細微性 2] 欄位必須設定為不超過電池設計容量 1% 的值。
- [ 迴圈計數 ] 欄位必須從電池子系統正確填入。
- [ 度量精確度 ] 欄位必須設定為 80,000d 或更新版本。
- [ 型號] 和 [序號] 欄位不得設定為 Null。
提供_BST方法,讓 Windows 輪詢即時電池狀態。 _BST 方法中的欄位必須從基礎電源和電池充電子系統動態傳回。 其精確度必須位於 _BIX 方法中度量精確度的值內。
提供_BTP方法,可讓 Windows 指定剩餘的充電容量閾值,讓平臺在電池裝置上使用通知 (0x80) 中斷 Windows。
請確定只會發出通知 (0x80) ,以回應電池狀態變更或_BTP充電容量限制車程。 請勿定期執行通知 (0x80) 。
當電池計量達到_BIX中指定的值時。DesignCapacityofLow,平臺必須在控制方法電池裝置上產生 Notify (0x80) 。
對於具有多個電池的系統,請完整實作每個電池的控制方法電池裝置。
- 命名空間中的第一個電池應該是系統的主要電池,以協助進行偵錯。
在每個電池裝置下實作 _DSM 方法,以指出電池是否可供使用者使用。
如果在充電期間需要定期重設監視程式,且 Windows 保證在該輪詢視窗中定期執行_BST方法,請實作 _DSM 方法。
如果平臺上的熱模型需要電池充電速率控制,請實作_DSM方法。