针对EZ-PD CCG5在Type-C反接时无法识别USB 2.0/3.0的问题,结合您提供的日志(APP_EVT_SRC_CAP_TRIED_WITH_NO_RESPONSE -> APP_EVT_PE_DISABLED),以下是系统性分析和解决方案:
CC引脚角色配置错误(关键原因)
CC1通信,反接时通过CC2通信。SRC_CAP_TRIED_WITH_NO_RESPONSE(PD协商无响应)。VBUS或数据路径切换失败
PD协商超时导致PE禁用
APP_EVT_PE_DISABLED,协议引擎被强制关闭,USB通信中断。CC1/CC2引脚(无交叉或短路)。CC2电压(正常为0.4V~2.5V Rd电压,取决于Source端Rp)。APP_EVT_TYPEC_ATTACH事件中动态检测CC引脚角色: void handle_attach_event(void) {
uint8_t cc_used = get_active_cc_pin(); // 获取当前激活的CC引脚(CC1或CC2)
pd_set_rx_path(cc_used); // 设置PD PHY使用对应CC引脚
usb_data_switch_config(cc_used); // 切换USB数据通道
}cy_pdstack_cc_status API检测激活的CC引脚。 if (cc_orientation == CC_ORIENTATION_FLIPPED) {
vbus_control_enable(CC2_VBUS_EN_PIN); // 使能反接VBUS控制
}APP_EVT_SRC_CAP_TRIED_WITH_NO_RESPONSE事件中重试PD协商而非直接禁用PE: case APP_EVT_SRC_CAP_TRIED_WITH_NO_RESPONSE:
pd_retry_negotiation(); // 增加重试机制
break;PD_T_RESPONSE_TIMEOUT值)。SBU1_SEL, SBU2_SEL),确保反接时信号电平翻转: 正接: SBU1_SEL=High, SBU2_SEL=Low
反接: SBU1_SEL=Low, SBU2_SEL=High为进一步定位,请增加以下日志:
LOG("Active CC: %d", cy_pd_get_active_cc_pin());LOG("VBUS Status: %dmV", measure_vbus_voltage());LOG("USB Switch: SSTX=%d, SSRX=%d", get_switch_sstx(), get_switch_ssrx());
经验提示:反接失败常见于未动态切换CC引脚和VBUS控制逻辑。Cypress SDK案例(如
usbpd_sink示例)中通常包含方向检测函数Cy_PD_CheckPortOrientation(),请参考其实现。
若仍存在问题,请提供增强后的日志及硬件原理图CC部分,我将进一步分析其物理层配置问题。
举报
更多回帖