10,856 瀏覽數

PMbus – Power Management Bus

PMbus (Power Management Bus) 就如同 SMBus ,只是 PMBus 應用在 Power supply 上面.他也是從 I²C 所衍生出來的.

那什麼是 I²C / SMbus / IPMB

不管是 I²C bus (Inter-Integrated Circuit,讀法為 “I-squared-C”)還是 SMBus(System Management Bus) , IPMB(Intelligent Platform Management Bus) 他們是一種慢速 serial bus 的協定,主要透過兩條線路的匯流排 (串列資料(SDA)及串列時脈(SCL)) 與電腦上的控制晶片(MC : Micro Controller)做溝通.
最早推出的是由飛利浦公司主導的 I²C 主要也是為了連接低速週邊裝置. 而 SMBus 是由 Intel 參考了 I²C 主要是為了系統上較慢速的裝置與電源管理裝置之間的溝通. 透過這套系統可以獲得這些裝置的設備資訊如型號或是狀態等資訊. 通常而言會將SMBus 視為 I²C 的子集,也因此 I²C / smbus 在某個程度上是相容的.目前 Linux 核心同時支援 I²C / smbus,在核心編譯的 Device Drivers 就可以找到 I²C / smbus .

還有一個同性質的電源管理介面 PSMI – Power Supply Management Interface

PMBUS 的值在 Linux 下我們可以直接透過 I²C 的方式來讀取.關於 I²C 的指令請先參考 http://benjr.tw/93915

回到 PMBUS SPEC,這邊的重點是討論如何將 Raw data 轉換成實際可以辨識的資料.在 PMBus_Specification_Part_II_Rev_1-2_20100906.pdf Page 21 – 7.1 Linear Data Format 文中裡面提到如何計算把 Raw data 轉換成實際可以辨識的資料.

7.1 Linear Data Format
一般都是採用 Linear Data Format ,而下面幾種的 raw data 都可以透過下面的公式做轉換:

  • Output Current
  • Input Voltage
  • Input Current
  • Operating Temperatures
  • Time (durations)
  • Energy Storage Capacitor Voltage.

所有 Linear Data Format 的資料都是 2 個 bytes.但需要拆解成兩個部分.

  • 後面 11 bit, 2的補數 (2’s complement)
  • 前面 5 bit, 2的補數 (2’s complement)

如圖所示:
PMBUS01

轉換公式:
X = Y·2N (N 為指數)
PMBUS02

後面 11 bit (2的補數 (2’s complement)) 為 Y
前面 5 bit, (2的補數 (2’s complement)) 為 N
而 X 是轉換後可以辨識的數值.

資料轉換需要用到 2的補數 (2’s complement),這個 2的補數 就是最前面的 bit 為 1 時,當作是負數,並將數值做轉換 (0 變 1 , 1 變 0 最後再加上 1)

假設 88h READ_VIN 讀到的值是 1111 1000 1101 1100
Y = 000 1101 1100
直接轉換成10進位 220
N = 1111 1
最前面的位元為 1 所以為負數,需要轉2的補數 1111 = 0001

X = 220·2-1(2 的-1指數)

答案就是 110 V

如果要用在 Excel

  1. 後面 11 bit Y 可以用 mod(取餘數來做)
  2. 前面 5 bit N 可以用除法來做

發表迴響