本帖最后由 Liuhl1998 于 2022-8-8 18:00 编辑
随着USB PD3.1的发布,PD快充将支持最高48V电压输出,充电功率同步提升至240W,在生活中PD充电器随处可见,为人们日常提供不可或缺的便捷。如果有一款合适的“诱”电端,PD充电器就可以连续输出可调节的电压,这对于工程师来说不就相当于一个可调的电压源吗?基于CH543的评估板做了这样一个受电端,效果差不多这样:
PD快充是基于CC线通讯完成,需要遵循USB Power Delivery规范,从PD协议规范中可以了解到具体的协商过程:
由上图可以看出USB PD通讯就是Host(Source)和Power Brick(Sink)之间的数据交互。当Sink接入后(主机检测到5.1K下拉电阻的接入),主机(Source)将在100ms~200ms内会发送Source Cap(包含可提供电压档位的PDO)。
设备接收到主机发来的消息时会回复Good CRC进行响应,并在24ms内回复Request(请求需要的电压电流)。
主机收到设备发来的Request会回复Good CRC进行响应,并检测自身PDO是否支持设备Request,支持:会在24ms内回复Accept,不支持:回复Reject。
设备接收到主机发来的Accept/Reject,都会回复Good CRC进行响应。
主机若是支持设备请求,将会在450ms进行调压,调压完成后发送PS_RDY,然后等待设备回复Good CRC进行响应。
理论明白了,现在就动手来实践吧,硬件采用的是:“沁恒微电子”的CH543评估板,CH543 内置了 USB Power Delivery 控制器和 PD BMC PHY 收发器,支持 USB type C、BC、PD2.0、PD3.0、PPS,还支持 12V 高压电源,PD通讯时需要的BMC编解码、4B5B编解码、CRC校验也都有集成,这样的话用CH543实现一个PD通讯就比较简单了。
单片机原理图CC可以直接连接Type-C端口,不需要额外添加器件(CH543内置5.1K下拉),电路还是比较简单的:
我这次编写的是PD Sink受电端,那么我只需要在合适的场景下及时回复Good CRC和Request,就能完成USB PD通讯。在消息处理上,我是根据CH543 USB PD中断的特点来进行相应消息处理,软件如下:
|