Hi.Infineon
目前使用CCG3 PA CYPD3171做的power bank,跟大部分设备充电都能做try source,但当碰到 yoga 14S笔记本时,发现反向充电故障(笔记本给充电宝充,充电宝电量是75%;笔记本电量 30% 之间)。不断插拔C口,10次,有6次出现反冲。问下:3171在power bank上做try souce是否有优先等级的设置,比如设置成1是最高,8是最低呢?从沟通日志来看,没有看到角色切换动作,power bank直接就做成了sink。
已解决! 转到解答。
Hi Flance,
你说的这个门限值应该就是我上个回复中cutoff voltage, 这个电压可以通过Configuration Utility -> Battery Configurations -> Battery cutoff voltage修改。
在代码里,是在power_bank.c -> pb_debounce_cb()中会读取当前battery的电压跟这个cutoff电压进行比较,如果在debounce的时间内一直小于这个值且当前为source,就会先disable PD,关断VBUS, 触发进入到PB_BATTERY_STATE_DB_TYPEC_WAIT_DCZ状态。
也可以在下面代码中手动写死这个值,就不用从config table中读了。
if (vbatt <= pd_get_ptr_bat_chg_tbl(port)->vbatt_cutoff_volt)
Hi Flance,
一定程度上也是合理的,在充电宝插入笔记本的时候,有概率充电宝不能识别为source。
或者可以使能POWER_ROLE_PREFERENCE_ENABLE宏定义,首次contract完成后通过发送PR_SWAP实现角色转换。
Thanks, Fred
Hi.Fred
在CCG3 PA 3171的标准固件,并没有找到POWER_ROLE_PREFERENCE_ENABLE的相关宏定义,能提供类似固件的定义和相关工程调用工程的历程吗?我好按照历程增加到3171工程中去。
Hi Flance,
想问下,客户power bank的设计为什么会参考PA的固件呢?
这个宏定义在CCGx Power SDK的CYPD3171 pb的demo code中是可以找到的,但需要在config.h中enable一下,还有另外一个宏定义ROLE_PREFERENCE_ENABLE也需要enable。
另外一个建议稍微简单些,可以尝试用Configuration Utility把Battery Configurations -> Battery cutoff voltage适当调低一点,在pb的固件中,如果VBAT大于这个电压,正常情况会去PR_SWAP的。
Hi.Fred
customer current use the ref. SDK is PB812B Ver. 3.3 as below; In CCG3(CYPD3125) or CCG5(CYPD5225) standard SDK, I can find the /* Disable Fast Role Swap from Source to Sink. */
#define CCG_FRS_TX_ENABLE (0u)
In SDK CCG3 PB Ver.3.5 , I also find below information, but I can't find ROLE_PREFERENCE_ENABLE in config.h; I will let customer to add TX_enable (1) into their SDK.
#if CCG_PD_REV3_ENABLE
#define CCG_FRS_RX_ENABLE (0u)
#define CCG_FRS_TX_ENABLE (0u)
#define CCG_PPS_SRC_ENABLE (0u)
By the way, would you tell your SDK ver. information or share it to me.
对于可以尝试用Configuration Utility把Battery Configurations -> Battery cutoff voltage适当调低一点,在pb的固件中,如果VBAT大于这个电压,正常情况会去PR_SWAP的。
-feedback:客户之前设置的电压是9V,修改到5V后也没有看到pr_swap.
thanks
flance fang
Hi Flance,
我看了下这个代码,跟SDK还是有些区别。SDK3.5config.h中 ROLE_PREFERENCE_ENABLE没有定义,所以需要手动加个宏定义。
另外在power_bank.c -> pb_event_handler()中有相关代码,如果当前是normal state且为sink且对方为DRP,会发PR_SWAP,关于normal state跟其他state的状态切换,代码在pb_bat_monitor()中。
至于客户修改了cutoff voltage还不能PR_SWAP的原因,可以测试下VBAT是否是真的大于cutoff V?
Hi.Fred
好的,谢谢!客户在他们的辅助CPU目前多做了几次hard rest,可以初步解决反冲现象,让他们也尝试你的相关建议再试试。
想问下:在代码中,我们3171是在哪个地方来设置该电池的门限值:电池电量很低时截止向外放电,笔记本也不给它充电(应该是dead battery enable),比如电池剩余电量5%或者3%,就不再放电了,否则电池就会进入加速报废状态,该状态的参数是在哪个地方设置和修改呢?
thanks
flance fang
Hi Flance,
你说的这个门限值应该就是我上个回复中cutoff voltage, 这个电压可以通过Configuration Utility -> Battery Configurations -> Battery cutoff voltage修改。
在代码里,是在power_bank.c -> pb_debounce_cb()中会读取当前battery的电压跟这个cutoff电压进行比较,如果在debounce的时间内一直小于这个值且当前为source,就会先disable PD,关断VBUS, 触发进入到PB_BATTERY_STATE_DB_TYPEC_WAIT_DCZ状态。
也可以在下面代码中手动写死这个值,就不用从config table中读了。
if (vbatt <= pd_get_ptr_bat_chg_tbl(port)->vbatt_cutoff_volt)