94 lines
4.2 KiB
Plaintext
94 lines
4.2 KiB
Plaintext
冠达快充板(SINK)通讯协议
|
||
|
||
2025.8.13
|
||
|
||
SINK的ID为1,波特率200K,TTL
|
||
|
||
1.读取变电压板电压
|
||
(要实时比较设置的快充指令和读回来的快充指令,若有不一样,则重设)
|
||
(注意vooc模式下数据返回会很慢)
|
||
|
||
发送:
|
||
0B 00 01 20 loadvh loadvl loadch loadcl nc nc CRC8 //长度+nc+id+指令+负载电压(2字节,0.01V)+负载电流(2字节,mA)+2个预留字节+CRC8校验
|
||
回复:
|
||
15 00 01 20 VH VL qc_data1 qc_data2 qc_data3 qc_data4 qc_data5 qc_data6 ver_h ver_l nc nc nc nc nc nc CRC8
|
||
//长度+nc+ID+指令+2字节电压(0.01V)+6字节快充指令+2字节版本号+6字节预留+CRC8校验
|
||
|
||
|
||
2.读取源端的PD协议数据(当前为PDO,PPS,PD3.1,AVS协议时有效)
|
||
发送:05 00 01 13 2A
|
||
回复:
|
||
XX 00 01 13 //长度(根据实际计算)+NC+ID+指令
|
||
00 00 VMINH VMINL VMAXH VMAXL CURH/PORH CURL/PORL NC NC NC NC NC NC
|
||
//源类型(1字节,00为PDO,03为APDO) + PPS类型(1字节,源类型为3时有效,00为SPR PPS,01为EPR AVS,02为SPR AVS) + 最小电压(2字节,mV) + 最大电压(2字节,mV) + 最大电流/功率(2字节,mA/W) + 预留(6字节,当PPS类型为02时有效,意义与前6字节一致)
|
||
00 00 VMINH VMINL VMAXH VMAXL CURH/PORH CURL/PORL NC NC NC NC NC NC
|
||
......
|
||
CRC8
|
||
|
||
|
||
|
||
3.设置CC线
|
||
发送:
|
||
06 00 01 17 00 2A //长度+nc+id+指令+CC(0为都选通,1为选择CC1,2为CC2,3为全断开)+CRC8校验
|
||
回复:
|
||
05 00 01 17 2A //长度+nc+id+指令+CRC8校验
|
||
|
||
|
||
4.设置CC线电平
|
||
发送:
|
||
06 00 01 16 00 2A //长度+nc+id+指令+电平等级(0-10,默认7)+CRC8校验
|
||
回复:
|
||
05 00 01 16 2A //长度+nc+id+指令+CRC8校验
|
||
|
||
|
||
5.设置快充协议(VOOC,UFCS模式下切换其他模式时,需要先把V+,V-,D+,D-,CC等和变电压有关的继电器切至悬空,至少等待1s后,等能读到数据且快充指令正确,再把继电器切回)
|
||
格式:
|
||
长度+NC+ID+6字节快充数据+CRC8
|
||
发送:
|
||
1、QC2.0,电压5V/9V/12V/20V, 命令:0A 00 01 F8 5A 00 00 00 00 2A //第5个字节为电压(0.1V)
|
||
2、QC3.0,电压3.3-20V, 命令:0A 00 01 F6 5A 00 00 00 00 2A //第5个字节为电压(0.1V)
|
||
3、FCP,电压5V/9V/12V, 命令:0A 00 01 F2 78 00 00 00 00 2A //第5个字节为电压(0.1V)
|
||
4、AFC,命令:0A 00 01 F9 46 00 00 00 00 2A //第5个字节为变电压数据,详细参考AFC文档
|
||
5、SCP,命令:0A 00 01 F3 27 10 0F A0 00 2A //5,6字节为电压(mv),7、8字节为电流(mA)
|
||
6、VIVO , 命令:0A 00 01 FD 27 10 00 00 00 2A //5,6字节为电压(mv),7、8字节为电流(mA)
|
||
7、传音/TFC,命令:0A 00 01 F7 2E E0 00 00 00/01 2A //5,6字节为电压(mv),7、8字节为电流(mA),9字节为RFC/TFC选择
|
||
8、PDO手动,需要设定组号,电压和产品相关,命令:0A 00 01 FB 05 00 00 00 00 2A //5字节为组号
|
||
9、PDO自动,组号设为0,自动变到指定电压,命令:0A 00 01 FB 00 2E E0 00 00 2A //5字节为组号,6,7字节为电压(mv),8、9字节为电流(mA)
|
||
10、PPS手动,需要设定组号、电压、电流,电流0最大, 命令: 0A 00 01 FC 06 4E 20 00 00 2A //5字节为组号,6,7字节为电压(mv),8、9字节为电流(mA)
|
||
11、PPS自动,组号设为0,设定电压、电流,电流0最大, 命令:0A 00 01 FC 00 4E 20 00 00 2A //5字节为组号,6,7字节为电压(mv),8、9字节为电流(mA)
|
||
12、PD3.1, 命令:0A 00 01 E1 00 2328 07d0 2A (组号设置和电压设置都支持) //5字节为组号,6,7字节为电压(mv),8、9字节为电流(mA)
|
||
13、UFCS,命令:0A 00 01 E0 00 2328 07d0 2A (组号设置和电压设置都支持) //5字节为组号,6,7字节为电压(mv),8、9字节为电流(mA)
|
||
14、VOOC,电压10/11V, 命令:0A 00 01 E2 00 0000 0000 2A //
|
||
15、AVS,命令:0A 00 01 E3 00 4e20 07d0 2A (组号设置和电压设置都支持) //5字节为组号,6,7字节为电压(mv),8、9字节为电流(mA)
|
||
|
||
回复:
|
||
回复最基本的5个字节:
|
||
长度+NC+ID+指令+CRC8
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CRC8校验算法如下:
|
||
|
||
u8 get_crc(u8 *dat,u8 k)
|
||
{
|
||
u8 i,res;
|
||
res=0x55;
|
||
for(i=0;i<k;i++){ res=crc8(res,dat[i]);}
|
||
return res;
|
||
}
|
||
|
||
u8 crc8(u8 res,u8 dat)
|
||
{
|
||
u8 i,t;
|
||
for(i=0;i<8;i++)
|
||
{
|
||
t=dat^res;
|
||
if((t&0x01)==0x01){res=res^0x18;res>>=1;res|=0x80;}//
|
||
else{res>>=1;}
|
||
dat>>=1;
|
||
}
|
||
return res;
|
||
} |