USB论坛
直播中

刘满贵

8年用户 1565经验值
私信 关注
[问答]

CY7113如何控制输出FET?

我正在使用带有 USB PD Sink 示例的CY7113 #。 如何控制输出 FET?
我发现必须设置 CY_APP_SINK_FET_CTRL_GPIO_EN、PFET_SNK_CTRL_P0_PIN 和 PFET_SNK_CTRL_P0_PORT。 我应该手动执行此操作吗?还是必须在 GUI 中执行此操作?

回帖(1)

jjll652

2025-5-8 18:13:25

在控制CY7113的输出FET时,需要结合图形化配置工具(如PD Configurator)和手动代码修改。以下是分步指南:


配置步骤:




  1. GUI配置(推荐优先步骤)



    • 打开Cypress PD Configurator工具

    • 在"Sink Configuration"部分启用FET控制选项

    • 在"GPIO Settings"中分配PFET控制引脚

    • 生成基础配置代码(*.c/.h文件)




  2. 手动代码修改



    // 在cyapp_sink.h中确认或添加以下宏定义
    #define CY_APP_SINK_FET_CTRL_GPIO_EN    1  // 启用GPIO FET控制
    #define PFET_SNK_CTRL_P0_PORT           GPIO_PRT5  // 根据原理图修改
    #define PFET_SNK_CTRL_P0_PIN            0          // 根据原理图修改



// 在初始化代码中配置GPIO
void initialize_fet_control() {
Cy_GPIO_Pin_Init(PFET_SNK_CTRL_P0_PORT, PFET_SNK_CTRL_P0_PIN, &PIN_CONFIG);
Cy_GPIO_Write(PFET_SNK_CTRL_P0_PORT, PFET_SNK_CTRL_P0_PIN, 0); // 初始关闭
}



3. **协议事件处理**:
```c
void handle_pd_event(uint32_t event) {
    case CY_PD_PD_CONTRACT_EVENT:
        if(contract_valid) {
            Cy_GPIO_Write(PFET_PORT, PFET_PIN, 1); // 开启FET
        } else {
            Cy_GPIO_Write(PFET_PORT, PFET_PIN, 0); // 关闭FET
        }
        break;
}

注意事项:




  1. 验证硬件连接:



    • 确认GPIO与FET控制引脚物理连接正确

    • 检查FET控制逻辑电平(可能需要电平转换)




  2. 时序要求:



    • 确保在PD协商完成(收到GoodCRC)后操作FET

    • 添加适当延迟(典型10-100ms)避免瞬态冲击




  3. 保护机制:


    void overvoltage_protection() {
    if(measured_voltage > MAX_ALLOWED) {
        Cy_GPIO_Write(PFET_PORT, PFET_PIN, 0); // 紧急关闭
        trigger_hard_reset();
    }
    }



建议结合使用GUI生成基础配置和手动代码优化。完成配置后,使用示波器验证GPIO控制信号与FET开关动作的时序关系,确保符合USB PD规范要求(特别是tPDDebounce时间要求)。

举报

更多回帖

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