diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/comp_protection.h b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/comp_protection.h index f53c0bd..4ad87d3 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/comp_protection.h +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/inc/comp_protection.h @@ -40,8 +40,8 @@ #define DN_OVP_VPT 4000//2374 #define DP_OVP_VPT DN_OVP_VPT -#define NTC_OTP_VPT NTC_100 -#define NTC_OTP_RECOVER_VPT NTC_60 +#define NTC_OTP_VPT NTC_105 +#define NTC_OTP_RECOVER_VPT NTC_85 #define NTC_OTP_DERATE 1954 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 8736b81..ca64051 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 @@ -19,8 +19,9 @@ #define PD_PWR_45W 6 #define PD_PWR_35W 7 #define PD_PWR_25W 8 -#define PD_PWR_12W 9 -#define PD_PWR_5W 10 +#define PD_PWR_15W 9 +#define PD_PWR_12W 10 +#define PD_PWR_5W 11 #include "core_comm.h" #include "drv_comm.h" @@ -51,13 +52,17 @@ extern bool usba_online_state; /* 60°: 23.47 * 20uA = 469 + 85°: 10.28 * 20uA = 206 90°: 8.737 * 20uA = 175 - 100°: 8.737 * 20uA = 128 + 100°: 6.39 * 20uA = 128 + 105°: 5.510 * 20uA = 110 */ -#define NTC_60 469 -#define NTC_90 175 -#define NTC_100 128 +#define NTC_60 2299 +#define NTC_85 1028 +#define NTC_90 874 +#define NTC_100 639 +#define NTC_105 551 typedef enum { @@ -357,7 +362,7 @@ void solve_huawei_matebook(uint8_t port, pd_param_s* pd_param); void user_timer_event(uint8_t port); #if USER_NTC_ENABLE -// void ntc_judgment(void); +void ntc_judgment(void); #endif #endif diff --git a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/comp_protection.c b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/comp_protection.c index 120d14e..ee278bc 100644 --- a/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/comp_protection.c +++ b/PD_CPS8860_A1_CPS_Common_Demo/ac_project/code/src/comp_protection.c @@ -259,7 +259,7 @@ void comp_protection_monitor(uint8_t port, protection_param_s *protection_param) adc_sample[port][PROT_UVP] = comp_adc_get_vin12(port); adc_sample[port][PROT_DP_WET] = comp_adc_get_dp12(port); adc_sample[port][PROT_DN_WET] = comp_adc_get_dn12(port); - adc_sample[port][PROT_OTP] = OMP_ADC_GET_RT_VOL();//comp_adc_get_rt12(port); + adc_sample[port][PROT_OTP] = comp_adc_get_rt12(TYPEC_PORT1); adc_sample[port][PROT_OVP] = comp_adc_get_vin12(port); pro_vpt[port][PROT_UVP] = (g_powerout_info[port].set_vol >= VOLTAGE_5V) ? PRO_UVP_VPT_COEFF(g_powerout_info[port].set_vol) : VOLTAGE_3V; 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 6dade09..b1c0d18 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 @@ -405,33 +405,38 @@ void pd_src_cap_init(uint8_t port, pd_param_s*pd_param, uint8_t pwr_cnt) } #if USER_NTC_ENABLE -// void ntc_judgment(void) -// { -// uint16_t ntc_val = 0; -// static uint16_t ntc_derat_cnt = 0, ntc_recove_cnt = 0; - -// ntc_val = COMP_ADC_GET_RT2_VOL(); - -// // 消抖时间的话, 是还需要/5, 比如给200ms, 实际是40ms -// if(trigger_check(ntc_val, NTC_90, -// true, -// &ntc_derat_cnt, -// DELAY_200MS) -// ) -// { -// user_app.ntc_triggered_dera = true; -// } - -// if(trigger_check(ntc_val, NTC_60, -// false, -// &ntc_recove_cnt, -// DELAY_200MS) -// ) -// { -// user_app.ntc_triggered_dera = false; -// } - -// } +void ntc_judgment(void) +{ + uint16_t ntc_val = 0; + static uint16_t ntc_derat_cnt = 0, ntc_recove_cnt = 0; + + ntc_val = comp_adc_get_rt12(TYPEC_PORT1); + + // 消抖时间的话, 是还需要/5, 比如给200ms, 实际是40ms + if(trigger_check(ntc_val, NTC_100, + true, + &ntc_derat_cnt, + DELAY_200MS) + ) + { + user_app.ntc_triggered_dera = true; + } + + if(trigger_check(ntc_val, NTC_85, + false, + &ntc_recove_cnt, + DELAY_200MS) + ) + { + user_app.ntc_triggered_dera = false; + } + + if(user_app.last_ntc_triggered_dera != user_app.ntc_triggered_dera) + { + user_app.last_ntc_triggered_dera = user_app.ntc_triggered_dera; + user_app.update_adapter_state = true; + } +} #endif void user_timer_event(uint8_t port) @@ -820,15 +825,8 @@ void adapter_state_check(void) #endif // 端口状态改变 或者 NTC有改变 或者一分钟倒计时结束 -// #if USER_NTC_ENABLE - -// if(user_app.last_adapter_state == user_app.adapter_state -// && user_app.last_ntc_triggered_dera == user_app.ntc_triggered_dera -// && !user_app.update_adapter_state) -// #else if(user_app.last_adapter_state == user_app.adapter_state && !user_app.update_adapter_state) -// #endif { return; } @@ -1152,11 +1150,11 @@ void adapter_state_check(void) #if USER_NTC_ENABLE // 触发NTC降额, 则两个端口最大输出15W - // if(user_app.ntc_triggered_dera) - // { - // need_send_cap_flag[TYPEC_PORT0] = PD_PWR_15W; - // need_send_cap_flag[TYPEC_PORT1] = PD_PWR_15W; - // } + if(user_app.ntc_triggered_dera) + { + need_send_cap_flag[TYPEC_PORT0] = PD_PWR_15W; + need_send_cap_flag[TYPEC_PORT1] = PD_PWR_15W; + } #endif @@ -1199,9 +1197,6 @@ void adapter_state_check(void) need_send_cap_flag[TYPEC_PORT1]); user_app.last_adapter_state = user_app.adapter_state; -#if USER_NTC_ENABLE - // user_app.last_ntc_triggered_dera = user_app.ntc_triggered_dera; -#endif } /* @@ -1614,7 +1609,7 @@ uint8_t system_init(void) #if !UART_DEUG && USER_NTC_ENABLE REG_CLKCTRL_PIN_MUL_SET->bf.gp1 = 0x1; // 设置为RT2电流源功能 - REG_ANALOG_PUCUR->bf.io2 = 0x1; // 20uA + REG_ANALOG_PUCUR->bf.io2 = 0; // 100uA #endif #if ADC_ENABLE 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 805083d..e1f341d 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 @@ -812,6 +812,17 @@ const pd_pdo_info_s port0_src_cap_info[] = .pdo6 = 0, }, + { + .pdo_cnt = 2, + .src_pdp = 15, + .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_1P67A), + .pdo2 = 0, + .pdo3 = 0, + .pdo4 = 0, + .pdo5 = 0, + .pdo6 = 0, + }, { .pdo_cnt = 1, 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 c1256ee..a49db8b 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 @@ -830,6 +830,18 @@ const pd_pdo_info_s port1_src_cap_info[] = .pdo6 = 0, }, + { + .pdo_cnt = 2, + .src_pdp = 15, + .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_1P67A), + .pdo2 = 0, + .pdo3 = 0, + .pdo4 = 0, + .pdo5 = 0, + .pdo6 = 0, + }, + { .pdo_cnt = 1, .src_pdp = 12, 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 1af5a68..731deed 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 1ed05e6..9db5ab9 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 @@ -36,39 +36,43 @@ compiling app_spec.c... uint32_t umask_val = 0; ..\..\common\app\src\app_spec.c: 1 warning, 0 errors compiling comp_primary_side.c... -compiling cps8860_it.c... -compiling port0_customized.c... -compiling port1_customized.c... compiling comp_auto_zero.c... compiling main.c... -compiling comp_discharge.c... compiling comp_powerout.c... -compiling comp_dac.c... -..\code\src\comp_dac.c(311): warning: #177-D: variable "temp" was declared but never referenced - uint32_t temp[TYPEC_PORT_MAX + 1] = {0}; -..\code\src\comp_dac.c: 1 warning, 0 errors +compiling comp_discharge.c... +compiling port0_customized.c... +compiling port1_customized.c... compiling comp_protection.c... +compiling cps8860_it.c... compiling customized.c... ..\code\src\customized.c(26): warning: #188-D: enumerated type mixed with another type adapter_info_s g_adapter_info = {0}; ..\code\src\customized.c(29): warning: #188-D: enumerated type mixed with another type user_app_s user_app = {0}; +..\code\src\customized.c(418): warning: #167-D: argument of type "uint16_t *" is incompatible with parameter of type "uint8_t *" + &ntc_derat_cnt, +..\code\src\customized.c(427): warning: #167-D: argument of type "uint16_t *" is incompatible with parameter of type "uint8_t *" + &ntc_recove_cnt, ..\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(1539): warning: #177-D: function "comp_ccloop_enable" was declared but never referenced +..\code\src\customized.c(1534): 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 +..\code\src\customized.c: 6 warnings, 0 errors +compiling comp_dac.c... +..\code\src\comp_dac.c(311): warning: #177-D: variable "temp" was declared but never referenced + uint32_t temp[TYPEC_PORT_MAX + 1] = {0}; +..\code\src\comp_dac.c: 1 warning, 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(827): 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=13594 RO-data=1866 RW-data=60 ZI-data=3864 +Program Size: Code=12526 RO-data=1910 RW-data=64 ZI-data=3868 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 @@ -116,14 +120,14 @@ 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: 15,520 [15.156K] - app size: 3CA4 ; CRC: 149B +input code size: 14,500 [14.160K] + app size: 38A8 ; CRC: 8968 -out code size : 15,524 [15.160K] -create file: .\output\CPS8860_anker_9196_A1_60_V0.7_CRC1EBD.hex success! +out code size : 14,504 [14.164K] +create file: .\output\CPS8860_anker_9196_A1_60_V0.8_CRC655F.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), 8 Warning(s). +".\Objects\CPS8860_anker_9196.axf" - 0 Error(s), 10 Warning(s).

Software Packages used:

@@ -136,7 +140,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:13 +Build Time Elapsed: 00:00:07 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 861dbe9..b6b9f24 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,9 +3,9 @@ Static Call Graph - [.\Objects\CPS8860_anker_9196.axf]

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


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Wed Jul 09 09:27:44 2025 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Thu Jul 10 18:05:37 2025

-

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

+

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

Call chain for Maximum Stack Depth:

main ⇒ app_spec_run ⇒ app_protocol_run ⇒ adapter_state_check ⇒ wait_c2_ready ⇒ pd_phy_open_vbus ⇒ adapter_state_check (Cycle)

@@ -14,7 +14,7 @@ Mutually Recursive functions

  • SVC_Handler   ⇒   SVC_Handler
  • PendSV_Handler   ⇒   PendSV_Handler
  • CCX_OVP_Handler   ⇒   CCX_OVP_Handler
    -
  • pd_phy_open_vbus   ⇒   adapter_state_check
    +
  • pd_phy_open_vbus   ⇒   adapter_state_check

    @@ -116,8 +116,8 @@ 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)) -

    [Called By]