双口电源设计小结
一.双口电源控制器项目
- 双口控制器整体模块描述
双口共用一个开关电源,LDOA用于提供5V和100mA的驱动能力。主要作用是在双口都插入设备的时候,当A口设备充满电量的时候,此时会由LDOA进行供电,并释放开关电源,C口具备完整的快充能力;比如手机经过测试发现其充电电流小于100ma(50ma),但是由于波动需要数字电路提供滤波的电路设计,大于100ma持续0.5s才会认为发生了ALV欠压。
ISENSEA用于检测A口设备的接入和拔出,检测ALC欠流模块;技术难度比较高,因为要通过一个小电阻检测其两端的电压,要求电压比较器精度200mv,对模拟的要求比较高,所以C口的接入和拔出方案由ISENSEC修改为统一由Rd检测,也就是CC线的电压;没有设备接入时,由于Rp的上拉电阻作用,CC线由Vconn供电为5V,当接入PD负载时,由于电阻Rd的作用,CC线电压变为1.2V,通过比较器检测CC线的接入,CC线信号首先经过了一个迟滞比较器来提高其抗干扰能力。
由于C口的Vbus开关由两个核决定,所以VbusPD和VbusQC开关进行逻辑或门输出,接到模拟模块;
- Dual_Port_Manger模块
该模块是主要是选择器,A口工作时由A口驱动DA电压源和电流源;C口工作时由C口驱动DA电压源和电流源;双口都动作时,DAC由该模块提供5V/5A的电流能力,由状态机实现,因为先接入A口再接入C口等待的信号时A口复位完成后进入双口工作状态,反之是等待C口的复位完成信号进入双口工作模式;
- C口 PD和QC协作模式控制模块。
原方案是PD优先,检测到Rd后直接由PD控制DA输出。后来方案修改为QC和PD两个核单独进行工作。QC由DM线进行判断,PD由CC线进行判断。当PD工作时会有一个PD working信号,QC状态机收到该信号后会进入disable状态,这样的设计鲁棒性更好,更容易实现。
- PD核描述
PD核的电源能力:原方案是使用IIC或者uart可配置的寄存器堆,因为PD3.0协议最多支持7个电源能力,所以共有32*7bit,比较小没有使用RAM IP核;由于项目的时间比较紧,后来的方案确定为使用3bit的控制端口,提供18w、27w、30w、45w、65w和65w、22w(samsung)、24w(mi)固定能力的电源配置方案;
DPM(device policy manager)层的作用: 电源能力配置模块、电源能力协商模块、电源供电模块、温度判断模块、以及DPM硬复位模块;
电源能力配置模块:由于检测到Rd之后,先发送discover_identity请求Cable消息,因为有些Cable含有Emark芯片,会返回Identity_ack消息。由该消息判断该电缆是否支持5A的电流能力,如果支持则发送全部PDO,如果没有Emark芯片或者不支持5A,则将5A能力的PDO降低为3A;如果接收到的sink消息中版本号是2.0,则将PPS(APDO)取消,不进行发送该电源能力;
电源能力协商模块:主要负责将sink 请求的PDO和电流电压以及功率进行判断,如果满足则发送给PE层,进行后续供电过程;如果PDO位置不满足或者电源能力不满足则发送PE,PE发送reject消息,然后根据情况进行后续的动作,如果是第一次协商则直接硬复位,否则回到上次请求的电源能力进行供电。
电源供电模块:将请求的电流电压发送DA,然后等待DA的供电完成信号。将此信号发送给PE层,进行后续的状态跳转;该模块需要一个单位转换,DA电压20mv,电流10ma,协议内是50mv和10ma(PDO和APDO不同);
温度判断模块:电源温度过高时会告诉PE发送Alert消息,如果温度高的很多,则直接发送HardReset消息;
DPM硬复位模块:PE控制发送复位信号,DPM控制模拟的复位以及模拟复位完成的信号,主要是Vbus,Vconn以及DA的驱动信号,模拟模块将会泄流操作,然后返回复位完成信号,DPM会发送复位完成信号给PE,让其进行正常的状态跳转;
PE层:该层是PD源端核心的控制逻辑,负责和sink的消息控制与交互,向上和DPM进行通讯,进而控制模拟和电源的动作,向下和协议层进行通讯,控制协议层发送相应的数据包和复位信号;
PRL层:协议层包含Tx和Rx以及复位模块。
Tx:发送模块负责对PE要求发送的消息进行组织数据包并发送数据包,该模块包含数据是否发送成功的判断,以及消息的正确组织,比如版本号,消息ID等内容;
Rx:接受数据模块负责sink发送的数据进行解包和反馈正常接收的消息信号,从消息中提取有效的bit信息,传递给PE层,PE层由此进行相应的控制电源和模拟部分;
硬复位模块:该模块负责通知PE层进行硬复位动作,和控制PHY物理层进行复位动作;由于硬复位不属于常规的数据包,比较短;
PHY层:物理层包含Tx模块和Rx模块;
Tx模块:该模块负责数据的4B/5B的编码、串化、拼装(Preamble、Soph、Eop)、添加检验CRC32以及BMC编码模块;PRL和PHY层的接口是8bit并行数据,串化(300k)后和根据协议进行4B/5B编码,然后添加前导码、Sop和Eop。然后进行添加校验码和BMC编码发送(600k);
Rx模块:该模块负责BMC解码(18M),以及校验码验证,串转并、4B/5B解码和操作,以及fifo控制数据流量,读入为18M,输出为30K;解码模块是根据前导码计算UI长度的平均值,8个一组,然后取3/4阈值进行对数据的解码,因为协议要求频率范围是270K-330K的解码区间;
- QC核描述
该模块兼容BC1.2、Divder3、QC2.0、QC3.0的兼容性设计;
BC1.2:检测到ALC取消之后,大电流接入设备,提供5v/3A供电电流,并将D+和D-短接。
Divder3:提供D+线2.7v的电压,由Vconn提供;供苹果设备进行识别;
QC2.0:检测到D+是0.6V,使用比较器实现;并且持续1.1s则认为进入QC2.0模式,QC2.0模式提供5V/3A还有9V/2A和12V/1.5A的三个充电挡位。为了实现支持和BC1.2的兼容则在检测到0.6V持续1.1s后将D-通过下拉电阻接地,因为QC2.0的充电情况是根据D+和D-的电压组合实现的挡位判断。0.6/0 = 5v、3.3/0.6 = 9v、3.3/3.3 = 12v;切换的滤波时间是20ms;QC3.0模式是3.3V – 12V /3A能力的步进调整,每次调节电压200mv,0.6/3.3滤波20ms进入continue mode,0.6/0.6滤波1ms进入Active状态进行下调200mv电压(3.3/3.3 则进行上调200mv),等待0.6/3.3进入Inactive模式并进行供电;注意的是QC2.0进入3.0可以直接进行调节电压,但是3.0回2.0只能先回到5V供电挡位;
6 A口控制模块
A口的插入检测通过ALC信号的低电平,表示没有欠流进入设备插入的5V供电状态;如果PortC口没有工作,则A口进行独立的QC供电模块;期间若检测到C口插入则A口进行复位,然后进入合作模式;若A口在合作模式中发生欠流,表示A口设备已经充满电量。然后由A口的LDO进行供电,释放开关电源,进行对C口的全功能快充;如果此时发生了ALV则表示A口设备大电流接入,此时后让C口进行复位,等待复位完成后进入双口合作模式;