User Tools

Site Tools

study:windows:241101-002:index

EC 所需知識 - SMBUS (2024-11-01)

Local Backup

  • 軟體工程師的第一步,先把相關的規範(Specification)了解清楚,就像開發一套軟體之前要先了解需求,才能做出一套符合需求的體。相同的EC工程師就是需要把 LPC / SMBUS / PS2 / Smart Battery 的相關知識,清楚明瞭再進下一步。

SMBUS

  • SMBus [System Management Bus] 是由Intel所制訂的,主要由兩條線組成,其一為CLOCK線,另一條為DATA線。其作用是讓系統監控者透過SMBus來蒐集系統上裝置的資訊如電池的容量、CPU的溫度等,讓系統監控者可以依照所得的資訊通知作業系統做電源管理的處理。在筆記型電腦系統中的ACPI-EC為SMBus的主控者 [Host] 來蒐集SMBus上的裝置資訊回報給作業系統,讓作業系統依使用者的設定做系統電源的管理。
  • SMBus相關的規格包含SMBus、Smart Selector、Smart Charger及Smart Battery都是ACPI-EC工程師需要瞭解的規格,以下的章節將會詳盡的介紹各個規格的資訊。

SMBUS Specification

Hardware Define

  • SMBUS 的硬體線路 –SMBUS由二條線所組成,所有的SMBUS的裝置都並聯在SMBUS上,因此,SMBUS上的所有裝置都需要使用Open collection 或者 Open drain才允許跨接在SMBUS上面,因此線路上必須加上提升電阻來確認SMBUS上的訊號可以正確無誤的傳遞。
  • 如同上圖,有時侯 SMBUS 上會有不同 VDD 的裝置,所以一般在輸入接腳會加稽納二極體保護裝置。不過大部分的作法,會使用電壓緩衝IC來處理不同電壓的 I2C 裝置。
  • SMBUS電氣上的要求
名稱 說明 值域 單位
:::: 下限 上限
VIL 輸入低電位 0.8 V
VIH 輸入高電位 2.1 VDD V
VOL 輸出為低電位 0.4 V
PULLUP 提升電流值 100 350 uA
VDD 工作電壓 2.7 5.5 V
  • SMBUS的時脈要求
名稱 說明 值域 單位
下限 上限
FSMB 工作頻率 10 100 KHz
TBUF SMBUS淨空閒置時間 4.7 us
HD:DAT 資料穩定後需保持的時間 300 ns
TSU:DAT 資料變動的時間 250 ns
TTIMEOUT 取得時脈的時間限制 25 35 ms
TLOW 時脈為LOW的時間 4.7 us
THIGH 時脈為HIGH的時間 4.0 50 us
TF 時脈及資料的下降時間 300 ns
TR 時脈及資料的上升時間 1000 ns
  • SMBUS針對熱插拔的裝置特別要求針對ESD加入保護線路
    • ESD的保護線路包含一個串接電阻及一個並接的電容,電阻的值域要小於1.1KΩ。在HOST端要有過電壓保護的稽納二極體。
  • Data Define
    • SMBUS的資料需在CLOCK高電位時前就要穩定下來,因為SMBUS是利用CLOCK在高電位時,讀取得資料。CLOCK低電位時,寫入資料供下個位元讀取。不過一般 IC 設計會在 Clock rising 時,讀取資料;在Clock falling 時,寫入新的資料。
    • SMBUS傳輸資料的開始及結束訊號,開始訊號為CLOCK保持高電位,DATA由高電位轉為低電位。結束訊號為CLOCK保持高電位,DATA由低電位為轉為高電位。
    • SMBUS傳遞的資料封包

    • SMBUS的資料封包由START → DATA → ACK → … → STOP結束。
    • 若MASTER端傳送資料給SLAVE端的話,SLAVE端會把ACK拉LOW表示已收到資料,若MASTER端讀取SLAVE端資料的話,MASTER會把ACK拉LOW表示讀取成功。

