最近在搞一个支持USB PD 3.0的快充方案,主控用的中颖SH87F8801(带USB 2.0接口),PD协议芯片用的是CH224K。现在的问题是,和手机握手时经常失败,比如插上去显示“普通充电”(5V/2A),而不是PD快充(9V/2A)。
查了资料,PD协议握手需要先通过CC线通信,CH224K会检测CC线的电压,然后请求对应的电压档位。但用示波器测CC线,发现电压一直在0.6V和1.2V之间跳,不稳定。是不是上拉电阻的问题?CH224K的CC线需要接5.1kΩ上拉电阻到VCC,我用的1%精度,会不会偏差太大?
还有,SH87F8801通过I2C控制CH224K,比如设置输出电压档位(5V/9V/12V),但I2C通信偶尔会超时。是不是I2C的时钟频率设太高了?我设的是400kHz,要不要降到100kHz?还有,I2C的上拉电阻用4.7kΩ,会不会太小,导致上升沿太陡,干扰通信?
另外,软件上的握手流程有没有讲究?比如先检测CC线电压,确认连接后,再通过I2C发送PD请求报文,然后等待CH224K的ACK。但实际用的时候,比如发送请求后,CH224K没回应,是不是需要重试?比如重试3次,每次间隔100ms?
|
|