EC 所需知識 - SMBUS

EC 所需知識
軟體工程師的第一步,先把相關的規範(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
IPULLUP
提升電流值
100
350
uA
VDD
工作電壓
2.7
5.5
V

    • SMBUS的時脈要求

名稱
說明
值域
單位
下限
上限
FSMB
工作頻率
10
100
KHz
TBUF
SMBUS淨空閒置時間
4.7
us
THD: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
電池製造產生的資訊

留言

  1. 您好請問用EC smbus 或南僑 smbus會有哪些差異呢?謝謝

    回覆刪除
  2. 作者已經移除這則留言。

    回覆刪除

張貼留言

這個網誌中的熱門文章

EC 所需知識 - KBC

EC 所需知識 - LPC