在 CCG3PA 控制器中修改非 PD Type-C 的 Rp 等级,需通过以下步骤调整固件代码:
1. 理解 Type-C Rp 的非 PD 配置逻辑
- 非 PD 模式下,Rp 的值通过 CC 引脚的上拉电阻(1.5A/3A)直接配置,与 PD 协议无关。
- CCG3PA 的固件通常会在
type_c.c 或 app_typec.c 等文件中管理非 PD 的 Type-C 状态机。
2. 定位非 PD Rp 配置的代码位置
默认 Rp 设置:在 app_port_config.h 或 app_config.h 中查找类似 DEFAULT_RP 的宏定义,例如:
#define DEFAULT_RP CY_PD_TYPEC_RP_STD // 标准 1.5A
// 或 CY_PD_TYPEC_RP_3A
修改此处可直接改变初始化的默认 Rp 值。
动态 Rp 配置:在 Type-C 状态机(如 app_typec.c 的 app_typec_snk_entry 函数)中,当检测到非 PD Sink 连接时,调用硬件接口设置 Rp:
cy_ccg3pd_set_port_config(port, CY_PD_TYPEC_RP_3A, CY_PD_TYPEC_RD_NONE);
3. 修改关键函数
在非 PD Sink 连接事件中,强制更新 Rp 值:
// 示例:在状态机中检测到非 PD 设备时设置 Rp
if (is_non_pd_sink_connected) {
cy_ccg3pd_set_port_config(port, CY_PD_TYPEC_RP_3A, CY_PD_TYPEC_RD_NONE);
}
4. 使用硬件寄存器直接配置(备选)
如果固件未提供 API,可直接操作寄存器:
5. 注意事项
- Type-C 规范兼容性:Rp 值需符合 Type-C 标准(1.5A/3A)。
- 固件版本差异:不同版本的 SDK 可能代码结构不同,需根据实际代码调整。
- 测试验证:用 USB-C 电压电流表或协议分析仪确认 Rp 实际生效。
总结步骤
- 修改默认 Rp 宏定义:在
app_config.h 中设置 DEFAULT_RP。
- 在状态机中动态设置 Rp:在非 PD 连接事件中调用
cy_ccg3pd_set_port_config。
- 寄存器级配置(可选):直接写入 Rp 寄存器值。
通过上述方法,可在非 PD Type-C 模式下动态控制 Rp 等级。建议参考 Cypress SDK 中的 app_typec.c 和硬件手册进一步调试。
在 CCG3PA 控制器中修改非 PD Type-C 的 Rp 等级,需通过以下步骤调整固件代码:
1. 理解 Type-C Rp 的非 PD 配置逻辑
- 非 PD 模式下,Rp 的值通过 CC 引脚的上拉电阻(1.5A/3A)直接配置,与 PD 协议无关。
- CCG3PA 的固件通常会在
type_c.c 或 app_typec.c 等文件中管理非 PD 的 Type-C 状态机。
2. 定位非 PD Rp 配置的代码位置
默认 Rp 设置:在 app_port_config.h 或 app_config.h 中查找类似 DEFAULT_RP 的宏定义,例如:
#define DEFAULT_RP CY_PD_TYPEC_RP_STD // 标准 1.5A
// 或 CY_PD_TYPEC_RP_3A
修改此处可直接改变初始化的默认 Rp 值。
动态 Rp 配置:在 Type-C 状态机(如 app_typec.c 的 app_typec_snk_entry 函数)中,当检测到非 PD Sink 连接时,调用硬件接口设置 Rp:
cy_ccg3pd_set_port_config(port, CY_PD_TYPEC_RP_3A, CY_PD_TYPEC_RD_NONE);
3. 修改关键函数
在非 PD Sink 连接事件中,强制更新 Rp 值:
// 示例:在状态机中检测到非 PD 设备时设置 Rp
if (is_non_pd_sink_connected) {
cy_ccg3pd_set_port_config(port, CY_PD_TYPEC_RP_3A, CY_PD_TYPEC_RD_NONE);
}
4. 使用硬件寄存器直接配置(备选)
如果固件未提供 API,可直接操作寄存器:
5. 注意事项
- Type-C 规范兼容性:Rp 值需符合 Type-C 标准(1.5A/3A)。
- 固件版本差异:不同版本的 SDK 可能代码结构不同,需根据实际代码调整。
- 测试验证:用 USB-C 电压电流表或协议分析仪确认 Rp 实际生效。
总结步骤
- 修改默认 Rp 宏定义:在
app_config.h 中设置 DEFAULT_RP。
- 在状态机中动态设置 Rp:在非 PD 连接事件中调用
cy_ccg3pd_set_port_config。
- 寄存器级配置(可选):直接写入 Rp 寄存器值。
通过上述方法,可在非 PD Type-C 模式下动态控制 Rp 等级。建议参考 Cypress SDK 中的 app_typec.c 和硬件手册进一步调试。
举报