USB论坛
直播中

吴湛

11年用户 896经验值
擅长:33391
私信 关注
[问答]

使用USB C充电器已连接到 CYPD3176 BCR-Plus,有没有办法通过 I2C 或其他方式知道充电器的电压和电流容量?

如果使用传统 USB C 充电器(BC1.2, QC2.0 或 USB-A 端口)已连接到 CYPD3176 BCR-Plus,有没有办法通过 I2C 或其他方式知道充电器的电压和电流容量? 我们知道,对于 PD 充电器,我们可以从 CURRENT_PDO 获取信息,但无法从 HPI 手册中找到相应的寄存器。

回帖(1)

周煌煦

2025-6-3 17:58:57

对于使用CYPD3176 BCR-Plus检测充电器电压和电流容量的方法,以下是分点解答:




1. 针对PD充电器(USB-C PD协议)




  • PDO信息读取



    • CYPD3176作为PD协议控制器,通常支持通过I2C/HPI接口读取当前协商的PDO(Power Data Object)信息。

    • 关键寄存器/命令

      • 检查HPI手册中与Current Contract相关的寄存器(例如 Reg0x24: PD_STATUS 或类似名称)。

      • 使用HPI命令 0x0D (Read Register) 读取PDO参数(电压/电流)。例如:
        // 示例伪代码:读取当前PDO电压和电流
        uint8_t pdo_voltage = i2c_read(0x8, 0x24);  // 假设寄存器地址为0x24
        uint8_t pdo_current = i2c_read(0x8, 0x25);


    • 若手册未明确说明,需确认固件是否通过事件(如PD_EVENT_SRC_CAP)上报PDO信息。




  • 备用方法



    • 通过监测VBUS电压(使用ADC)或读取CYPD3176的VBUS_VOLTAGE寄存器(如存在)。






2. 针对传统充电器(BC1.2、QC2.0、USB-A)




  • 协议检测与寄存器



    • CYPD3176支持检测BC1.2、QC2.0等协议,结果通常存储在状态寄存器中。

    • BC1.2检测

      • 查找ChargerType寄存器(例如 Reg0x1F: PORT_STATUS),可能返回DCP(Dedicated Charging Port)等类型。

      • BC1.2最大电流通常为1.5A(5V),无需电压协商。


    • QC2.0检测

      • 电压等级(5V/9V/12V)通过D+/D-脉冲设置,检测结果可能存储在QC_VOLTAGE寄存器(如存在)。

      • 电流容量需根据QC2.0规范推断(如9V@1.67A)。





  • 手动推断



    • 若寄存器不可用,可通过以下步骤估算:

      1. 检测充电器类型(BC1.2、QC2.0等)。

      2. 根据协议规范设置默认值(如QC2.0的9V/12V)。

      3. 通过ADC测量VBUS电压确认实际输出。







3. 实现步骤



  • 步骤1:配置CYPD3176
     // 启用协议检测(参考手册)
    i2c_write(0x8, 0x10, 0x01);  // 假设0x10是协议使能寄存器

  • 步骤2:轮询状态寄存器
     // 检测充电器类型
    uint8_t charger_type = i2c_read(0x8, 0x1F);
    if (charger_type == DCP) {
         // BC1.2充电器,5V@1.5A
    } else if (charger_type == QC2.0) {
         // 读取QC电压等级
         uint8_t qc_voltage = i2c_read(0x8, 0x2A);
    }

  • 步骤3:读取PDO(若为PD充电器)
     // 读取当前PDO电压和电流
    uint16_t voltage = (i2c_read(0x8, 0x24) << 8) | i2c_read(0x8, 0x25);
    uint16_t current = (i2c_read(0x8, 0x26) << 8) | i2c_read(0x8, 0x27);




4. 关键注意事项



  • 寄存器地址不确定性:不同CYPD3176固件版本可能导致寄存器地址变化,务必以实际手册为准。

  • 硬件限制:非PD充电器的电流容量通常需根据协议规范假设(如BC1.2=5V@1.5A,QC2.0=9V@2A)。

  • Infineon支持:若手册信息缺失,建议联系Infineon技术支持获取寄存器映射表或示例代码。




通过上述方法,您应能通过I2C/HPI接口获取大多数充电器的电压和电流容量信息。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分