SMBUS的仲裁制度

  • 當有二個以上的MASTER位在同一個BUS上時,就容易發生在閒置的時間內,由二個以上的MASTER要傳送資料給SLAVE的衝突發生,此時的仲截會依序每個CLOCK檢查誰先由低電位轉成高電位就失去主導權。如圖在第三個CLOCK時,Tramsmitter由低電位轉為高電位而失去SMBUS的主導權。因此,SMBUS裝置的位址愈低表示權限愈高。
  • SMBUS的每一個裝置都會有一個位址做為裝置的識別,BIT7-BIT1為SMBUS裝置位址,BIT0用來識別是讀取還是寫入。

SMBUS的各種傳輸協定的封包

  • Quick Command - 通常使用來掃描在SMBUS上的裝置位址。
  • Send Byte - 通常用和 I2C 裝置溝通
  • Recieve Byte - 通常用和 I2C 裝置溝通
  • Write Byte
  • Write Word
  • Write Block
  • Read Byte
  • Read Word
  • Read Block

Smart Battery Selector Specification

  • Smart Battery Selector來選擇那一個電池來源來提供電力。下圖是一個完整的SMBUS裝置的方塊圖。
  • Smart Battery Selector的設計是以四個電池為極限來設計SMBUS的系統,並以A/B/C/D來命名四個電池。Smart Battery Selector只提供3個指令給HOST,以下針對每個指令說明:
  • Command 0x01 – SelectorState [R/W]
    • PRESENT – 表示系統上有多少電力來源
    • CHARGE – 表示那個電池正在充電
    • POWER_BY – 表示由那個電力來源提供系統電力
    • SMB – 表示那個電池連接在系統的SMBUS上
  • Command 0x02 – SelectorPreset [R/W]
    • OK_TO_USE – 表示電池是好的
    • USE_NEXT – 表示由那一個電池接續提供電力
  • Command 0x04 – SelectorInfo [R]
欄位名稱 BIT 說明
電池數目 0-3 表示有幾個電池,每個BIT表示一個電池。
0001 – 表示一個電池
0011 – 表示二個電池
版本 4-7 表示Smart Selector的版本
0001 – version 1.0
0010 – version 1.1
0011 – version 1.1 with PEC檢測
充電指示 8 表示Smart Selector需不需送出電池充電狀態給Smart Charger.
0 – 表示不需要
1 – 表示需要
保留 9-15

Smart Battery Charger Specification

  • Smart Battery Charger就是提供Smart Battery充電的系統,依照其提供的功能不同可分為LEVEL2及LEVEL3兩種:
  • LEVEL2 – Smart Battery Charger由Smart Host或Smart Battery經SMBUS提供充電電壓及電流給Smart Battery Charger,Smart Battery Charger調節其輸出來對電池充電。
  • LEVEL3 - Smart Battery Charger可以和LEVEL2一樣由Smart Host或Smart Battery提供充電電壓及電流。也可以由Smart Battery Charger讀取Smart Battery的狀態自行決定充電的電壓及電流。
  • Smart Battery或Embedded Control都是經由SMBUS的指令去控制Smart Charger對Smart Battery充電,Smart Charger支援的標準指令如下:
    • Command 0x11 – Charger Specification Information
      • 取得Smart Charger的相關的資訊
Name BIT Value
CHARGE_SPEC [3:0] 0001 – Version 1.0
0010 – Version 1.1
0011 – Version 1.1 with PEC
SELECTOR_SUPPORT 4 0 – Charger 不支援Selector 指令
1 –Charger 支援Selector 指令
  • Command 0x12 – Smart Charger Mode
    • 取得Smart Charger Mode的值。
Name BIT Value
INHIBIT_CHARGE 0 0 – 支援電池充電 [ power on default ]
1 – 停止支援電池充電
ENABLE_POLLING 1 0 – 不支援讀取電池資訊 [ LEVEL2 default ]
1 – 支援讀取電池資訊 [ LEVEL3 default ]
FOR_RESET 2 0 – 不變動 smart charger mode 的值
1 – 變動smart charger mode 成預設值
RESET_TO_ZERO 3 0 – 不變動電池的充電值 [ default ]
1 – 將電池的充電值都變成 0
  • Command 0x13 – Charger Status
    • 取得Smart Charger Status的值。
