定義
SMBus最初的目的是為
智慧型電池,充電電池和與其他系統通信的微控制器之間的通信鏈路而定義的。SMBus也被用來連線各種設備,包括電源相關設備,系統感測器,EEPROM通訊設備等等。 SMBus 最適用於筆記本電腦上,檢測各元件狀態並更新硬體設定引腳 (pull-high 或 pull-low)。例如,將不存在的 DIMM 時鐘關閉,或檢測電池低電壓狀態。 SMBus 的數據傳輸率只有 100Kbit/s;這允許單一
主機與 CPU 和多個主從硬碟通訊並收發數據。SMBus 也可用於免
跳線設計的主機板上。
系統管理匯流排(SMBus)是一個兩線接口。通過它,各設備之間以及設備與系統的其他部分之間可以互相通信。它基於I2C操作原理。SMBus為系統和電源管理相關的任務提供一條
控制匯流排。一個系統利用SMBus可以和多個設備互傳信息,而不需使用獨立的控制線路。
系統管理匯流排(SMBus)標準涉及三類設備。從設備,接收或回響命令的設備。主設備,用來發布命令,產生時鐘和終止傳送的設備。主機,是一種專用的主設備,它提供與系統CPU的主接口。主機必須具有主-從機功能,並且必須支持SMBus通報協定。在一個系統里只允許有一個主機。
相似點
2條線的匯流排協定(1個時鐘,1個數據) + 可選的SMBus提醒線
主-從通信,主設備提供時鐘
多主機功能
SMBus數據格式類似於I2C的7位地址格式
不同點
下表為SMBus和I2C的不同點。
SMBus與I2C的比較
SMBus
| I2C
|
最大傳輸速度 100kHz
| 最大傳輸速度400kHz
|
最小傳輸速度 10kHz
| 無最小傳輸速度
|
35ms時鐘低逾時
| 無時鐘逾時
|
固定的邏輯電平
| 邏輯電平由VDD決定
|
不同的地址類型(保留、動態等) 7位、 10位和廣播呼叫從地址類型
| 不同的匯流排協定(快速命令、 處理呼叫等) 無匯流排協定
|
4、SMBus套用用途
利用系統管理匯流排,設備可提供製造商信息,告訴系統它的型號/部件號,保存暫停事件的狀態,報告不同類型的錯誤,接收控制參數,和返回它的狀態。SMBus為系統和電源管理相關的任務提供控制匯流排。
5、設備標識
在系統管理匯流排上,任何一個作為從模式的設備都有一個唯一的地址,叫做從地址。保留的從地址表請參考2.0版的SMBus規範
6、匯流排協定
SMBus技術規範支持9個匯流排協定。有關這些協定的詳細資訊和SMBus地址類型,請參考2.0版的SMBus規範)。這些協定由用戶的軟體來執行。
SMBus從地址衝突可以通過給每個從設備動態分配一個新的唯一地址來解決。ARP有以下的屬性:
地址分配利用標準SMBus物理層仲裁機制
當設備維持供電期間,分配的地址仍保持不變,允許設備在斷電時保留其地址。
在地址分配後,沒有額外的SMBus的打包開銷(也就是說訪問分配地址的設備與訪問固定地址的設備所用時間是一樣的)。
任何一個SMBus主設備可以遍歷匯流排。
8、唯一的設備標識符(UDID)
為了提供一種為進行地址分配目的而區分每個設備的機制,每個設備必須擁有一個唯一的設備標識符。
關於在ARP上128位的UDID細節的信息,參考2.0版的SMBus規範
9、SMBus提醒模式
SMBus提醒是一個帶中斷線的可選信號,用於那些希望擴展他們的控制能力而犧牲一個
引腳的設備。SMBALERT和SCL和SDA信號一樣,是一種線與信號。SMBALERT通常和SMBus廣播呼叫地址一起使用。與SMBus有關的訊息為2位元組。單一的從設備可以通過SMBALERT發信號給主機表示它希望進行通信,這可通過設定I2C_CR1
暫存器上的ALERT位實現。主機處理該中斷並通過提醒回響地址ARA(Alert Response Address,地址值為0001100x)訪問所有SMBALERT設備。只有那些將SMBALERT拉低的設備能應答ARA。此狀態是由I2C_SR1暫存器中的SMBALERT狀態標記來標識的。主機執行一個修改過的接收位元組操作。由從傳送設備提供的7位設備地址被放在位元組的7個最高位上,第八個位可以是0或1。如果多個設備把SMBALERT拉低,最高優先權設備(最小的地址)將在地址傳輸期間通過標準仲裁贏得通信權。在確認從地址後,此設備不得再拉低它的SMBALERT,如果當信息傳輸完成後,主機仍看到SMBALERT低,就知道需要再次讀ARA。沒有執行SMBALERT信號的
主機可以定期訪問ARA。有關SMBus提醒模式的更多詳細資訊,請參考2.0版的SMBus規範
10、逾時錯誤
在定時規範上I2C和SMBus之間有很多差別。SMBus定義一個時鐘低逾時,35ms的逾時。SMBus規定TLOW:SEXT為從設備的累積時鐘低擴展時間。SMBus規定TLOW:MEXT為主設備的累積時鐘低擴展時間。更多逾時細節請參考2.0版的SMBus規範I2C_SR1中的
狀態標誌Timeout或Tlow錯誤表明了這個特徵的狀態。
11、如何使用SMBus模式的接口
為了從I2C
模式切換到SMBus模式,應該執行下列步驟:
設定I2C_CR1暫存器中的SMBus位
按套用要求配置I2C_CR1暫存器中的SMBTYPE和ENARP位。
如果你想把設備配置成主設備,產生起始條件的步驟見15.4.2 I2C主模式。否則,參見15.4.1I2C從模式。
軟體程式必須處理多種SMBus協定。
如果ENARP=1且SMBTYPE=0,使用SMB設備默認地址。
如果ENARP=1且SMBTYPE=1,使用SMB主設備頭欄位。
如果SMBALERT=1,使用SMB提醒回響地址。