在 PSoC™ Creator 环境中为 CCG2(如 CYPD2103)和 CCG3 系列芯片配置终端电阻需要通过 固件寄存器直接操作 实现。以下是完整的操作流程:
核心原理
CCGx 芯片的终端电阻状态由 Type-C Port Controller (TCPWM) 模块控制,通过修改以下两类寄存器实现开关:
BBSEL (Baseband Select):连接终端电阻到物理引脚。
TERMSEL (Termination Select):选择电阻类型(如 Rd/Ra)。
一、操作步骤(CYPD2103/CCG2 示例)
1. 识别硬件资源
- 查找数据手册确定 CC引脚对应的 TCPWM 单元(例如
TCPWM0 对应 CC1,TCPWM1 对应 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"
四、调试建议
- 逻辑分析仪:监控 CC 引脚电压变化确认电阻状态。
- 寄存器查看器:在 PSoC Creator 调试模式(Debug > Register View)中实时检查
TCPWMx_CNTy_TERMSEL0 和 TCPWMx_CNTy_BBSEL0 的值。
- 最小代码验证:
int main(void) {
CyGlobalIntEnable;
Enable_CCx_Rd_Termination(0); // 启用 CC1 的 Rd
while(1);
}
五、注意事项
- 时序安全:修改寄存器前暂停 TCPWM 计数器(
TCPWMx_CNTy_CTRL = 0)。
- 端口锁定:若启用了 DRSWAP 等策略,需先调用
Cy_PdUtils_Dp_DisableRpRd() 解锁。
- ESD保护:禁用电阻时确保系统有外部 ESD 防护电路。
通过上述方法,您可动态切换终端电阻状态,满足 USB-PD 协议中 Source/Sink 角色切换需求。
在 PSoC™ Creator 环境中为 CCG2(如 CYPD2103)和 CCG3 系列芯片配置终端电阻需要通过 固件寄存器直接操作 实现。以下是完整的操作流程:
核心原理
CCGx 芯片的终端电阻状态由 Type-C Port Controller (TCPWM) 模块控制,通过修改以下两类寄存器实现开关:
BBSEL (Baseband Select):连接终端电阻到物理引脚。
TERMSEL (Termination Select):选择电阻类型(如 Rd/Ra)。
一、操作步骤(CYPD2103/CCG2 示例)
1. 识别硬件资源
- 查找数据手册确定 CC引脚对应的 TCPWM 单元(例如
TCPWM0 对应 CC1,TCPWM1 对应 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"
四、调试建议
- 逻辑分析仪:监控 CC 引脚电压变化确认电阻状态。
- 寄存器查看器:在 PSoC Creator 调试模式(Debug > Register View)中实时检查
TCPWMx_CNTy_TERMSEL0 和 TCPWMx_CNTy_BBSEL0 的值。
- 最小代码验证:
int main(void) {
CyGlobalIntEnable;
Enable_CCx_Rd_Termination(0); // 启用 CC1 的 Rd
while(1);
}
五、注意事项
- 时序安全:修改寄存器前暂停 TCPWM 计数器(
TCPWMx_CNTy_CTRL = 0)。
- 端口锁定:若启用了 DRSWAP 等策略,需先调用
Cy_PdUtils_Dp_DisableRpRd() 解锁。
- ESD保护:禁用电阻时确保系统有外部 ESD 防护电路。
通过上述方法,您可动态切换终端电阻状态,满足 USB-PD 协议中 Source/Sink 角色切换需求。
举报