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
@@ -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;
}