add parse threads

This commit is contained in:
wmano
2025-10-25 23:44:23 +08:00
parent d52c94b866
commit 604fe4688c
38 changed files with 1597 additions and 956 deletions
@@ -0,0 +1,94 @@
冠达快充板(SINK)通讯协议
2025.8.13
SINK的ID为1,波特率200KTTL
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 //56字节为电压(mv)7、8字节为电流(mA)
6、VIVO 命令:0A 00 01 FD 27 10 00 00 00 2A //56字节为电压(mv)7、8字节为电流(mA)
7、传音/TFC,命令:0A 00 01 F7 2E E0 00 00 00/01 2A //56字节为电压(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;
}