using usart2

This commit is contained in:
wmano
2025-08-18 21:47:05 +08:00
parent 52a3ed5862
commit 830ba4d3eb
18 changed files with 685 additions and 329 deletions
Binary file not shown.
BIN
View File
Binary file not shown.
@@ -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;
}
@@ -0,0 +1,84 @@
冠达快充板(SOURCE)通讯协议
2025.8.2
SOURCE的ID为2,波特率200K
1.读取数据
发送:
0B 00 02 20 volh voll curh curl nc nc CRC8
//长度+nc+id+指令+2字节当前电源电压(mV)+2字节当前电源电流(mA)+2个预留字节+CRC8校验
回复:
15 00 02 20 VH VL setvh setvl setch setcl NC NC verh verl NC NC NC NC NC NC CRC8
//长度+nc+ID+指令+2字节读取的电压(0.01V)+2字节source设置电压(mV)+2字节source设置电流(mA)+2字节预留+2字节版本号+6字节预留+CRC8校验
2.读取source的PD协议数据(当前为PDO,PPS,PD3.1,AVS协议时有效)
发送:05 00 02 13 2A
回复:
XX 00 02 13 //长度(根据实际计算)+NC+ID+指令
00 00 VMAXH VMAXL VMINH VMINL 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字节,mA) + 最大电流/功率(2字节,mA/W) + 预留(6字节,当协议类型为02时有效,意义与前6字节一致)
00 00 VMAXH VMAXL VMINH VMINL CURH/PORH CURL/PORL NC NC NC NC NC NC
......
CRC8
3.设置CC线电平
发送:
06 00 02 16 00 2A //长度+nc+id+指令+电平等级(0xff为根据当前电流自动设置,否则为手动设定,设置方法待定)+CRC8校验
回复:
05 00 02 16 2A //长度+nc+id+指令+CRC8校验
4.设置支持的快充协议
发送:
XX 00 02 D0 //长度(根据实际计算)+NC+ID+指令
00 00 00 VMAXH VMAXL VMINH VMINL CURH/PORH CURL/PORL NC NC NC NC NC NC
//协议(1字节) + 源类型(1字节,PD协议有效,00为PDO,03为APDO) + PPS类型(1字节,PD协议有效,源类型为3时有效,00为SPR PPS,01为EPR AVS,02为SPR AVS) + 最大电压(2字节,mV) + 最小电压(2字节,mA) + 最大电流/功率(2字节,mA/W) + 预留(6字节,当协议类型为02时有效,意义与前6字节一致)
00 00 00 VMAXH VMAXL VMINH VMINL CURH/PORH CURL/PORL NC NC NC NC NC NC
......
CRC8
回复:
05 00 02 D0 CRC8
协议字节含义如下:
00 无快充
01 VIFC(暂不支持)
02 FCP
03 SCP
04 预留
05 预留
06 RFC(暂不支持)
07 QC3.0
08 QC2.0
09 AFC
0A PDO/PPS
0B 预留
0C UFCS
0D PD3.1/AVS
0E VOOC(暂不支持)
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;
}