12,798 瀏覽數

PSMI – Power Supply Management Interface

什麼是 Power Supply Management Interface (PSMI)
這是新的電源管理功能,主要可以讓主機系統可以與電源溝通,並隨時提供電源供應器的電流,電壓,系統功耗,風扇轉速和溫度給主機系統知道.主機會依據實際情況來調整系統配置 如溫度的監控與風扇的控制,可以讓系統能以更好的方式來調整風扇速度並改善溫度與系統噪音問題.而電壓監控可以讓系統計算輸入功率和警告系統電壓調節的問題.

所以規範並定義了電源管理介面(PSMI),主機系統主要是透過 SMBus (類似於 I²C ,也有直接採用 I²C 來做)的方法與電源供應器溝通.

那先來看看什麼是 I²C – (Inter-Integrated Circuit,讀法為 “I-squared-C”) 是一種慢速 serial bus 的協定,主要透過兩條線路的匯流排 (串列資料(SDA)及串列時脈(SCL)) 與電腦上的控制晶片(MC : Micro Controller)做溝通.

Power Supply Management Interface (PSMI) 主要提供了下面的功能.
Thermal management

  • Ambient / Control temperature sensor(s)
  • Fan speed sensor(s) / System control of power supply fan(s)
  • Power supply fan control override indicator

Power monitoring

  • AC input / Output voltages
  • AC Input / Output currents

Diagnostics

  • Shutdown events; general failure, over current, over temperature, and loss of AC input
  • Warning events; high power, high current, high temperature, slowing fan

Status

  • Fan control override mode
  • Signals; PWOK, PSON
  • Input voltage range indicator
  • Interrupt
  • Redundancy

Control

  • Fan control mode; system or power supply
  • Failure and Warning LED indication

Power Supply Capability records

  • Reporting of power supply capabilities; currents, voltages, wattages, temperatures, and fan speed
  • Header; PSMI designator, PSMI Design Guide revision level, Code revision level, PSMI device vendor
    specific data

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

Temperature 與 AC input / Output voltages ,currents 讀取的值都還是需要再做轉換, Output Voltage 的換算方式如下:
PSMI01
PSMI 用兩個位元組 (2bytes=16bits) 來紀錄 Output Voltage
0x0C00 (透過 I2C 讀出來的值 ) 先轉成 0000 1100 0000 0000 (二進制)

0000 1100 0000 0000 (Bit 15 表示 0-> 正值 1->負值,負值要做2補數運算:一個數字的二補數就是將該數字作位元反相運算,再將結果加 1)

0000 1100 0000 0000 (Bit 0-7 -> 小數點 ,Bit 8-14 整數)

0000 1100 (Bit -> 8-14 整數) 轉換成10進制 所以是 4+8=12
0000 0000 (Bit 0-7 -> 小數點) 如果有值就一樣轉成 10進制 但需要除 256 (1/256)
所以輸出電壓 Output Voltage 算出來是 12V

算起來蠻麻煩的,其實有一個比較好的方式來算,先轉成10進制,然後除 256 (1/256) 就可以算出來.這種方式很適合用在 Excel 公式的直接轉換.

0x0C00 (十六進制)= 0000 1100 0000 0000(二進制) = 3072(十進制)
3072/256=12 (一樣算出)

但不同的 sensor 算法皆不同.詳細算法請參考 Power Supply Management Interface Design Guide2.12
Temperature sensors 除 64 (1/64C)
Input Voltage 除 32 (1/32V)

2 Replies to “PSMI – Power Supply Management Interface”

  1. 自動參照通知: PMbus – Power Management Bus – Benjr.tw

  2. 自動參照通知: Linux command – i2c-dev | Benjr.tw

發表迴響