Name BIT Value
CHARGE_INHIBITED 0 0 – 支援電池充電
1 – 停止支援電池充電
POLLING_ ENABLED 1 0 – Smart Charger為Slave-Mode
1 – Smart Charger為Master-Mode
VOLTAGE_NOTREG 2 0 – 輸出電壓在範圍內
1 – 要求的充電電壓不符合要求
CURRENT_NOTREG 3 0 – 輸出電流在範圍內
1 – 要求的充電電流不符合要求
LEVEL2/3 [5:4] 01 – LEVEL2 Charger
11 – LEVEL3 Charger
CURRENT_OR 6 0 – 有效的充電電流值
1 – 無效的充電電流值
VOLTAGE_OR 7 0 – 有效的充電電壓值
1 – 無效的充電電壓值
RES_OR 8 0 – 電池的等效阻值在範圍內
1 – 電池的等效阻值 > 95KΩ
RES_COLD 9 0 –電池的等效阻值在範圍內
1 –電池的等效阻值 > 28.5KΩ
RES_HOT 10 0 –電池的等效阻值在範圍內
1 –電池的等效阻值 < 3.15KΩ
RES_UR 11 0 –電池的等效阻值在範圍內
1 –電池的等效阻值 < 575Ω
ALARM_INHIBITED 12 0 – Charger出問題時可發出ALARM
1 –禁止Charger發出ALARM給MASTER
POWER_FAIL 13 0 – 輸入電壓正常
1 – 輸入電壓太低
BATTERY_PRESENT 14 0 – 系統上沒有電池
1 – 系統上有電池
AC_PRESENT 15 0 – 系統上沒有可充電的電源
1 – 系統上有AC可充電的電源
  • Command 0x14 – Charging Current
    • 電池的充電電流,單位為mA
  • Command 0x15 – Charging Voltage
    • 電池的充電電壓,單位為 mV
  • Command 0x16 – AlarmWarning
    • 當Smart Battery或者 Embedded Control由Battery Status得知Smart Battery已經充飽或者發生不正常狀態,經由指令告知Smart Charger。

Smart Battery Specification

  • Smart Battery是用來收集電池內部的所有資訊經過SMBUS傳給系統的MASTER讓使用者可以知道電池的容量及相關的資訊。系統利用不同的SMBUS指令去取得電池的資料。標準的電池指令有:
  • Command 0x00 – Manufacture Access
    • 保留指令給電池製造商使用,可以進入及離開設定模式,修改電池的管理屬性以符合電池的特性。
  • Command 0x01 – Remaining Capacity Alarm
    • 電池容量低於預計值之下,控制器就會把ALARM BIT設起來
  • Command 0x02 – Remaining Time Alarm
    • 電池可使用的時間低於預計值之下,控制器就會把ALARM BIT設起來
  • Command 0x03 – Battery Mode
    • 電池的工作模式
Name BIT Value
INTERNAL_CHARGE_CONTROLLER 0 0 – 電池沒有包含充電器的能力
1 – 電池包含充電器的能力
PRIMARY_BATTERY_SUPPORT 1 0 – 只能設定為主要的電池
1 – 可設定主要或次要的電池
CONDITION_FLAG 7 0 – 電池的使用次數依一般計數
1 – 電池的使用次數要符合要求才計數
CHARGE_CONTROLLER_ENABLED 8 0 – 關閉電池內部充電器
1 – 開起電池內部充電器
PRIMARY_BATTERY 9 0 – 設定為次要的電池
1 – 設定為主要的電池
ALARM_MODE 13 0 – 允許電池將ALARM傳給HOST
1 – 不允許電池將ALARM傳給HOST
CHARGE_MODE 14 0 – 允許電池將充電電壓及電流傳給CHARGER或者HOST
1 – 不允許傳送充電電壓及電流
CAPACITY_MODE 15 0 – 電池容量的計數單位為mAH
1 – 電池容量的計數單位為10mWH
  • Command 0x04 – AtRate
    • 計數電池容量的變化,單位分為電流(mA)或者電源(10mW)。
  • Command 0x05 – AtRateTimeToFull
    • 使用AtRate的值來推算,電池充到飽所需剩餘的時間。單位為分鐘。
  • Command 0x06 – AtRateTimeToEmpty
    • 使用AtRate的值來推算,電池放到空所剩餘的時間。單位為分鐘。
  • Command 0x07 – AtRateOK
    • AtRate值等於0或者大於0的話為正值,反之為負值。
  • Command 0x08 – Temperature
    • 電池內部的絕對溫度值,單位為°K
  • Command 0x09 – Voltage
    • 電池的電壓值
  • Command 0x0A – Current
    • 電池的電流值
  • Command 0x0B – Average Current
    • 把前一分鐘內的電流值做平均
  • Command 0x0C – MaxError
    • 電池顯示容量和實際容量的最大誤差值。電池的實際容量落於顯示容量到顯示容量加上MaxError的範圍之內。是利用 Design Capacity 和 Last Fully Charger Capacity 的比率來計算的。
  • Command 0x0D – Relative State Of Charge
    • Remaining Capacity 和 Fully Charge Capacity的百分比值
  • Command 0x0E – Absolution State Of Charge
    • Reaming Capacity 和 Design Capacity的百分比值
  • Command 0x0F – Remaining Capacity
    • 電池現在的容量值
  • Command 0x10 – Full Charge Capacity
    • 電池充到飽的容量,每次電池放電時會重新計時其值,一般在電池放電到6%時會更新其正確值。
  • Command 0x11 – Run Time To Empty
    • 電池放電時,依據電流或功率損失值去計算電池剩餘的時間值。單位為 分鐘。
  • Command 0x12 – Average Time To Empty
    • 電池放電時,依據平均電流的值去計算電池剩餘的時間值。單位為分 鐘。
  • Command 0x13 – Average Time To Full
    • 電池充電時,依據平均電流的值去計算電池充至飽所需要的時間。
  • Command 0x16 – Battery Status
    • 電池的狀態。
