紫光同创PGL22G开发平台试用连载(1)——PMbus调试经验

yirixian 提交于 周二, 09/29/2020
紫光同创PGL22G开发平台试用连载(1)——PMbus调试经验

PMBusPower Management Bus)是一种电源管理总线一种控制电源转换器的开放的标准协议。它脱胎于基于I2CSMBUSSystem Management Bus),但是定义了很多和电源管理相关的命令。可以说是之前的I2C是物理层(具体Slave会有指令集,但只是怎么该slave,没有统一的指令集),而现在的PMbus却有了协议层,如果想用PMbus就必须遵守该规范,这就有了统一的协议,加速了它的推广和应用。现在很多可编程的PowerIC都引用了这个PMbus协议。

小编所在的公司最近就对这样的可编程IC“下手了”。我们把“第一次”给了TI公司的TPSXX(不做广告)电源管理芯片。

PMBus 运行时控制和状态

–通过调整 VREF 实现运行时电压定位

–使能和禁用每个开关

–故障和状态监视

•用户可配置的 PMBus/I2C 选项,保存在 EEPROM

–电源接通和关断排序

–可基于固定时间延迟或 PGOOD 实现电源排序

–通过 VREF 配置实现初始电压定位

–针对每个开关调节 PWM 频率

–针对每个开关单独进行 PWM 相位对齐以尽可能减小纹波和电容器尺寸

–可调节每个稳压器的电流限制以优化电感器的尺寸和成本

–软启动时间

一、硬件设计

1.1电感选择

根据电感选择公式紫光同创PGL22G开发平台试用连载(1)——PMbus调试经验

注:紫光同创PGL22G开发平台试用连载(1)——PMbus调试经验is the current ripple in the inductor通常取最大电流的0.1~0.3Vin12V±10%

我们需要的电压大概范围是2~6V,电流0.5~2A紫光同创PGL22G开发平台试用连载(1)——PMbus调试经验2.2MHZ。代入公式计算得到1.26uH~27.27uH

选择通常用的值,紫光同创PGL22G开发平台试用连载(1)——PMbus调试经验,电流2A紫光同创PGL22G开发平台试用连载(1)——PMbus调试经验2.2MHZ,带入可得2.8uH

1.2输出电容选择

紫光同创PGL22G开发平台试用连载(1)——PMbus调试经验纹波范围一般会在10mA~500mA,如果选择100mA得以得到输出容大约0.003uF~6.15uF

选择完电感和输出电容,就可以根据不同的模式连接电路了这里可以自由参考datasheet设计。

二、代码设计

21数据格式

图1 Send Byte Protocol With PEC

1 Send Byte Protocol With PEC

图2Write Byte Protocol With PEC

2Write Byte Protocol With PEC

l  When data is transmitted, the lowest order byte is sent first and the highest order byte is sent last.

l  Within any byte, the most significant bit (MSB) is sent first and the least significant bit (LSB) is sent last.

7位的Slaveaddress是根据I2CADDR上的电阻确定,不同的阻值地址不同。Wr指读写标志位,1指读;0指写。8位的Commandcode这里指器件的寄存器地址。Databyte是向寄存器写入的数值。TPSXX支持的PECPacket Error Checking)代码,该代码将在每次读写操作结束时进行验证。PEC计算的内容包括Salver address(包括Wr), Command codeData bytes for

2.2 PEC计算

由于TPSXXPEC是默认使能的,平且该寄存器是只读寄存器。

图3 CAPABILITY COMMAND Data Byte Contents

3 CAPABILITY COMMAND Data Byte Contents

在发送端和接收端都需要进行PEC的计算。PMbusPEC计算是采用8-bit循环冗余校验码(cyclic redundancy checkCRC-8

介绍一下CRC-8

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

图3 参数模型

3 参数模型

NAME:参数模型名称。 
WIDTH:宽度,即CRC比特数。 
POLY:生成项的简写,以16进制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成项是0x104C11DB7 
INIT:这是算法开始时寄存器(crc)的初始化预置值,十六进制表示。 
REFIN:待测数据的每个字节是否按位反转,TrueFalse 
REFOUT:在计算后之后,异或输出之前,整个数据是否按位反转,TrueFalse 
XOROUT:计算结果与此参数异或后得到最终的CRC值。

从上表可以看出CRC-8的生成项C(x) = x8 + x2 + x +1INITXOROUT都是00REFINREFOUT都是false

具体的计算过程:

Ø  将多项式转化为二进制序列,由C(x) = x8+ x2 +x+1可知二进制一共有9位,第8位、第2位、第1位和第0位分别为1,则序列为100000111

Ø  举个例子要计算的数据为24-bit数据da00ff16进制),多项式的最高次为8,则在数据的后面加上80,数据变为da00ff0016进制),然后使用模2除法(异或运算)除以除数100000111,最终得到的除不尽的余数,变为我们要求的CRC-8结果。

图4模2除法计算

42除法计算

为了得到并行输出的结果,需要把data分解一下。该电源的有效数据是24bits,我们就以24-dit数据为例。DataD(x),生成项为C(x)DiD(x)的第i位(0i23,整数),DnD(x)的第n位,且为“1”(0n23,整数), “^”为异或,“÷”为模二除法

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时,D23D22……D0都是定值,故他们与生成项C(x)的模二除法的结果是固定的,如表1。如果D(x)中有哪位是”0”,则它对应的模二除法结果就为00。就是说,如果Di为“1”时就按下表中DnCRC-8计算结果,如果是“0”那么此位的计算结果就是“00”,可以推出,Di与与DnCRC-8计算结果是“&”的关系,如果DnCRC-8计算结果相应位为零,此项就可以省区,又异或是按位计算则可并行得到需要的结果。

CRC-8的第7位的计算为例。

DnCRC-8的计算结果中,最高位为“1”的有D22D20d[18]d[17] d[15] d[13]  d[11] d[7] d[6] d[5]。然后对这些位做异或,就可以得到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];

数据代号

数据

DnCRC-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计算结果

三、仿真结果 

图5CRC-8程序仿真

5CRC-8程序仿真

图6PMBUS仿真 

6PMBUS仿真 

5d[23:0]为需要传输的有效位(需要计算PEC部分),newCRC_D24[7:0]为计算得到的PEC结果。

6i2c_scl_out1i2c_sda1PMBUS的两根传输线,link_data1ack应答信号标志位。

总结一下,此次我们用PMbus协议对Power IC行控制,主要是最PEC部分进行了说明,从最终的结果看,输出电压都在我的预想范围内,可以说取得了不错的效果。在此感谢紫光同创和黑金科技提供的PGL22G硬件平台。

注册送8―88的白菜网址相关的文章

Digi-Key