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 14870ba..09284ad 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 @@ -40,6 +40,8 @@ // 拔出的时候, 把该标志清除。 #define HUAWEI_MATEBOOK_X 1 +#define DELAY_SET_CURRENT_ENABLE 1 + #define PD_PACKAGE_CONFLICT_SOLVE 0 extern uint16_t system_1ms_cnt; @@ -88,7 +90,7 @@ extern uint16_t system_1s_cnt; /****************project inforamtion MTP ADDR:0x100000C0*******************/ #define SOFT_WARE_VERISION_H 0x01 -#define SOFT_WARE_VERISION_L 0x06 +#define SOFT_WARE_VERISION_L 0x07 #define CUSTOM_ID 0xA1 #define PROJECT_ID 0x60 /**********************���칦�ܺ궨��************************************/ 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 45d389c..fd46688 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 @@ -133,6 +133,13 @@ typedef struct // typec状态机 bool type_c1_connect; bool type_c2_connect; + +#if DELAY_SET_CURRENT_ENABLE + uint16_t last_set_current[2]; + uint16_t new_set_current[2]; + volatile uint16_t delay_set_current_cnt[2]; + bool delay_set_current_flag[2]; +#endif } user_app_s; extern user_app_s user_app; @@ -365,5 +372,6 @@ void ntc_judgment(void); #endif void port_scp_derate(uint8_t port, bool en, uint8_t val); +bool judge_delay_set_current(uint8_t port, uint16_t val); #endif diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/comp_dac.c b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/comp_dac.c index df6302f..bd35815 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/comp_dac.c +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/comp_dac.c @@ -202,7 +202,7 @@ void comp_dac_cc_step_speed_set(uint8_t port, uint8_t speed) extern uint16_t adc_vin_start[TYPEC_PORT_MAX] ; static void comp_dac_cv_2dcdc_fb(uint8_t port, uint16_t val) { - //log_info("port:%d set_vol:%d\n", port, val); + // log_info("port:%d set_vol:%d\n", port, val); /*CV_DAC = ((target - VREF)/RFBUP-VREF/RDOWN)*1000000/gm_FBCV + VOFFSET_CVFB1 */ int32_t temp[TYPEC_PORT_MAX + 1] = {0}; @@ -388,6 +388,16 @@ static void comp_dac_cc_2dcdc_fb(uint8_t port, uint16_t val, uint16_t offset) int16_t fb_cc_offset[TYPEC_PORT_MAX] = {FB1_CCOFFFSET, FB2_CCOFFFSET}; // log_info("fb_set_cc port:%d cc_val:%d\n", port, val); + // val = CURRENT_5A; + +#if DELAY_SET_CURRENT_ENABLE + + if(!judge_delay_set_current(port, val)) + { + return; + } + +#endif #if DAC_TRIM_ENABLE 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 345d666..84e6087 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 @@ -404,6 +404,57 @@ void pd_src_cap_init(uint8_t port, pd_param_s*pd_param, uint8_t pwr_cnt) } +#if DELAY_SET_CURRENT_ENABLE + +void check_delay_set_current(uint8_t port) +{ + if((user_app.delay_set_current_flag[port] == true) + && (user_app.delay_set_current_cnt[port] == 0)) + { + comp_powerout_cur_set(port, &g_powerout_info[port], user_app.new_set_current[port]); + user_app.delay_set_current_flag[port] = false; + log_info("A3_port:[%d]_set_cur:%d \n", port, user_app.new_set_current[port]); + } +} + +// return: 0->不去设电流 1->直接去设电流 +bool judge_delay_set_current(uint8_t port, uint16_t val) +{ + + user_app.new_set_current[port] = val; + + //1. 若是新设置的电流比上一次的小,延迟一段时间再去设置。 + //2. 若是延迟时间内,再申请更小的电流,那重置延迟。 + if(user_app.last_set_current[port] > val) + { + user_app.last_set_current[port] = val; + user_app.delay_set_current_cnt[port] = DELAY_200MS; + user_app.delay_set_current_flag[port] = true; + log_info("A1_port:[%d]_set_cur:%d \n", port, user_app.last_set_current[port]); + return 0; + } + //3. 若是延迟时间内,再进了调流函数,延迟倒计时还没结束,则直接退出,等倒计时到了再来设置 + else if(user_app.last_set_current[port] == val) + { + if(user_app.delay_set_current_cnt[port]) + { + return 0; + } + } + //4. 若是新设置的电流比上一次的大,要直接去设置,并且清零延迟计数和延迟设电流 + else if(user_app.last_set_current[port] < val) + { + user_app.delay_set_current_cnt[port] = 0; + user_app.delay_set_current_flag[port] = false; + } + + user_app.last_set_current[port] = val; + log_info("A2_port:[%d]_set_cur:%d \n", port, user_app.last_set_current[port]); + + return 1; +} +#endif + #if USER_NTC_ENABLE void ntc_judgment(void) { @@ -741,8 +792,9 @@ void mos_switch_control(void) case C1_C2_INSER: case C1_C2_A_INSER: - // 等第一路的负载主动降低拉载功率,当功率小于40W时再去切mos - if(comp_adc_get_vin12(TYPEC_PORT0) * comp_adc_get_cur12(TYPEC_PORT0) <= 40000000) + // 第二路的ACDC只能出50W左右,所以等拉载功率降到50W以下再去切线缆 + // 等第一路的负载主动降低拉载功率,当功率小于50W时再去切mos + if(comp_adc_get_vin12(TYPEC_PORT0) * comp_adc_get_cur12(TYPEC_PORT0) <= 46000000) { user_app.need_switch_mos = false; log_info("mos_switch open gate2\n"); @@ -1019,14 +1071,16 @@ void adapter_state_check(void) need_send_cap_flag[TYPEC_PORT1] = PD_PWR_45W; } - if(user_app.c1_equipment_type == EQUIMENT_IS_NO_PROTOCOL) - { - need_send_cap_flag[TYPEC_PORT1] = PD_PWR_65W; - g_powerout_info[TYPEC_PORT0].support_protocol.byte = PROTOCOL_ONLY_ENABLE_PD; - need_send_cap_flag[TYPEC_PORT0] = PD_PWR_5W; - comp_powerout_cur_set(TYPEC_PORT0, &g_powerout_info[TYPEC_PORT0], CURRENT_1P2A); - } - else if(user_app.c2_equipment_type == EQUIMENT_IS_NO_PROTOCOL) + // C1 + C2情况下, C2变压器只有45W,所以不出65W + // if(user_app.c1_equipment_type == EQUIMENT_IS_NO_PROTOCOL) + // { + // need_send_cap_flag[TYPEC_PORT1] = PD_PWR_65W; + // g_powerout_info[TYPEC_PORT0].support_protocol.byte = PROTOCOL_ONLY_ENABLE_PD; + // need_send_cap_flag[TYPEC_PORT0] = PD_PWR_5W; + // comp_powerout_cur_set(TYPEC_PORT0, &g_powerout_info[TYPEC_PORT0], CURRENT_1P2A); + // } + // else + if(user_app.c2_equipment_type == EQUIMENT_IS_NO_PROTOCOL) { need_send_cap_flag[TYPEC_PORT0] = PD_PWR_65W; g_powerout_info[TYPEC_PORT1].support_protocol.byte = PROTOCOL_ONLY_ENABLE_PD; @@ -1924,6 +1978,10 @@ void app_protocol_run(uint8_t port) adapter_state_check(); #endif +#if DELAY_SET_CURRENT_ENABLE + check_delay_set_current(port); +#endif + if(g_app_protocol_param[port].pd_param.typec_status.typec_status == AttachedSRC && g_app_protocol_param[port].pd_param.typec_status.typec_process_status == typec_exit_status ) 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 e09a037..4eb25a2 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 @@ -725,11 +725,11 @@ const pd_pdo_info_s port0_src_cap_info[] = .src_pdp = 70, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), - .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3A), }, { @@ -737,10 +737,10 @@ const pd_pdo_info_s port0_src_cap_info[] = .src_pdp = 65, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3A), }, @@ -749,11 +749,11 @@ const pd_pdo_info_s port0_src_cap_info[] = .src_pdp = 45, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_2P25A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), - .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_2P25A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_2P25A), }, // 有emarker @@ -762,10 +762,10 @@ const pd_pdo_info_s port0_src_cap_info[] = .src_pdp = 70, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3P5A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3P5A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_4P65A), .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3P5A), }, @@ -774,11 +774,11 @@ const pd_pdo_info_s port0_src_cap_info[] = .src_pdp = 65, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3P25A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), - .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3P25A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_4P3A), + .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3P25A), }, { @@ -786,34 +786,34 @@ const pd_pdo_info_s port0_src_cap_info[] = .src_pdp = 45, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_2P25A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), - .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_2P25A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_2P25A), }, { - .pdo_cnt = 6, + .pdo_cnt = 5, .src_pdp = 35, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_2P91A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_2P33A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_1P75A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_2P33A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_1P75A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3P85A), + .pdo5 = 0, .pdo6 = 0, }, { - .pdo_cnt = 6, + .pdo_cnt = 5, .src_pdp = 25, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_2P78A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_2P08A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_1P67A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_1P25A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_1P67A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_1P25A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_2P75A), + .pdo5 = 0, .pdo6 = 0, }, @@ -852,7 +852,6 @@ const pd_pdo_info_s port0_src_cap_info[] = .pdo5 = 0, .pdo6 = 0, }, - }; //const pd_pdo_info_s port0_src_cap_info[] = @@ -994,6 +993,7 @@ pwr_request_s port0_pd_power_request(void) { pwr_request_s pwr_request; uint8_t pps_mode; + uint32_t pd_pdp_ma = 0; pps_mode = g_powerout_info[TYPEC_PORT0].powerout_flags.bf.pd_pps_mode; @@ -1010,6 +1010,16 @@ pwr_request_s port0_pd_power_request(void) { pwr_request.request_cur += CURRENT_0P2A; } + + // 客户要求PPS时做恒功率: 当前广播的功率 / 当前请求的电压 + pd_pdp_ma = (g_app_protocol_param[TYPEC_PORT0].pd_param.pd_assist.pd_scedb.scedb_bits.src_pdp * 1000000) / g_powerout_info[TYPEC_PORT0].prl_update_vol; + + if(pd_pdp_ma < pwr_request.request_cur) + { + pwr_request.request_cur = pd_pdp_ma; + } + + log_info("pd_pdp_ma:%d\n", pd_pdp_ma); } pwr_request.request_vol = g_powerout_info[TYPEC_PORT0].prl_update_vol; 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 d33850f..79a8584 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 @@ -726,11 +726,11 @@ const pd_pdo_info_s port1_src_cap_info[] = .src_pdp = 70, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), - .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3A), }, { @@ -738,10 +738,10 @@ const pd_pdo_info_s port1_src_cap_info[] = .src_pdp = 65, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3A), }, @@ -750,11 +750,11 @@ const pd_pdo_info_s port1_src_cap_info[] = .src_pdp = 45, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_2P25A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), - .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_2P25A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_2P25A), }, // 有emarker @@ -763,10 +763,10 @@ const pd_pdo_info_s port1_src_cap_info[] = .src_pdp = 70, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3P5A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3P5A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_4P65A), .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3P5A), }, @@ -775,11 +775,11 @@ const pd_pdo_info_s port1_src_cap_info[] = .src_pdp = 65, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3P25A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), - .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_3P25A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_4P3A), + .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_3P25A), }, { @@ -787,34 +787,34 @@ const pd_pdo_info_s port1_src_cap_info[] = .src_pdp = 45, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_3A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_2P25A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), - .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_3A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_2P25A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_5A), + .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_16V, VOLTAGE_5V, CURRENT_3A), + .pdo6 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_21V, VOLTAGE_5V, CURRENT_2P25A), }, { - .pdo_cnt = 6, + .pdo_cnt = 5, .src_pdp = 35, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_3A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_2P91A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_2P33A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_1P75A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_2P33A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_1P75A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3P85A), + .pdo5 = 0, .pdo6 = 0, }, { - .pdo_cnt = 6, + .pdo_cnt = 5, .src_pdp = 25, .pdo0 = PD_SRC_SPR_FPS_PDO(1, 1, 0, 0, VOLTAGE_5V, CURRENT_3A), .pdo1 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_9V, CURRENT_2P78A), - .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_12V, CURRENT_2P08A), - .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_1P67A), - .pdo4 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_1P25A), - .pdo5 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_3A), + .pdo2 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_15V, CURRENT_1P67A), + .pdo3 = PD_SRC_SPR_FPS_PDO(0, 0, 0, 0, VOLTAGE_20V, CURRENT_1P25A), + .pdo4 = PD_SRC_SPR_PPS_PDO(1, VOLTAGE_11V, VOLTAGE_5V, CURRENT_2P75A), + .pdo5 = 0, .pdo6 = 0, }, @@ -976,7 +976,7 @@ pwr_request_s port1_pd_power_request(void) { pwr_request_s pwr_request; uint8_t pps_mode; - + uint32_t pd_pdp_ma = 0; pps_mode = g_powerout_info[TYPEC_PORT1].powerout_flags.bf.pd_pps_mode; @@ -992,6 +992,14 @@ pwr_request_s port1_pd_power_request(void) { pwr_request.request_cur += CURRENT_0P2A; } + + // 客户要求PPS时做恒功率: 当前广播的功率 / 当前请求的电压 + pd_pdp_ma = (g_app_protocol_param[TYPEC_PORT1].pd_param.pd_assist.pd_scedb.scedb_bits.src_pdp * 1000000) / g_powerout_info[TYPEC_PORT1].prl_update_vol; + + if(pd_pdp_ma < pwr_request.request_cur) + { + pwr_request.request_cur = pd_pdp_ma; + } } pwr_request.request_vol = g_powerout_info[TYPEC_PORT1].prl_update_vol; diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.axf b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.axf index fd500d4..a98dd85 100644 Binary files a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.axf and b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.axf differ diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.build_log.htm b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.build_log.htm index a05a95d..d3d989b 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.build_log.htm +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.build_log.htm @@ -30,25 +30,25 @@ Rebuild target 'Target 1' assembling startup_CMSDK_CM0.s... compiling adapter_antifake.c... compiling system_CMSDK_CM0.c... -compiling comp_auto_zero.c... compiling comp_primary_side.c... compiling main.c... +compiling port0_customized.c... compiling cps8860_it.c... -compiling comp_discharge.c... +compiling port1_customized.c... compiling app_spec.c... ..\..\common\app\src\app_spec.c(177): warning: #177-D: variable "umask_val" was declared but never referenced uint32_t umask_val = 0; ..\..\common\app\src\app_spec.c: 1 warning, 0 errors +compiling comp_discharge.c... +compiling comp_auto_zero.c... +compiling comp_adc.c... +compiling comp_protection.c... compiling comp_dac.c... ..\code\src\comp_dac.c(318): warning: #177-D: variable "temp" was declared but never referenced uint32_t temp[TYPEC_PORT_MAX + 1] = {0}; -..\code\src\comp_dac.c(462): warning: #177-D: function "comp_dac_cc_acdc" was declared but never referenced +..\code\src\comp_dac.c(472): warning: #177-D: function "comp_dac_cc_acdc" was declared but never referenced static void comp_dac_cc_acdc(uint8_t port, uint16_t val, uint16_t offset) ..\code\src\comp_dac.c: 2 warnings, 0 errors -compiling comp_protection.c... -compiling port0_customized.c... -compiling port1_customized.c... -compiling comp_adc.c... compiling comp_powerout.c... compiling customized.c... ..\code\src\customized.c(26): warning: #188-D: enumerated type mixed with another type @@ -57,20 +57,20 @@ compiling customized.c... user_app_s user_app = {0}; ..\code\src\customized.c(175): warning: #177-D: function "path_scp_mode_exit_action" was declared but never referenced static void path_scp_mode_exit_action(uint8_t port, scp_param_s *scp_param) -..\code\src\customized.c(1604): warning: #177-D: function "comp_ccloop_enable" was declared but never referenced +..\code\src\customized.c(1658): warning: #177-D: function "comp_ccloop_enable" was declared but never referenced static void comp_ccloop_enable(uint8_t port) ..\code\src\customized.c: 4 warnings, 0 errors compiling dpdn_protocol.c... compiling qc_scp_protocol.c... +compiling ufcs_protocol.c... compiling pd_protocol.c... ..\..\common\comp\protocol\pd_protocol\src\pd_protocol.c(844): warning: #550-D: variable "pd_hw_uvdm_header" was set but never used pd_hw_uvdm_header_u pd_hw_uvdm_header = {0}; ..\..\common\comp\protocol\pd_protocol\src\pd_protocol.c(275): warning: #177-D: function "pd_analog_set" was declared but never referenced static void pd_analog_set(uint8_t port) ..\..\common\comp\protocol\pd_protocol\src\pd_protocol.c: 2 warnings, 0 errors -compiling ufcs_protocol.c... linking... -Program Size: Code=12642 RO-data=1910 RW-data=60 ZI-data=3872 +Program Size: Code=12882 RO-data=1910 RW-data=60 ZI-data=3880 FromELF: creating hex file... After Build - User command #1: .\CPS8860.bat C:\Users\TJP\Desktop\GIT_TEST\CPS8860_9196_70W\Anker_9196_CPS8860\PD_CPS8860_A1_CPS_Common_Demo\ac_project\project>set Project_Name=CPS8860_anker_9196 @@ -81,7 +81,7 @@ C:\Users\TJP\Desktop\GIT_TEST\CPS8860_9196_70W\Anker_9196_CPS8860\PD_CPS8860_A1_ δı code\src\comp_dac.c δı code\src\comp_primary_side.c δı code\src\comp_protection.c -δı code\src\customized.c +ʽ code\src\customized.c δı code\src\port0_customized.c δı code\src\port1_customized.c ------------------------------------------------------------ @@ -118,11 +118,11 @@ out_type : expected out file type 'd' output binary file(.bin) [out_file_name_without_postfix] : Option: out file name without postfix. ---------------------------------------------------------------------- -input code size: 14,612 [14.270K] - app size: 3918 ; CRC: 3572 +input code size: 14,852 [14.504K] + app size: 3A08 ; CRC: 4146 -out code size : 14,616 [14.273K] -create file: .\output\CPS8860_anker_9196_A1_60_V1.6_CRCA78C.hex success! +out code size : 14,856 [14.508K] +create file: .\output\CPS8860_anker_9196_A1_60_V1.7_CRCD4BD.hex success! C:\Users\TJP\Desktop\GIT_TEST\CPS8860_9196_70W\Anker_9196_CPS8860\PD_CPS8860_A1_CPS_Common_Demo\ac_project\project>move /Y .\CPS8860_anker_9196_*.hex .\output һļҲļ ".\Objects\CPS8860_anker_9196.axf" - 0 Error(s), 9 Warning(s). @@ -138,7 +138,7 @@ Package Vendor: ARM D:\Keil_v5\ARM\PACK\ARM\CMSIS\5.8.0\Device\ARM\ARMCM0\Include

