USB论坛
直播中

刘满贵

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

如何通过PSoC™ Creator 更改终端电阻?

   我目前正在使用 CCG2 和 CCG3 系列芯片,但不明白如何启用/禁用 CC 引脚上的终端电阻。在诸如 CYPD2103 的芯片中,最简单的切换这些引脚终止的方法是什么?

回帖(1)

王莉

2025-7-22 17:45:31

在 PSoC™ Creator 环境中为 CCG2(如 CYPD2103)和 CCG3 系列芯片配置终端电阻需要通过 固件寄存器直接操作 实现。以下是完整的操作流程:




核心原理


CCGx 芯片的终端电阻状态由 Type-C Port Controller (TCPWM) 模块控制,通过修改以下两类寄存器实现开关:



  1. BBSEL (Baseband Select):连接终端电阻到物理引脚。

  2. TERMSEL (Termination Select):选择电阻类型(如 Rd/Ra)。




一、操作步骤(CYPD2103/CCG2 示例)


1. 识别硬件资源



  • 查找数据手册确定 CC引脚对应的 TCPWM 单元(例如 TCPWM0 对应 CC1TCPWM1 对应 CC2)。


2. 禁用终端电阻(高阻态)


#include "project.h"  // 包含自动生成的寄存器头文件

void Disable_CCx_Termination(uint8_t port)
{
    // 以 CC1 (TCPWM0) 为例
    TCPWM0_CNT0_TERMSEL0 &= ~(1 << port);  // 清除 TERMSEL 位
    TCPWM0_CNT0_BBSEL0   &= ~(1 << port);  // 清除 BBSEL 位
}

作用:将 CC 引脚设为高阻态(Hi-Z),断开电阻连接。


3. 启用终端电阻(Rd 示例)


void Enable_CCx_Rd_Termination(uint8_t port) 
{
    TCPWM0_CNT0_TERMSEL0 |=  (1 << port);  // 设置 TERMSEL=1 (选择 Rd)
    TCPWM0_CNT0_BBSEL0   |=  (1 << port);  // 设置 BBSEL=1 (连接电阻到引脚)
}

作用:启用下拉电阻 Rd(约 5.1kΩ),适用于 Sink 设备。




二、关键寄存器详解






















寄存器 位字段 功能
TCPWMx_CNTy_TERMSEL0 TERMSEL[n] 0=禁用电阻 / 1=启用 Rd 或 Ra
TCPWMx_CNTy_BBSEL0 BBSEL[n] 0=断开引脚连接 / 1=连接电阻


x=TCPWM单元编号(0/1),y=计数器编号(通常0),n=端口号(0=CC1,1=CC2)。





三、CCG3 系列的特殊处理


CCG3(如 CYPD3135)增加了 高级驱动模式,需额外操作:


void CCG3_Set_Termination(uint8_t port, uint8_t enable, uint8_t type) 
{
    // 启用基带通路
    TCPWM0_GRP_CNTR_TERM_CTRL[port] = (enable ? 0x01 : 0x00); // BBSEL

    // 选择电阻类型(0=Rd, 1=Ra)
    TCPWM0_GRP_CNTR_TERM_SEL[port] = type; // TERMSEL
}


参考文档:Infineon AN210781 "CCGx TCPWM Configuration"





四、调试建议



  1. 逻辑分析仪:监控 CC 引脚电压变化确认电阻状态。

  2. 寄存器查看器:在 PSoC Creator 调试模式(Debug > Register View)中实时检查 TCPWMx_CNTy_TERMSEL0TCPWMx_CNTy_BBSEL0 的值。

  3. 最小代码验证
    int main(void) {
       CyGlobalIntEnable;
       Enable_CCx_Rd_Termination(0);  // 启用 CC1 的 Rd
       while(1);
    }




五、注意事项



  1. 时序安全:修改寄存器前暂停 TCPWM 计数器(TCPWMx_CNTy_CTRL = 0)。

  2. 端口锁定:若启用了 DRSWAP 等策略,需先调用 Cy_PdUtils_Dp_DisableRpRd() 解锁。

  3. ESD保护:禁用电阻时确保系统有外部 ESD 防护电路。


通过上述方法,您可动态切换终端电阻状态,满足 USB-PD 协议中 Source/Sink 角色切换需求。

举报

更多回帖

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