1. 新增sqlite文件、协议文档、调试截图、配置ini等各类辅助文件 2. 更新Keil开发包版本与工程配置,调整编译优化等级 3. 重构继电器控制逻辑、串口收发逻辑与线程优先级 4. 新增Modbus寄存器映射、校准结构体与Ymodem升级相关代码 5. 完善南北向协议解析、快充挡位配置与调试日志 6. 修复注释格式、数组越界与线程邮箱溢出问题 7. 新增屏幕控制、功率板调试与协议格式说明文档
91 lines
3.3 KiB
Plaintext
91 lines
3.3 KiB
Plaintext
冠达快充板(SOURCE)通讯协议
|
||
|
||
2025.11.07
|
||
|
||
SOURCE的ID为2,波特率230400,TTL
|
||
|
||
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 IH IL setvh setvl setch setcl verh verl ERR NC NC NC NC NC CRC8
|
||
//长度+nc+ID+指令+2字节读取的电压(mV)+2字节读取的电流(mA)+2字节source设置电压(mV)+2字节source设置电流(mA)+2字节版本号+1字节错误码+5字节预留+CRC8校验
|
||
|
||
|
||
2.读取source的PD协议数据(当前为PD协议时有效,不需要一直读,暂未实现)
|
||
发送:05 00 02 13 2A
|
||
回复:
|
||
XX 00 02 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字节,mA) + 最大电流/功率(2字节,mA/W,EPR_AVS时为功率) + 预留(6字节,当协议类型为02时有效,意义与前6字节一致)
|
||
00 00 VMINH VMINL VMAXH VMAXL 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.设置支持的快充协议
|
||
(PD, FCP, AFC, SCPA中固定电压档位的最大电压和最小电压设为一样)
|
||
(QC2.0,QC3.0,SCPB仅支持1档设定,其余协议支持多档设定,pd最多11档,ufcs最多3档,其余最多4档)
|
||
发送:
|
||
XX 00 02 D0 //长度(根据实际计算)+NC+ID+指令
|
||
00 //协议(1字节)
|
||
00 00 VMINH VMINL VMAXH VMAXL CURH CURL NC NC NC NC NC NC
|
||
//源类型(1字节,PD协议有效,00为PDO,03为APDO)
|
||
+PD类型(1字节,PD协议有效,源类型为0和3时有效,当源类型为0时,0为FPDO,1为EPRPDO,当源类型为3时,00为SPR PPS,01为EPR AVS) + 最小电压(2字节,mV) + 最大电压(2字节,mV) + 最大电流(2字节,mA) + 预留(6字节)
|
||
00 00 VMINH VMINL VMAXH VMAXL CURH CURL NC NC NC NC NC NC
|
||
......
|
||
CRC8
|
||
回复:
|
||
05 00 02 D0 CRC8
|
||
|
||
协议字节含义如下:
|
||
00 无快充
|
||
01 VIFC(暂不支持)
|
||
|
||
02 FCP 22 01 02 D0 02 00 00 13 88 13 88 0B B8 00 00 00 00 00 00 00 00 23 28 23 28 0B B8 00 00 00 00 00 2A
|
||
|
||
03 SCPB
|
||
04 预留
|
||
05 预留
|
||
06 RFC(暂不支持)
|
||
07 QC3.0 14 01 02 D0 07 00 00 13 88 13 88 0B B8 00 00 00 00 00 00 2A
|
||
08 QC2.0 14 01 02 D0 08 00 00 13 88 13 88 0B B8 00 00 00 00 00 00 2A 没有
|
||
09 AFC
|
||
0A PD
|
||
0B 预留
|
||
0C UFCS
|
||
0D 预留
|
||
0E VOOC(暂不支持)
|
||
0F SCPA
|
||
|
||
|
||
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;
|
||
} |