Collection of Component Files used:

-Build Time Elapsed: 00:00:05 +Build Time Elapsed: 00:00:06 diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.htm b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.htm index 2d7bafd..e6d226c 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.htm +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/project/Objects/CPS8860_anker_9196.htm @@ -3,7 +3,7 @@ Static Call Graph - [.\Objects\CPS8860_anker_9196.axf]

Static Call Graph for image .\Objects\CPS8860_anker_9196.axf


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Tue Nov 18 18:10:44 2025 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Tue Nov 25 16:58:28 2025

Maximum Stack Usage = 288 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

@@ -116,100 +116,102 @@ Global Symbols

CHIP_OT_Handler (Thumb, 0 bytes, Stack size 0 bytes, rom_symdef.txt(ABSOLUTE), UNUSED)
[Address Reference Count : 1]

-

__aeabi_uidivmod (Thumb, 0 bytes, Stack size 0 bytes, rom_symdef.txt(ABSOLUTE)) +

__aeabi_uidivmod (Thumb, 0 bytes, Stack size 0 bytes, rom_symdef.txt(ABSOLUTE))

[Called By]

- -

__aeabi_idivmod (Thumb, 0 bytes, Stack size 0 bytes, rom_symdef.txt(ABSOLUTE)) -

[Called By]

- -

__aeabi_memcpy (Thumb, 0 bytes, Stack size 0 bytes, rom_symdef.txt(ABSOLUTE)) -

[Called By]

+ +

__aeabi_idivmod (Thumb, 0 bytes, Stack size 0 bytes, rom_symdef.txt(ABSOLUTE)) +

[Called By]

+ +

__aeabi_memcpy (Thumb, 0 bytes, Stack size 0 bytes, rom_symdef.txt(ABSOLUTE)) +

[Called By]

-

__aeabi_memcpy4 (Thumb, 0 bytes, Stack size 0 bytes, rom_symdef.txt(ABSOLUTE)) -

[Called By]