PMBus(Power Management Bus)是一種電源管理總線一種控制電源轉(zhuǎn)換器的開放的標(biāo)準(zhǔn)協(xié)議。它脫胎于基于I2C和SMBUS(System Management Bus),但是定義了很多和電源管理相關(guān)的命令。可以說是之前的I2C是物理層(具體Slave會(huì)有指令集,但只是怎么該slave,沒有統(tǒng)一的指令集),而現(xiàn)在的PMbus卻有了協(xié)議層,如果想用PMbus就必須遵守該規(guī)范,這就有了統(tǒng)一的協(xié)議,加速了它的推廣和應(yīng)用。現(xiàn)在很多可編程的PowerIC都引用了這個(gè)PMbus協(xié)議。
?PMBus運(yùn)行時(shí)控制和狀態(tài)
–通過調(diào)整VREF實(shí)現(xiàn)運(yùn)行時(shí)電壓定位
–使能和禁用每個(gè)開關(guān)
–故障和狀態(tài)監(jiān)視
?用戶可配置的PMBus/I2C選項(xiàng),保存在EEPROM中
–電源接通和關(guān)斷排序
–可基于固定時(shí)間延遲或PGOOD實(shí)現(xiàn)電源排序
–通過VREF配置實(shí)現(xiàn)初始電壓定位
–針對(duì)每個(gè)開關(guān)調(diào)節(jié)PWM頻率
–針對(duì)每個(gè)開關(guān)單獨(dú)進(jìn)行PWM相位對(duì)齊以盡可能減小紋波和電容器尺寸
–可調(diào)節(jié)每個(gè)穩(wěn)壓器的電流限制以優(yōu)化電感器的尺寸和成本
–軟啟動(dòng)時(shí)間
一、硬件設(shè)計(jì)
1.1電感選擇
根據(jù)電感選擇公式
注:is the current ripple in the inductor通常取最大電流的0.1~0.3。Vin為12V±10%
我們需要的電壓大概范圍是2~6V,電流0.5~2A,為2.2MHZ。代入公式計(jì)算得到1.26uH~27.27uH。
選擇通常用的值,,電流2A,為2.2MHZ,帶入可得2.8uH。
1.2輸出電容選擇
紋波范圍一般會(huì)在10mA~500mA,如果選擇100mA得以得到輸出容大約0.003uF~6.15uF。
選擇完電感和輸出電容,就可以根據(jù)不同的模式連接電路了這里可以自由參考datasheet設(shè)計(jì)。
二、代碼設(shè)計(jì)
2、1數(shù)據(jù)格式
圖1 Send Byte Protocol With PEC
圖2Write Byte Protocol With PEC
When data is transmitted, the lowest order byte is sent first and the highest order byte is sent last.
Within any byte, the most significant bit (MSB) is sent first and the least significant bit (LSB) is sent last.
7位的Slaveaddress是根據(jù)I2CADDR上的電阻確定,不同的阻值地址不同。Wr指讀寫標(biāo)志位,1指讀;0指寫。8位的Commandcode這里指器件的寄存器地址。Databyte是向寄存器寫入的數(shù)值。TPSXX支持的PEC(Packet Error Checking)代碼,該代碼將在每次讀寫操作結(jié)束時(shí)進(jìn)行驗(yàn)證。PEC計(jì)算的內(nèi)容包括Salver address(包括Wr), Command code和Data bytes for。
2.2 PEC計(jì)算
由于TPSXX的PEC是默認(rèn)使能的,平且該寄存器是只讀寄存器。
圖3 CAPABILITY COMMAND Data Byte Contents
在發(fā)送端和接收端都需要進(jìn)行PEC的計(jì)算。PMbus的PEC計(jì)算是采用8-bit循環(huán)冗余校驗(yàn)碼(cyclic redundancy check)CRC-8。
介紹一下CRC-8:
CRC即循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check):是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯(cuò)功能,對(duì)數(shù)據(jù)進(jìn)行多項(xiàng)式計(jì)算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。
圖3參數(shù)模型
NAME:參數(shù)模型名稱。
WIDTH:寬度,即CRC比特?cái)?shù)。
POLY:生成項(xiàng)的簡(jiǎn)寫,以16進(jìn)制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成項(xiàng)是0x104C11DB7。
INIT:這是算法開始時(shí)寄存器(crc)的初始化預(yù)置值,十六進(jìn)制表示。
REFIN:待測(cè)數(shù)據(jù)的每個(gè)字節(jié)是否按位反轉(zhuǎn),True或False。
REFOUT:在計(jì)算后之后,異或輸出之前,整個(gè)數(shù)據(jù)是否按位反轉(zhuǎn),True或False。
XOROUT:計(jì)算結(jié)果與此參數(shù)異或后得到最終的CRC值。
從上表可以看出CRC-8的生成項(xiàng)C(x) =x8 +x2 + x +1;INIT和XOROUT都是00;REFIN和REFOUT都是false。
具體的計(jì)算過程:
將多項(xiàng)式轉(zhuǎn)化為二進(jìn)制序列,由C(x) = x8+ x2 +x+1可知二進(jìn)制一共有9位,第8位、第2位、第1位和第0位分別為1,則序列為100000111。
舉個(gè)例子要計(jì)算的數(shù)據(jù)為24-bit數(shù)據(jù)da00ff(16進(jìn)制),多項(xiàng)式的最高次為8,則在數(shù)據(jù)的后面加上8位0,數(shù)據(jù)變?yōu)閐a00ff00(16進(jìn)制),然后使用模2除法(異或運(yùn)算)除以除數(shù)100000111,最終得到的除不盡的余數(shù),變?yōu)槲覀円蟮腃RC-8結(jié)果。
圖4模2除法計(jì)算
為了得到并行輸出的結(jié)果,需要把data分解一下。該電源的有效數(shù)據(jù)是24bits,我們就以24-dit數(shù)據(jù)為例。Data為D(x),生成項(xiàng)為C(x),Di為D(x)的第i位(0≤i≤23,整數(shù)),Dn為D(x)的第n位,且為“1”(0≤n≤23,整數(shù)),“^”為異或,“÷”為模二除法。
CRC(x)=D(x)÷C(x)……………………………………………………①
D(x)= D23^D22^D21^D20^……^D0 ………………………………②
②代入①
CRC(x)=(D23÷C(x))^(D22÷C(x))^……^(D0÷C(x))
如果D(x)為24’hFFFFFF時(shí),D23、D22、……D0都是定值,故他們與生成項(xiàng)C(x)的模二除法的結(jié)果是固定的,如表1。如果D(x)中有哪位是”0”,則它對(duì)應(yīng)的模二除法結(jié)果就為00。就是說,如果Di為“1”時(shí)就按下表中Dn的CRC-8計(jì)算結(jié)果,如果是“0”那么此位的計(jì)算結(jié)果就是“00”,可以推出,Di與與Dn的CRC-8計(jì)算結(jié)果是“&”的關(guān)系,如果Dn的CRC-8計(jì)算結(jié)果相應(yīng)位為零,此項(xiàng)就可以省區(qū),又異或是按位計(jì)算則可并行得到需要的結(jié)果。
以CRC-8的第7位的計(jì)算為例。
從Dn的CRC-8的計(jì)算結(jié)果中,最高位為“1”的有D22、D20、d[18]、d[17]、 d[15]、 d[13]、 d[11]、d[7]、 d[6]、 d[5]。然后對(duì)這些位做異或,就可以得到crc[7]。
crc[7] = d[22] ^ d[20] ^ d[18] ^ d[17] ^ d[15] ^ d[13] ^ d[11] ^ d[7] ^ d[6] ^ d[5]
按上述方法可以得到:
crc[0] = d[23] ^ d[21] ^ d[19] ^ d[18] ^ d[16] ^ d[14] ^ d[12] ^ d[8] ^ d[7] ^ d[6] ^ d[0];
crc[1] = d[23] ^ d[22] ^ d[21] ^ d[20] ^ d[18] ^ d[17] ^ d[16] ^ d[15] ^ d[14] ^ d[13] ^ d[12] ^ d[9] ^ d[6] ^ d[1] ^ d[0];
crc[2] = d[22] ^ d[17] ^ d[15] ^ d[13] ^ d[12] ^ d[10] ^ d[8] ^ d[6] ^ d[2] ^ d[1] ^ d[0];
crc[3] = d[23] ^ d[18] ^ d[16] ^ d[14] ^ d[13] ^ d[11] ^ d[9] ^ d[7] ^ d[3] ^ d[2] ^ d[1];
crc[4] = d[19] ^ d[17] ^ d[15] ^ d[14] ^ d[12] ^ d[10] ^ d[8] ^ d[4] ^ d[3] ^ d[2];
crc[5] = d[20] ^ d[18] ^ d[16] ^ d[15] ^ d[13] ^ d[11] ^ d[9] ^ d[5] ^ d[4] ^ d[3];
crc[6] = d[21] ^ d[19] ^ d[17] ^ d[16] ^ d[14] ^ d[12] ^ d[10] ^ d[6] ^ d[5] ^ d[4];
crc[7] = d[22] ^ d[20] ^ d[18] ^ d[17] ^ d[15] ^ d[13] ^ d[11] ^ d[7] ^ d[6] ^ d[5];
數(shù)據(jù)代號(hào) | 數(shù)據(jù) | Dn的CRC-8 |
D23 | 800000 | 0B |
D22 | 400000 | 86 |
D21 | 200000 | 43 |
D20 | 100000 | A2 |
D19 | 080000 | 51 |
D18 | 040000 | AB |
D17 | 020000 | D6 |
D16 | 010000 | 6B |
D15 | 008000 | B6 |
D14 | 004000 | 5B |
D13 | 002000 | AE |
D12 | 001000 | 57 |
D11 | 000800 | A8 |
D10 | 000400 | 54 |
D9 | 000200 | 2A |
D8 | 000100 | 15 |
D7 | 000080 | 89 |
D6 | 000040 | C7 |
D5 | 000020 | E0 |
D4 | 000010 | 70 |
D3 | 000008 | 38 |
D2 | 000004 | 1C |
D1 | 000002 | 0E |
D0 | 000001 | 07 |
表1分式CRC-8計(jì)算結(jié)果
三、仿真結(jié)果
圖5CRC-8程序仿真
圖6PMBUS仿真
圖5中d[23:0]為需要傳輸?shù)挠行唬ㄐ枰?jì)算PEC部分),newCRC_D24[7:0]為計(jì)算得到的PEC結(jié)果。
圖6中i2c_scl_out1和i2c_sda1是PMBUS的兩根傳輸線,link_data1是ack應(yīng)答信號(hào)標(biāo)志位。
總結(jié)一下,此次我們用PMbus協(xié)議對(duì)Power IC進(jìn)行控制,主要是最PEC部分進(jìn)行了說明,從最終的結(jié)果看,輸出電壓都在我的預(yù)想范圍內(nèi),可以說取得了不錯(cuò)的效果。在此感謝紫光同創(chuàng)和黑金科技提供的PGL22G硬件平臺(tái)。
責(zé)任編輯:xj
原文標(biāo)題:紫光同創(chuàng)PGL22G開發(fā)平臺(tái)試用連載(1)——PMbus調(diào)試經(jīng)驗(yàn)
文章出處:【微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
PMBus
+關(guān)注
關(guān)注
3文章
103瀏覽量
30366 -
開發(fā)平臺(tái)
+關(guān)注
關(guān)注
0文章
94瀏覽量
14320 -
紫光
+關(guān)注
關(guān)注
2文章
412瀏覽量
34098
原文標(biāo)題:紫光同創(chuàng)PGL22G開發(fā)平臺(tái)試用連載(1)——PMbus調(diào)試經(jīng)驗(yàn)
文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論