Name BIT Value
OVER_CHARGE_ALARM 15 1 – 電池發生充電過頭而停止充電
TERMINATE_CHARGE_ALARM 14 1 – 有停止充電的原因發生,電池停止充電
OVER_TEMP_ALARM 12 1 – 電池因溫度過高停止充電
TERMINATE_DISCHARGE_ALARM 11 1 – 有停止放電的原因發生,電池停止放電
REMAINING_CAPACITY_ALARM 9 1 – 電池的剩餘容量到達預設值而發生警告訊值
REMAINING_TIME_ALARM 8 1 – 電池的剩餘使用時間到達預設值而發生警告訊值
INITIAILIZED 7 1 – 電池初始化完成
DISCHARGING 6 1 – 電池正在放電
FULLY_CHARGED 5 1 – 電池充飽電
FULLY_DISCHARGED 4 1 – 電池的容量已被完成放空了
ERROR_CODE [3:0] 0 – 沒有錯誤
1 – 電池正在收集內部資料
2 – 偵測到電池預留的指令
3 – 偵測到電池不支援的指令
4 – 被指定的資料只不支援寫入
5 – 電池的資料不在範圍之內
6 – 寫入的長度與規定不符
7 – 偵測到未知的錯誤
  • Command 0x17 – Battery Cycle
    • 電池使用的次數。電池放電放到幾乎為0,再回充的次數。
  • Command 0x18 – Design Capacity
    • 電池出廠時的標準容量。
  • Command 0x19 – Design Voltage
    • 電池出廠時的標準電壓值。鋰電池為其平均電壓,一般都位於一個CELL約3.6到3.7 Voltage
  • Command 0x1A – Specification Information
    • 電池的規格值
Name BIT Value
IPScale [15:12] Current Scale
VScale [11:8] Voltage Scale
Version [7:4] 0001 – Version 1.0
0010 – Version 1.1
0011 – Version 1.1 with PEC
  • Command 0x1B – Manufacture Data
    • 生產日期
Name BIT Value
Year [15:9] 0-127 [ Base 1980 ]
Month [8:5] 1-12
Day [4:0] 1-31
  • Command 0x1C – Serial Number
    • 電池的唯一識別碼
  • Command 0x20 – Manufacture Name
    • 電池製造商的名稱
  • Command 0x21 – Device Name
    • 電池的的裝置名稱
  • Command 0x22 – Device Chemistry
    • 電池的化學特性。例如:鋰或鎳氫電池
  • Command 0x23 – Manufacturer Data
    • 電池製造產生的資訊
  • 10 person(s) visited this page until now.

Permalink study/windows/241101-002/index.txt · Last modified: 2024/11/01 09:05 by jethro

oeffentlich