94 lines
3.2 KiB
C
94 lines
3.2 KiB
C
#ifndef __CHRG_SOURCE_H__
|
|
#define __CHRG_SOURCE_H__
|
|
|
|
#include <rtthread.h>
|
|
|
|
#include "chrg_def.h"
|
|
|
|
// 冠达快充板(SOURCE)通讯协议
|
|
// SOURCE的ID为2, 波特率200K
|
|
|
|
|
|
#define SRC_CMD_GET_VOLTAGE 0x20 // 读取数据
|
|
// 发送 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校验
|
|
|
|
#define SRC_CMD_GET_PROTOCOL 0x13 // 读取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
|
|
|
|
#define SRC_CMD_SET_CC_LEVEL 0x16
|
|
// 发送 06 00 02 16 00 2A
|
|
// 长度+nc+id+指令+电平等级(0xff为根据当前电流自动设置,否则为手动设定,设置方法待定)+CRC8校验
|
|
// 接收 05 00 02 16 2A
|
|
// 长度+nc+id+指令+CRC8校验
|
|
|
|
#define SRC_CMD_SET_PROTOCOL 0xD0
|
|
// 发送 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
|
|
|
|
|
|
|
|
typedef enum {
|
|
PRO_NONE = 0x00, // 无快充
|
|
PRO_VIFC = 0x01, // VIFC(暂不支持)
|
|
PRO_FCP = 0x02, // FCP
|
|
PRO_SCP = 0x03, // SCP
|
|
PRO_SERV1 = 0x04, // 预留
|
|
PRO_SERV2 = 0x05, // 预留
|
|
PRO_RFC = 0x06, // RFC(暂不支持)
|
|
PRO_QC30 = 0x07, // QC3.0
|
|
PRO_QC20 = 0x08, // QC2.0
|
|
PRO_AFC = 0x09, // AFC
|
|
PRO_PD0PSS = 0x0A, // PD0/PPS
|
|
PRO_SERV3 = 0x0B, // 预留
|
|
PRO_UFCS = 0x0C, // UFCS
|
|
PRO_PD31AVS = 0x0D, // PD3.1/AVS
|
|
PRO_VOOC = 0x0E, // VOOC(暂不支持)
|
|
|
|
TOTAL_PROS
|
|
} eSRC_PRO;
|
|
|
|
struct src_vc_t {
|
|
rt_uint16_t voltage; // 读取 0.01V
|
|
rt_uint16_t set_voltage; // 设置电压 mV
|
|
rt_uint16_t set_current; // 设置电流 mA
|
|
rt_uint16_t version; // 版本号
|
|
};
|
|
|
|
|
|
// source 参数结构
|
|
struct chrg_src_t {
|
|
rt_uint16_t voltage; // 当前电压 mV
|
|
rt_uint16_t current; // 当前电流 mA
|
|
|
|
rt_uint8_t vol_lvl; // CC线电平
|
|
eSRC_PRO protocol; // 协议类型
|
|
|
|
struct src_vc_t vc; // 读取数据
|
|
struct vc_pd_t pd_get[2]; // 读取PD协议数据
|
|
struct vc_pd_t pd_set[2]; // 设置PD协议数据
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|