A.學習目標 (SMBus introduction)
a.瞭解SMBus及SMBus與I2C的差別
b.瞭解SMBus Protocols
c.瞭解Slave Address
B.大綱
1. The Concept of SMBus
1.1 SMBus and I2C
2. Slave and Master Device
3. Layers
4. SMBus Protocols
4.1 Block Write
4.2 Block Read
5. SMBus Register
C. SMBus introduction
C.1. The Concept of SMBus
SMBus在整個系統中與南橋所連接(圖4.1),為一種two-wire的介面(圖4.2),其中一條負責傳遞Data,另一條負責傳遞Clock。SMBus上的設備都是透過SMBus互相傳遞訊息,像是設備的基本資訊和狀態、控制參數、回報不同型式的錯誤等。[1]
圖 4.1 SMBus與南橋示意圖
圖 4.2 SMBus示意圖
以下為SMBus定義與解釋:[2]
SMBus stands for System Management Bus, a simple two wire bus used in devices such as a computer motherboard for communication, mostly on low bandwidth devices.
The SMBus was developed by Intel in 1995. One of the main duties of a SMBus is carry clock, data, and instructions from the motherboard to the device. It is based on Phillips C serial bus protocol. A SMBus can be found in many of the electronic devices that you own. For instance, on your laptop's rechargeable batter subsystem, in your computer, and many other types of electronics that include temperature sensors and lid switches. A SMBus can inform the user of specific, but basic types of information. For instance, a device which has a SMBus can indicate the model or version of a device. In addition, a SMBus is also an extremely valuable tool for reporting errors, an event or accept control parameters. It should be noted that a SMBus even when located in a laptop or desktop computer can not be configured and is usually not accessible.
The SMBus does have support from a variety of operating systems including Linux, MS Windows 2000, MS Windows XP and MS Windows Vista. However, MS Windows 98 does not support the SMBus.
C.1.1 SMBus and I2C
SMBus與I2C同樣都是屬於匯流排的標準,由於SMBus Specification的制定是依據I2C,因此二個標準有許多相似的地方,以下將列出SMBus與I2C之間相同與差異之處。
SMBUS
|
I2C
| |
Interface
|
Two Wired
|
Two Wired
|
Work frequency
|
10KHz~100KHz
|
0 ~ 100KHz、
400KHz、
3.4MHz
|
Purpose
|
low speed device
|
general device
|
Salve return Ack
|
Require
|
Not Require
|
Data Hold Time
|
300 ns
|
0 (No Data Hold Time)
|
Wait Time
|
35ms
|
0 (No Wait Time
|
表 4.1 SMBus與I2C比較表
C.2. Slave and Master Device
在SMBus中分為Master和Slave Device,其中Master Device負責發送指令給Slave Device、產生Clock及結束此次的指令動作。而Slave Device則只負責接受指令並回應所需的資訊。
Master和Slave Device的溝通是透過Address來進行,只要任何設備在SMBus上且為Slave Device都會有唯一的Slave Address。
Slave Address是由7+1bits所組成的(圖4.3),第1個bit到第7個bit為Slave Device的Address,這是不變的,出廠時就會定義好的,而第0個bit則是會變動的,若為0代表Write,若為1代表Read。
圖 4.3 Slave Address
表4.2為保留的SMBus Address,因此設備選擇Slave Address時,要避免用到這些所保留的Slave Address。
表 4.2 Reserved SMBus Address
C.3. Layers
在SMBus Specification中定義了三種不同的Layer,分別是Physical Layer、Data Link Layer和Network Layer,其中Network Layer較偏向BIOS,說明資料傳輸協定。另外二個則較偏向硬體,在此就不予討論。
C.4. SMBus Protocols
SMBus Protocol中分為很多不同型式的傳輸模式,例如Send Byte、Receive Byte、Write Byte、Read Word、Read Byte、Read Word、Process Call、Block Read、Block Write、Block Write以及Block Read等。雖然SMBus Protocol有許多種的傳輸模式,但是必須根據廠商的Specification才能得知是否支援那一種傳輸模式。
一般常用的傳輸模式為Byte Read、Byte Write、Block Read和Block Write。圖4.3列出Protocol會用到的notation,則在4.1和4.2分別介紹Block Write和Block Read的Protocol。
圖 4.4 Protocol Notation
C.4.1 Byte Read
Byte Read指的是當要讀取SMBus上的Device資料,一次讀取的資料大小為何,而Byte Read則是一次讀取一個Byte。
圖 4.5 Byte Read Protocol
此frame由左到右流程如下:
A. 此s 代表指令的開始。
B. 填入所要access的 Slave Device’s Address,填Write的目的是等一下要對此Slave Device下指令。
C. Slave Device回ACK給Master,代表已收到訊息。
D. Master Device下指令給Slave Device。在ICH7中是下的指令是48h,此指令是根據每個Spec而有所不同,請參考Note A。
E. Slave Device回ACK給Master,代表已收到指令訊息。
F. 此s 代表指令的開始
G. 填入Slave Device’s Address,填Read的目的是要從此Slave Device讀取資料,所以Slave Address必須再加1。
H. Slave Device回ACK給Master,並將資料回傳給Master Device。
I. Master Device回ACK給Slave Device並結束此Byte Read的動作。
C.4.2 Byte Write
圖 4.6 Byte Write Protocol
由於Byte Write 與Byte Read流程類似,因此在此不再贊述。唯一值得注意的是,此Protocol為Byte Write,所以後面並沒再讀取資料的需要,所以流程較短。在ICH7中是下的指令是48h,此指令是根據每個Spec而有所不同,請參考Note A。
C.4.3 Block Read
Block Read指的是當要讀取SMBus上的Device資料,一次讀取的資料大小為一個Block,Block大小由指令裡去定義。
圖 4.7 Block Read Protocol
此frame由左到右流程如下:
A. 此s 代表指令的開始。
B. 填入所要access的 Slave Device’s Address,填Write的目的是等一下要對此Slave Device下指令。
C. Slave Device回ACK給Master,代表已收到訊息。
D. Master Device下指令給Slave Device。在ICH7中是下的指令是54h,此指令是根據每個Spec而有所不同,請參考Note A。
E. Slave Device回ACK給Master,代表已收到指令訊息。
F. 此sr 代表指令的開始
G. 填入Slave Device’s Address,填Read的目的是要從此Slave Device讀取資料,所以Slave Address必須再加1。
H. Slave Device回ACK給Master,並將資料的Byte Count (代表資料有多少的長度) 回傳給Master Device。
I. 依序將資料回傳給Master Device,直到資料傳完。
J. Master Device回ACK給Slave Device並結束此Block Read的動作。
C.4.4 Block Write
圖 4.8 Block Write Protocol
Block Write 與Block Read流程類似,則不再贊述。其中不同的是,Byte Count是由Master Device所給的,直到資料全部寫入完畢,則結束此流程。在ICH7中是下的指令是54h,此指令是根據每個Spec而有所不同,請參考Note A。
C.5. SMBus Register
在南橋的Specification中,有記載了SMBus的Base Address,在PCI的Device 31:Function3之中,其分佈如表4.3。
表 4.3 SMBus Controller PCI Register Address Map (SMBUS—D31:F3)
* Note A
若要讀寫SMBus上的資料,必須在ICH7(Southbridge)的HST_CNT—Host Control Register (SMBUS—D31:F3) 填入適當的值,見表4.4與表4.5。舉例來說,若使用Byte Mode進行資料的傳輸,則必須在Bit[4:2]填入010,再加上Bit 6也要設為1,因此整個指令為01001000b就相等於48h。
若使用Block Mode,則在Bit[4:2]填入101,Bit6設為1,整個指令值為01010100b相等於54h。
表4.4 HST_CNT—Host Control Register (SMBUS—D31:F3) - 1
D. 參考資料
[1] System Management Bus (SMBus) Specification Version 2.0
[2] http://www.tech-faq.com/smbus.shtml
留言
張貼留言