From e5caf14cb0223440af92b99d09907f57174c18b5 Mon Sep 17 00:00:00 2001 From: "Jipeng.tang" Date: Tue, 3 Jun 2025 11:31:27 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=96=B0=E5=A2=9EAFC=E5=8A=9F=E8=83=BD=20?= =?UTF-8?q?2.=20=E6=96=B0=E5=A2=9E=E5=93=AA=E4=B8=AA=E5=8F=A3=E5=85=88?= =?UTF-8?q?=E6=8F=92=E5=93=AA=E4=B8=AA=E5=8F=A3=E5=85=88=E5=88=86=E9=85=8D?= =?UTF-8?q?45W=E5=8A=9F=E7=8E=87=E7=9A=84=E5=8A=9F=E8=83=BD=203.=20SCPB?= =?UTF-8?q?=E5=A2=9E=E5=8A=A00.2A=E7=9A=84offset,=20SCPA=E6=96=B0=E5=A2=9E?= =?UTF-8?q?12V=E6=A1=A3=E4=BD=8D=204.=20=E6=96=B0=E5=A2=9E=E5=8F=91?= =?UTF-8?q?=E9=80=81src=5Fcap=E6=97=B6,=20=E5=88=A4=E6=96=AD=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E4=B8=8D=E6=98=AFPD=E5=8D=8F=E8=AE=AE=E5=B0=B1?= =?UTF-8?q?=E4=B8=8D=E5=8F=91src=5Fcap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ac_project/code/inc/config.h | 4 +- .../ac_project/code/inc/customized.h | 7 +- .../ac_project/code/src/customized.c | 86 +++++++++++++++---- .../ac_project/code/src/port0_customized.c | 20 ++--- .../ac_project/code/src/port1_customized.c | 20 ++--- .../common/app/src/cps8860_it.c | 28 ++---- .../protocol/pd_protocol/src/pd_protocol.c | 6 ++ .../qc_scp_protocol/src/qc_scp_protocol.c | 10 ++- 8 files changed, 117 insertions(+), 64 deletions(-) diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/config.h b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/config.h index afd1ca3..6c9215a 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/config.h +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/config.h @@ -72,7 +72,7 @@ extern uint16_t system_1s_cnt; /****************project inforamtion MTP ADDR:0x100000C0*******************/ #define SOFT_WARE_VERISION_H 0x00 -#define SOFT_WARE_VERISION_L 0x03 +#define SOFT_WARE_VERISION_L 0x04 #define CUSTOM_ID 0xA1 #define PROJECT_ID 0x60 /**********************���칦�ܺ궨��************************************/ @@ -137,7 +137,7 @@ extern uint16_t system_1s_cnt; #define APPLE_MODE_SUPPORT 1 #define TFCP_SUPPORT 0 -#define AFC_SUPPORT 0 +#define AFC_SUPPORT 1 #define PROTECTION_SUPPORT 1 diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/customized.h b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/customized.h index 657487c..ce51c3a 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/customized.h +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/customized.h @@ -108,11 +108,7 @@ typedef struct uint16_t usba_low_current_cnt; bool usba_is_low_power; // A口有负载, 且负载十分钟内都处在低功率状态 - uint16_t test_cable_vol; // 仅测试用 - bool test_flag_1; - bool test_flag_2; - bool test_flag_3; - bool test_flag_4; + bool c1_priority_inser; // C1口优先C2口接进来 = 1 代表是 } user_app_s; extern user_app_s user_app; @@ -335,6 +331,7 @@ void app_double_dynamic_power_check(void); void usba_detection(void); void insertion_equipment_judgment(void); +void port_inser_priority_judgment(void); #if USER_NTC_ENABLE void ntc_judgment(void); diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/customized.c b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/customized.c index dfece25..eba1848 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/customized.c +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/customized.c @@ -660,16 +660,6 @@ void adapter_state_check(void) type_c2_state = (g_app_protocol_param[1].pd_param.typec_status.typec_status == AttachedSRC); usba_state = usba_online_state; - // gate3 控制功率合并。 只要C1口没接东西,都打开gate3 - // if(type_c1_state) - // { - // comp_dac_close_vbus(TYPEC_PORT_MAX); - // } - // else - // { - // comp_dac_open_vbus(TYPEC_PORT_MAX); - // } - if(type_c1_state && !type_c2_state && !usba_state) { user_app.adapter_state = C1_INSER; @@ -741,13 +731,30 @@ void adapter_state_check(void) break; case C1_C2_INSER: - need_send_cap_flag[TYPEC_PORT0] = PD_PWR_45W; - need_send_cap_flag[TYPEC_PORT1] = PD_PWR_25W; + // 客户要求: 双口时先看接入优先级 + need_send_cap_flag[TYPEC_PORT0] = PD_PWR_35W; + need_send_cap_flag[TYPEC_PORT1] = PD_PWR_35W; + + // 从2C1A状态跳回来, 需要重新把协议都打开, 判断是小功率设备时, 会在下面把协议全关了 + g_powerout_info[TYPEC_PORT0].support_protocol.byte = PROTOCOL_ALL_ENABLE; + g_powerout_info[TYPEC_PORT1].support_protocol.byte = PROTOCOL_ALL_ENABLE; + + // 1. 接入优先级 + if(user_app.c1_priority_inser) + { + need_send_cap_flag[TYPEC_PORT0] = PD_PWR_45W; + need_send_cap_flag[TYPEC_PORT1] = PD_PWR_25W; + } + else + { + need_send_cap_flag[TYPEC_PORT0] = PD_PWR_25W; + need_send_cap_flag[TYPEC_PORT1] = PD_PWR_45W; + } log_info("c1_type:%d c2_type:%d\n", user_app.c1_equipment_type, user_app.c2_equipment_type); - // 优先级1. C1 C2都是电脑 + // 2. 设备优先级1. C1 C2都是电脑 if(user_app.c1_equipment_type == EQUIMENT_IS_COMPUTER) { // 电脑 + 手机 @@ -829,6 +836,9 @@ void adapter_state_check(void) charge_protocol_reset(TYPEC_PORT1, &g_app_protocol_param[TYPEC_PORT1].dpdn_param, SCP_TYPEC_RESET); g_powerout_info[TYPEC_PORT1].support_protocol.byte = PROTOCOL_DISABLE_ALL; + + // 如果C2原本就升到了5V以上电压, 要降回5V + comp_powerout_default_set(TYPEC_PORT1, &g_powerout_info[TYPEC_PORT1]); break; default: @@ -1391,6 +1401,51 @@ void comp_port_connect_state_check(uint8_t port) } +void port_inser_priority_judgment(void) +{ + // 只有 C1 + C2 同在时才需要判接入优先级, 所以单口时不需要清零 + + // C1 + if(g_app_protocol_param[TYPEC_PORT0].pd_param.typec_status.typec_status == AttachedSRC + && g_app_protocol_param[TYPEC_PORT0].pd_param.typec_status.typec_process_status == typec_enter_status + ) + { + // C1 + C2 同时接入 + if(g_app_protocol_param[TYPEC_PORT1].pd_param.typec_status.typec_status == AttachedSRC + && g_app_protocol_param[TYPEC_PORT1].pd_param.typec_status.typec_process_status == typec_enter_status + ) + { + user_app.c1_priority_inser = true; + } // C1接入前 C2已接入 + else if(g_app_protocol_param[TYPEC_PORT1].pd_param.typec_status.typec_status == AttachedSRC + && g_app_protocol_param[TYPEC_PORT1].pd_param.typec_status.typec_process_status == typec_exit_status + ) + { + user_app.c1_priority_inser = false; + } + else // C2口没设备接入 + { + user_app.c1_priority_inser = true; + } + } + + // C2 + if(g_app_protocol_param[TYPEC_PORT1].pd_param.typec_status.typec_status == AttachedSRC + && g_app_protocol_param[TYPEC_PORT1].pd_param.typec_status.typec_process_status == typec_enter_status + ) + { + // C1 + C2 同时接入, 优先 C1 + if(g_app_protocol_param[TYPEC_PORT0].pd_param.typec_status.typec_status == AttachedSRC) + { + user_app.c1_priority_inser = true; + } + else // C2口没设备接入 + { + user_app.c1_priority_inser = false; + } + } +} + /* * @brief app_protocol_run * @param null @@ -1428,9 +1483,8 @@ void app_protocol_run(uint8_t port) } */ -// #if PD_DOUBLE_PORT_DERAT_SUPPORT -// adapter_state_check(); -// #endif + // 端口接入优先级判断 + port_inser_priority_judgment(); #if USER_DERAT_ENABLE adapter_state_check(); diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/port0_customized.c b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/port0_customized.c index f7754bc..6356c6c 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/port0_customized.c +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/port0_customized.c @@ -15,7 +15,7 @@ #if SCP_SUPPORT /***********************SCP PARAM INFO*********************************/ #define SCP_DEFAULT_VSET_BOUNDARY 10000 /* in unit of mV */ -#define SCP_DEFAULT_ISET_BOUNDARY 2000 /* in unit of mA */ +#define SCP_DEFAULT_ISET_BOUNDARY 2250 /* in unit of mA */ #define SCP_VOLTAGE_MAX 12000 /* in unit of mV */ #define SCP_VOLTAGE_MIN 5500 /* in unit of mV */ #define SCP_CURRENT_MAX 2700 /* in unit of mA */ @@ -64,8 +64,8 @@ const uint8_t port0_scp_register_value[256] = DECL_REG(0x1e, 0), DECL_REG(0x1f, 0), DECL_REG(FCP_CAPABILITIES, FCP_CAPABILITIES_DISCRETE_VOLTAGE_MASK), - DECL_REG(FCP_DISCRETE_CAPABILITIES0, FCP_DISCRETE_CAPABILITIES0_5V_9V), - DECL_REG(FCP_MAX_PWR, FCP_MAX_PWR_VAL(18)), + DECL_REG(FCP_DISCRETE_CAPABILITIES0, FCP_DISCRETE_CAPABILITIES0_5V_9V_12V), + DECL_REG(FCP_MAX_PWR, FCP_MAX_PWR_VAL(22)), DECL_REG(0x23, 0), DECL_REG(0x24, 0), DECL_REG(0x25, 0), @@ -78,10 +78,10 @@ const uint8_t port0_scp_register_value[256] = DECL_REG(FCP_VOUT_CONFIG, FCP_VOUT_CONFIG_VAL(5200)), DECL_REG(FCP_IOUT_CONFIG, FCP_IOUT_CONFIG_VAL(2000)), DECL_REG(0x2e, 0), - DECL_REG(FCP_DISCRETE_CAPABILITIES, FCP_DISCRETE_CAPABILITIES_VAL(2)), + DECL_REG(FCP_DISCRETE_CAPABILITIES, FCP_DISCRETE_CAPABILITIES_VAL(3)), DECL_REG(FCP_OUTPUT_V(0), FCP_OUTPUT_V_VAL(5200)), DECL_REG(FCP_OUTPUT_V(1), FCP_OUTPUT_V_VAL(9000)), - DECL_REG(FCP_OUTPUT_V(2), 0), + DECL_REG(FCP_OUTPUT_V(2), FCP_OUTPUT_V_VAL(12000)), DECL_REG(FCP_OUTPUT_V(3), 0), DECL_REG(FCP_OUTPUT_V(4), 0), DECL_REG(FCP_OUTPUT_V(5), 0), @@ -113,7 +113,7 @@ const uint8_t port0_scp_register_value[256] = DECL_REG(FCP_OUTPUT_UVP(15), 0), DECL_REG(FCP_OUTPUT_I(0), FCP_OUTPUT_I_VAL(2000)), DECL_REG(FCP_OUTPUT_I(1), FCP_OUTPUT_I_VAL(2000)), - DECL_REG(FCP_OUTPUT_I(2), 0), + DECL_REG(FCP_OUTPUT_I(2), FCP_OUTPUT_I_VAL(1875)), DECL_REG(FCP_OUTPUT_I(3), 0), DECL_REG(FCP_OUTPUT_I(4), 0), DECL_REG(FCP_OUTPUT_I(5), 0), @@ -178,9 +178,9 @@ const uint8_t port0_scp_register_value[256] = DECL_REG(SCP_MAX_PWR, SCP_MAX_PWR_VAL(1, 20)), DECL_REG(SCP_CNT_PWR, SCP_MAX_PWR_VAL(1, 20)), DECL_REG(SCP_MIN_VOUT, SCP_VI_RANGE_VAL(2, 55)), - DECL_REG(SCP_MAX_VOUT, SCP_VI_RANGE_VAL(3, 12)), + DECL_REG(SCP_MAX_VOUT, SCP_VI_RANGE_VAL(3, 10)), DECL_REG(SCP_MIN_IOUT, SCP_VI_RANGE_VAL(1, 30)), - DECL_REG(SCP_MAX_IOUT, SCP_VI_RANGE_VAL(2, 20)), + DECL_REG(SCP_MAX_IOUT, SCP_VI_RANGE_VAL(2, 22)), DECL_REG(SCP_VSTEP, 0x14), DECL_REG(SCP_ISTEP, 0x32), DECL_REG(SCP_MAX_VERR, SCP_MAX_ERR_VAL(1, 30)), @@ -327,8 +327,8 @@ const scp_power_curve_s PORT0_SCP_POWER_CURVE_BUF[] = { {VOLTAGE_9V, CURRENT_2P7A}, {VOLTAGE_10V, CURRENT_2P4A}, - {VOLTAGE_10P5V, CURRENT_2P2A}, - {VOLTAGE_12V, CURRENT_1P7A}, + // {VOLTAGE_10P5V, CURRENT_2P2A}, + // {VOLTAGE_12V, CURRENT_1P7A}, }; diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/port1_customized.c b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/port1_customized.c index 133bbc5..dd98e8f 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/port1_customized.c +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/port1_customized.c @@ -17,7 +17,7 @@ #if SCP_SUPPORT /***********************SCP PARAM INFO*********************************/ #define SCP_DEFAULT_VSET_BOUNDARY 10000 /* in unit of mV */ -#define SCP_DEFAULT_ISET_BOUNDARY 2000 /* in unit of mA */ +#define SCP_DEFAULT_ISET_BOUNDARY 2250 /* in unit of mA */ #define SCP_VOLTAGE_MAX 12000 /* in unit of mV */ #define SCP_VOLTAGE_MIN 5500 /* in unit of mV */ #define SCP_CURRENT_MAX 2700 /* in unit of mA */ @@ -64,8 +64,8 @@ const uint8_t port1_scp_register_value[256] = DECL_REG(0x1e, 0), DECL_REG(0x1f, 0), DECL_REG(FCP_CAPABILITIES, FCP_CAPABILITIES_DISCRETE_VOLTAGE_MASK), - DECL_REG(FCP_DISCRETE_CAPABILITIES0, FCP_DISCRETE_CAPABILITIES0_5V_9V), - DECL_REG(FCP_MAX_PWR, FCP_MAX_PWR_VAL(18)), + DECL_REG(FCP_DISCRETE_CAPABILITIES0, FCP_DISCRETE_CAPABILITIES0_5V_9V_12V), + DECL_REG(FCP_MAX_PWR, FCP_MAX_PWR_VAL(22)), DECL_REG(0x23, 0), DECL_REG(0x24, 0), DECL_REG(0x25, 0), @@ -78,10 +78,10 @@ const uint8_t port1_scp_register_value[256] = DECL_REG(FCP_VOUT_CONFIG, FCP_VOUT_CONFIG_VAL(5200)), DECL_REG(FCP_IOUT_CONFIG, FCP_IOUT_CONFIG_VAL(2000)), DECL_REG(0x2e, 0), - DECL_REG(FCP_DISCRETE_CAPABILITIES, FCP_DISCRETE_CAPABILITIES_VAL(2)), + DECL_REG(FCP_DISCRETE_CAPABILITIES, FCP_DISCRETE_CAPABILITIES_VAL(3)), DECL_REG(FCP_OUTPUT_V(0), FCP_OUTPUT_V_VAL(5200)), DECL_REG(FCP_OUTPUT_V(1), FCP_OUTPUT_V_VAL(9000)), - DECL_REG(FCP_OUTPUT_V(2), 0), + DECL_REG(FCP_OUTPUT_V(2), FCP_OUTPUT_V_VAL(12000)), DECL_REG(FCP_OUTPUT_V(3), 0), DECL_REG(FCP_OUTPUT_V(4), 0), DECL_REG(FCP_OUTPUT_V(5), 0), @@ -113,7 +113,7 @@ const uint8_t port1_scp_register_value[256] = DECL_REG(FCP_OUTPUT_UVP(15), 0), DECL_REG(FCP_OUTPUT_I(0), FCP_OUTPUT_I_VAL(2000)), DECL_REG(FCP_OUTPUT_I(1), FCP_OUTPUT_I_VAL(2000)), - DECL_REG(FCP_OUTPUT_I(2), 0), + DECL_REG(FCP_OUTPUT_I(2), FCP_OUTPUT_I_VAL(1875)), DECL_REG(FCP_OUTPUT_I(3), 0), DECL_REG(FCP_OUTPUT_I(4), 0), DECL_REG(FCP_OUTPUT_I(5), 0), @@ -178,9 +178,9 @@ const uint8_t port1_scp_register_value[256] = DECL_REG(SCP_MAX_PWR, SCP_MAX_PWR_VAL(1, 20)), DECL_REG(SCP_CNT_PWR, SCP_MAX_PWR_VAL(1, 20)), DECL_REG(SCP_MIN_VOUT, SCP_VI_RANGE_VAL(2, 55)), - DECL_REG(SCP_MAX_VOUT, SCP_VI_RANGE_VAL(3, 12)), + DECL_REG(SCP_MAX_VOUT, SCP_VI_RANGE_VAL(3, 10)), DECL_REG(SCP_MIN_IOUT, SCP_VI_RANGE_VAL(1, 30)), - DECL_REG(SCP_MAX_IOUT, SCP_VI_RANGE_VAL(2, 20)), + DECL_REG(SCP_MAX_IOUT, SCP_VI_RANGE_VAL(2, 22)), DECL_REG(SCP_VSTEP, 0x14), DECL_REG(SCP_ISTEP, 0x32), DECL_REG(SCP_MAX_VERR, SCP_MAX_ERR_VAL(1, 30)), @@ -327,8 +327,8 @@ const scp_power_curve_s PORT1_SCP_POWER_CURVE_BUF[] = { {VOLTAGE_9V, CURRENT_2P7A}, {VOLTAGE_10V, CURRENT_2P4A}, - {VOLTAGE_10P5V, CURRENT_2P2A}, - {VOLTAGE_12V, CURRENT_1P7A}, + // {VOLTAGE_10P5V, CURRENT_2P2A}, + // {VOLTAGE_12V, CURRENT_1P7A}, }; diff --git a/PD_CPS8860_A1_CPS_Common_Demo/common/app/src/cps8860_it.c b/PD_CPS8860_A1_CPS_Common_Demo/common/app/src/cps8860_it.c index 716e066..be36497 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/common/app/src/cps8860_it.c +++ b/PD_CPS8860_A1_CPS_Common_Demo/common/app/src/cps8860_it.c @@ -78,26 +78,16 @@ void SysTick_Handler(void) // usba_online_state, // REG_ANALOG_GATE3->bf.driver_en); - log_info("gate1:%d 2:%d 3:%d vin1:%d 2:%d\n", REG_ANALOG_GATE1->bf.driver_en, - REG_ANALOG_GATE2->bf.driver_en, - REG_ANALOG_GATE3->bf.driver_en, - comp_adc_get_vin12(0), - comp_adc_get_vin12(1)); + // log_info("gate1:%d 2:%d 3:%d vin1:%d 2:%d\n", REG_ANALOG_GATE1->bf.driver_en, + // REG_ANALOG_GATE2->bf.driver_en, + // REG_ANALOG_GATE3->bf.driver_en, + // comp_adc_get_vin12(0), + // comp_adc_get_vin12(1)); - log_info("iout1:%d iout2:%d set_cur:%d\n", comp_adc_get_cur12(0), - comp_adc_get_cur12(1), test_current); - -// log_info("VIN0:%d,VIN1:%d,VIN2:%d\n",COMP_ADC_GET_VIN0_VOL(),comp_adc_get_vin12(0),comp_adc_get_vin12(1)); -// log_info("vin_code:%d,%d,%d\n",g_adc_value_st.value[ADC_VIN0],g_adc_value_st.value[ADC_VIN1],g_adc_value_st.value[ADC_VIN2]); -// log_info("vin_dis:%d,%d\n",REG_ANALOG_VIN_DIS->bf.en1,REG_ANALOG_VIN_DIS->bf.en2); -// log_info("VIN:%d,VIN1:%d,VIN2:%d\n",COMP_ADC_GET_VIN0_VOL(),comp_adc_get_vin12(0),comp_adc_get_vin12(1)); - // log_info("VIN0:%d,VIN1:%d,CUR1:%d,CU2:%d\n",comp_adc_get_vin12(0),comp_adc_get_vin12(1),comp_adc_get_cur12(0),comp_adc_get_cur12(1)); - // log_info("VBUS1:%d,VBUS2:%d\n",COMP_ADC_GET_VBUS1_VOL(),COMP_ADC_GET_VBUS2_VOL()); -// for(i = 0;i <= 20;i++) -// { -// log_info("adc[%d]:%d\n",i,g_adc_value_st.value[i]*2300/4095); -// } - + // log_info("iout1:%d iout2:%d set_cur:%d\n", comp_adc_get_cur12(0), + // comp_adc_get_cur12(1), test_current); + // log_info("port1_protocol:0x%x\n", g_powerout_info[TYPEC_PORT1].support_protocol.byte); + // log_info("dpdn:0x%x,0x%x\n",drv_dpdn_short_staus_get(0),drv_dpdn_short_staus_get(1)); #if VD_ENABLE comp_primary_freq_get(); diff --git a/PD_CPS8860_A1_CPS_Common_Demo/common/comp/protocol/pd_protocol/src/pd_protocol.c b/PD_CPS8860_A1_CPS_Common_Demo/common/comp/protocol/pd_protocol/src/pd_protocol.c index 701df7f..cd91a7b 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/common/comp/protocol/pd_protocol/src/pd_protocol.c +++ b/PD_CPS8860_A1_CPS_Common_Demo/common/comp/protocol/pd_protocol/src/pd_protocol.c @@ -373,6 +373,12 @@ void send_new_capability(uint8_t port, pd_param_s*pd_param) pd_src_cap_init(port, pd_param, need_send_cap_flag[port]); last_send_cap_flag[port] = need_send_cap_flag[port]; + // 如果当前走其他协议, 则更新完src_cap后不进行发送 + if( g_powerout_info[port].protocol_type != PROTOCOL_PD ) + { + return; + } + if(pd_param->pd_pe_status.pe_status != PE_SRC_Startup) { log_info("send_cap[%d]:%d\n",port, need_send_cap_flag[port]); diff --git a/PD_CPS8860_A1_CPS_Common_Demo/common/comp/protocol/qc_scp_protocol/src/qc_scp_protocol.c b/PD_CPS8860_A1_CPS_Common_Demo/common/comp/protocol/qc_scp_protocol/src/qc_scp_protocol.c index 6cd81e7..af91ed1 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/common/comp/protocol/qc_scp_protocol/src/qc_scp_protocol.c +++ b/PD_CPS8860_A1_CPS_Common_Demo/common/comp/protocol/qc_scp_protocol/src/qc_scp_protocol.c @@ -175,7 +175,11 @@ void scp_derating_config(uint8_t port,scp_param_s *scp_param, uint8_t reg_a5) #define AFC 0 uint8_t afc_cnt = 0; uint8_t last_afc_val = 0; -const uint8_t AFC_PWR_CURVE[] = {0x0F, 0x46}; + +// 0x0f: 5V3A 0x49: 9V2A 0x79: 12V2A +// const uint8_t AFC_PWR_CURVE[] = {0x0F, 0x46}; +const uint8_t AFC_PWR_CURVE[] = {0x0F, 0x49, 0x79}; + /* * @brief scp_afc_identify * @param port @@ -309,7 +313,9 @@ void scp_power_switch(uint8_t port,scp_param_s *scp_param) cur = scp_param->scp_app_passist.b_cur; max_cur = get_scp_powe_curve_cur(port,scp_param->scp_app_passist.b_vol); - log_info("max_cur:%d\n", max_cur); + // 客户要求 scpb 也要加 200mA的偏置, 加在max_cur前, 防止最后过大 + cur += CURRENT_0P2A; + log_info("scpb max_cur:%d\n", max_cur); if(cur > max_cur) {