PMbus (Power Management Bus) 就如同 SMBus ,只是 PMBus 應用在 Power supply 上面.他也是從 I²C 所衍生出來的.
那什麼是 I²C / SMbus / IPMB – https://benjr.tw/11240
不管是 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 – https://benjr.tw/93924
PMBUS 的值在 Linux 下我們可以直接透過 I²C 的方式來讀取.關於 I²C 的指令請先參考 https://benjr.tw/93915
回到 PMBUS SPEC,這邊的重點是討論如何將 Raw data 轉換成實際可以辨識的資料.在 http://pmbus.org 網站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)
後面 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
- 後面 11 bit Y 可以用 mod(取餘數來做)
- 前面 5 bit N 可以用除法來做