本文档基于 MPS 官方《MP4248 数据手册》(Rev. 1.0,2024-05-23,)整理, 面向在 EVL4248-QV-00A 评估板上用 MCU 通过 I2C 控制输出电压的开发场景。
1. 通信基础
MP4248 的 I2C 接口遵循 PMBus 协议:
| 从机地址(7 位) | 0x67(可通过 OTP 修改) |
| 8 位写地址 / 读地址 | 0xCE / 0xCF |
| 时钟频率 fSCL | 最高 1 MHz(兼容 100kHz / 400kHz) |
| 逻辑高电平 VIH | ≥ 1.35V(3.3V MCU 可直接驱动) |
| 逻辑低电平 VIL | ≤ 0.9V |
| 通信生效条件 | VIN 和 EN 均高于 UVLO 阈值后 I2C 才激活 |
| 上拉电阻 | 评估板已集成 2.2kΩ(R11/R12)至 VCC,接 CN2 即可 |
2. PMBus 命令总表
| 0x01 | OPERATION | R/W | 1 | Reg | On(0x80) |
| 0x03 | CLEAR_FAULTS | Send Byte | 1 | - | - |
| 0x21 | VOUT_COMMAND | R/W | 2 | Linear16 | VREF = 0.5V |
| 0x79 | STATUS_WORD | R | 2 | Reg | - |
| 0x7D | STATUS_TEMPERATURE | R | 1 | Reg | - |
| 0xD0 | MFR_CTRL1 | R/W | 1 | Reg | - |
| 0xD1 | MFR_CURRENT_LIMIT | R/W | 1 | Reg | 5.4A |
| 0xD2 | MFR_CTRL2 | R/W | 1 | Reg | - |
| 0xD3 | MFR_CTRL3 | R/W | 1 | Reg | - |
| 0xD4 | MFR_CTRL4 | R/W | 1 | Reg | - |
| 0xD8 | MFR_STATUS_MASK | R/W | 1 | Reg | - |
| 0xD9 | MFR_OTP_CONFIGURATION_CODE | R/W | 1 | Reg | - |
| 0xDA | MFR_OTP_REVISION_NUMBER | R/W | 1 | Reg | - |
注:以上寄存器值基于 MP4248-0000 版本(评估板 EVL4248-QV-00A 所用芯片即 MP4248GQV-0000)。
3. VOUT_COMMAND(0x21)详解
3.1 数据格式
命令码:0x21,读写各 2 字节(16 位)
格式:Linear16(Mode bits = 000b),16 位无符号整数,低字节在前(Write Word 协议先发 Data Byte Low)
通用解码公式(Linear16):
Voltage = V × 2^N
其中 V 为 16 位无符号整数,N 为 5 位二进制补码整数。
3.2 输出电压计算公式
VOUT = V × 2^(-10) × FB_RATIO / 10
V:写入 0x21 寄存器的 16 位无符号整数值
FB_RATIO:反馈电阻分压比 = (R1 + R2) / R2
出厂默认值:0x1400(十进制 5120)→ VREF = 0.5V → VOUT = 5V(FB_RATIO = 10 时)
内部 DAC 范围 0.1V ~ 2.147V,步进 1mV(11 位 DAC,输入全 0 时输出 0.1V)。
3.3 分辨率与有效范围
| 10 | 10mV | 1V ~ 21.47V | 默认推荐(SPR 模式) |
| 15 | 15mV | 1V ~ 32.205V | 28V/5A EPR 模式 |
⚠️ 超出有效范围时 VOUT 行为异常,请勿超范围设置。
3.4 常用电压速查表
FB_RATIO = 10(数据手册 Table 1):
| 5V | 0.5V | 0x1400 |
| 9V | 0.9V | 0x2400 |
| 15V | 1.5V | 0x3C00 |
| 20V | 2.0V | 0x5000 |
FB_RATIO = 15(数据手册 Table 2,EPR 28V 应用):
| 5V | 0.333V | 0x0D56 |
| 9V | 0.6V | 0x1800 |
| 15V | 1.0V | 0x2800 |
| 20V | 1.333V | 0x3556 |
| 28V | 1.8667V | 0x4AAB |
3.5 评估板实际分压比说明
EVL4248-QV-00A 原理图反馈网络为 R1 = 90.9kΩ,R2 = 10kΩ,实际:
FB_RATIO = (90.9k + 10k) / 10k = 10.09
数据手册速查表按 FB_RATIO = 10 理想值给出,评估板实际输出会有约 0.9% 的偏差(例如写 0x1400 时实际 VOUT ≈ 0.5V × 10.09 ≈ 5.045V)。对精度敏感的应用请用实际分压比 10.09 代入公式计算。
3.6 取整规则
计算出的 VOUT_COMMAND 不是整数时,取整数部分 + 1(向上取整),即:
V = ceil( VOUT × 1024 × 10 / FB_RATIO )
4. I2C 通信时序(PMBus 消息格式)
4.1 写 VOUT_COMMAND(Write Word)
S | 从机地址(0x67)+W | A | 命令码 0x21 | A | 数据低字节 | A | 数据高字节 | A | P
例:设置 VOUT = 12V(FB_RATIO = 10 → V = 12 × 1024 = 12288 = 0x3000):
发送字节序列:0xCE, 0x21, 0x00, 0x30 ↑8位写地址 ↑命令码 ↑低字节 ↑高字节
4.2 读 VOUT_COMMAND(Read Word)
S | 从机地址+W | A | 命令码 0x21 | A | Sr | 从机地址+R | A | 数据低字节 | A | 数据高字节 | A | P
4.3 软开关机(OPERATION, 0x01,Write Byte)
发送:0xCE, 0x01, 0x80 → 输出开(默认) 发送:0xCE, 0x01, 0x00 → 输出关
注意:EN 引脚优先级高于 OPERATION 寄存器,EN 拉低时写 0x80 也无法开启输出。
5. MCU 代码示例(C 语言)
#include <stdint.h>
#include <math.h>
#define MP4248_ADDR_7BIT 0x67
#define CMD_VOUT_COMMAND 0x21
#define CMD_OPERATION 0x01
/* 评估板 EVL4248-QV-00A 实际分压比;若按数据手册理想值可用 10.0f */
#define FB_RATIO 10.09f
/* 计算 VOUT_COMMAND 寄存器值(手册要求非整数时向上取整) */
uint16_t mp4248_vout_command(float vout_v)
{
float v = vout_v * 1024.0f * 10.0f / FB_RATIO;
return (uint16_t)ceilf(v);
}
/* 设置输出电压:PMBus Write Word,低字节先发 */
void mp4248_set_vout(float vout_v)
{
uint16_t reg = mp4248_vout_command(vout_v);
uint8_t buf[3];
buf[0] = CMD_VOUT_COMMAND; /* 命令码 0x21 */
buf[1] = reg & 0xFF; /* Data Byte Low */
buf[2] = reg >> 8; /* Data Byte High */
i2c_master_write(MP4248_ADDR_7BIT, buf, 3); /* 按平台 I2C API 替换 */
}
/* 软开关机 */
void mp4248_set_output(uint8_t on)
{
uint8_t buf[2] = { CMD_OPERATION, on ? 0x80 : 0x00 };
i2c_master_write(MP4248_ADDR_7BIT, buf, 2);
}
/* 示例:设置 12V 输出 */
void app_init(void)
{
mp4248_set_output(1); /* 确保输出使能 */
mp4248_set_vout(12.0f); /* VOUT = 12V */
}6. 注意事项
调压斜率:VOUT 变化按设定摆率渐变(VREF 上升默认 0.16mV/µs,下降默认 0.04mV/µs,经 0xD3 寄存器配置;实际 VOUT 摆率 = VREF 摆率 × FB_RATIO)。大幅跳变电压(如 5V→20V)需要数十毫秒,不是瞬时完成。
功率约束:VOUT > 21.47V 需要改反馈网络为 FB_RATIO = 15(EPR 模式),且 VIN > 19V 才能输出 28V/5A。
电流限制:输出同时受 CC 限流约束(默认 5.4A,经 0xD1 配置),调压时注意功率是否超限。
读回校验:可用 Read Word 读回 0x21 寄存器,或读 0x79 STATUS_WORD 检查 VOUT_OV_FAULT 等故障位;故障清除用 Send Byte 发送 0x03(CLEAR_FAULTS)。
NACK 排查:第三方 USB-I2C 适配器常见问题是把 7 位地址 0x67 误填成 0x33(右移错误)或漏掉地址左移,确认发送的第一个字节是 0xCE(写)。
我要赚赏金
