USB论坛
直播中

tr4578

9年用户 1018经验值
擅长:模拟技术
私信 关注
[问答]

CYPD7272如何区分USB PD设备和非USB PD设备?

您好,我想确认几个问题
1. 目前SDK是支持USB供电规范3.1,版本 1.7。还是支持USB3.1,版本1.8以上?
2.如何区分USB PD设备和非USB PD设备
个人想法:就是设备接入时,如果没有触发APP_EVT_PD_CONTRACT_NEGOtiATION_COMPLETE事件,做为一个响应标志来判定为非USBPD设备?

回帖(1)

听我讲

2025-5-20 18:14:50

关于CYPD7272如何区分USB PD设备和非USB PD设备的问题,以下是分步解答:




  1. SDK版本与规范支持



    • 关键点澄清:Cypress SDK中提到的"USB PD 3.1"特指供电协议规范(Power Delivery),而非USB 3.1数据传输规范。

    • 当前支持:CYPD7272 SDK默认支持 USB PD 3.1 Rev 1.7(最新版本为Rev 2.0,但需确认Cypress官方更新日志)。若您需要支持更高版本(如PD 3.1 Rev 1.8+),需联系Cypress确认SDK兼容性。




  2. 区分PD与非PD设备的方法



    • 核心逻辑:USB PD设备会主动发起PD协议握手流程,非PD设备(如传统USB 5V设备)不会响应。

    • 推荐检测流程
      // 在设备连接事件回调中(如APP_EVT_DEVICE_CONNECTED)
      if (event_flags & APP_EVT_PD_CONTRACT_NEGOTIATION_COMPLETE) {
      // PD设备:协商完成,可读取PDO电压电流
      uint32_t vbus_mv = Cy_Pd_GetVbusVoltage();
      // 进一步处理PD协议逻辑
      } else {
      // 非PD设备:VBUS保持默认5V,无PD通信
      if (Cy_Pd_GetVbusVoltage() == 5000) { // 单位mV
           // 确认为传统5V设备
      }
      }

    • 补充验证

      • 检查Type-C CC引脚状态(Cy_Pd_GetCcStatus()),非PD设备可能仅维持USB Type-C默认供电模式(如Rp/Rd未触发PD通信)。

      • 使用Cy_Pd_CheckIfPdDeviceConnected()专用API直接查询PD握手状态。





  3. 注意事项



    • 超时处理:建议在连接事件后设置50-100ms延时检测,避免PD协商尚未完成时误判。

    • 兼容性测试:针对QC/PE等快充协议设备需特殊处理(非标准PD但可能触发VBUS升压)。

    • 调试工具:使用Cypress提供的PD协议分析仪(如CY4500)抓取CC线通信包,可直观区分PD握手流程是否存在。




如需进一步优化设备兼容性,可在代码中增加对传统BC1.2协议的检测分支(通过D+/D-电压检测)。

举报

更多回帖

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