fix(chrg_roll_nor): 修复源设置初始化提交逻辑
0.新增了电源协议设置 1. 修改apps/chrg/applications/thread/chrg_roll_nor.c:在IDX_SET_SOURCE_PD分支中增加初始化提交判断,仅当sub为IDX_GET_SOURCE_VC且提交成功时才置位On_Flag 2. 新增apps/chrg/applications/utils/chrg_source.h:声明chrg_source_init_submit函数并添加注释 3. 新增apps/chrg/applications/utils/chrg_source.c:实现chrg_source_init_submit函数,批量提交源板初始化参数
This commit is contained in:
@@ -160,48 +160,6 @@ void chrg_source_setting(rt_uint8_t *frame_data, eIDX_SOU_CH idx,
|
|||||||
pSW->sub = IDX_SET_SOURCE_STOP_STATE;
|
pSW->sub = IDX_SET_SOURCE_STOP_STATE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
////解析负载返回数据
|
|
||||||
//void chrg_sink_parse(rt_uint8_t *frame_data, eIDX_SOU_CH idx,
|
|
||||||
// struct chrg_switch_t *pSW, struct chrg_north_t *pNOR)
|
|
||||||
//{
|
|
||||||
// rt_uint16_t volt_mv = ((frame_data[4] << 8) | frame_data[5])*10;
|
|
||||||
// static uint8_t volt_low[TOTAL_SOU_CHS] = {0};
|
|
||||||
// static uint8_t no_curr[TOTAL_SOU_CHS] = {0};
|
|
||||||
// pSW->VZ = ((frame_data[14] << 8) | frame_data[15]);
|
|
||||||
// pSW->VF = ((frame_data[16] << 8) | frame_data[17]);
|
|
||||||
|
|
||||||
//#if DEBUG_NORTH
|
|
||||||
// LOG_D("Sink[%d] real volt: %d mV", idx, volt_mv);
|
|
||||||
//#endif
|
|
||||||
//
|
|
||||||
// if(pSW->sink.On_work == 1) {
|
|
||||||
// if(pSW->sink.test.test_mode == 0){
|
|
||||||
// if (volt_mv <= WORK_MIN_VOLT) { // 电压过低,禁止进入工作状态机
|
|
||||||
// volt_low[idx]++;
|
|
||||||
// //if(volt_low[idx]>=5) pSW->sink.work_mode = SINK_WORK_LOW; // 复位工作状态机
|
|
||||||
// }
|
|
||||||
// else{ // 电压稳定时执行工作状态机(继电器/工作模式切换)
|
|
||||||
// volt_low[idx] = 0;
|
|
||||||
// pSW->change_flag = 0;
|
|
||||||
// if((pSW->sink.pro_loadv - volt_mv) <= 2000){
|
|
||||||
// pSW->sink.work_mode = SINK_WORK_RUNING;
|
|
||||||
// if(pSW->Now_current<=200){
|
|
||||||
// if(no_curr[idx]++>=5){
|
|
||||||
// pSW->sink.work_mode = SINK_WORK_WAIT;
|
|
||||||
// no_curr[idx] = 0;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else no_curr[idx] = 0;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else{
|
|
||||||
// volt_low[idx] = 0;
|
|
||||||
//// pSW->sink.work_mode = SINK_WORK_STOP;
|
|
||||||
// }
|
|
||||||
// chrg_sink_work(idx,pSW);
|
|
||||||
//}
|
|
||||||
|
|
||||||
//解析负载返回数据
|
//解析负载返回数据
|
||||||
void chrg_sink_parse(rt_uint8_t *frame_data, eIDX_SOU_CH idx,
|
void chrg_sink_parse(rt_uint8_t *frame_data, eIDX_SOU_CH idx,
|
||||||
|
|||||||
@@ -355,7 +355,10 @@ void chrg_roll_nor_set(rt_uint8_t ch, struct chrg_switch_t *pSW,rt_uint8_t *enab
|
|||||||
break;
|
break;
|
||||||
case IDX_SET_SOURCE_PD:
|
case IDX_SET_SOURCE_PD:
|
||||||
chrg_roll_nor_source_pro_set(pSW);
|
chrg_roll_nor_source_pro_set(pSW);
|
||||||
pSW->source.On_Flag = 1;
|
if (pSW->sub == IDX_GET_SOURCE_VC &&
|
||||||
|
chrg_source_init_submit((eIDX_SOU_CH)ch, pSW) == 0) {
|
||||||
|
pSW->source.On_Flag = 1;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case IDX_GET_SOURCE_VC:
|
case IDX_GET_SOURCE_VC:
|
||||||
source_get_vc(pSW->source.vc.set_voltage, pSW->source.vc.set_current);
|
source_get_vc(pSW->source.vc.set_voltage, pSW->source.vc.set_current);
|
||||||
|
|||||||
@@ -13,6 +13,31 @@
|
|||||||
#include "chrg_utils.h"
|
#include "chrg_utils.h"
|
||||||
#include "chrg_roll_nor.h"
|
#include "chrg_roll_nor.h"
|
||||||
#include "chrg_source.h"
|
#include "chrg_source.h"
|
||||||
|
#include "chrg_eload.h"
|
||||||
|
#include "chrg_roll_sou.h"
|
||||||
|
|
||||||
|
int chrg_source_init_submit(rt_uint8_t idx, struct chrg_switch_t *pSW)
|
||||||
|
{
|
||||||
|
rt_uint16_t regs[5] = {
|
||||||
|
REG_ELOAD,
|
||||||
|
REG_MODE,
|
||||||
|
REG_VOLTAGE_OUT + 1,
|
||||||
|
REG_CURRENT_OUT + 1,
|
||||||
|
REG_WORK
|
||||||
|
};
|
||||||
|
rt_uint16_t vals[5] = {
|
||||||
|
ELOAD_SOURCE,
|
||||||
|
pSW->CV_mode,
|
||||||
|
pSW->source.max_vol,
|
||||||
|
pSW->source.protective_curr,
|
||||||
|
WORK_STOP
|
||||||
|
};
|
||||||
|
|
||||||
|
if ((idx >= TOTAL_SOU_CHS) || (pSW == RT_NULL)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return chrg_sou_com_batch_submit(idx, regs, vals, 5);
|
||||||
|
}
|
||||||
rt_uint8_t Pro_Group_VCMM[11][8] = {
|
rt_uint8_t Pro_Group_VCMM[11][8] = {
|
||||||
{0} // 11个挡位,8个参数(src, pps, vmin_H,vmin_L, vmax_H,vmax_L,cur_set_H,cur_set_L)
|
{0} // 11个挡位,8个参数(src, pps, vmin_H,vmin_L, vmax_H,vmax_L,cur_set_H,cur_set_L)
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -249,6 +249,9 @@ extern void parse_power_pdo_gear(rt_uint8_t protoCmd, rt_uint8_t *pData, rt_uint
|
|||||||
extern void parse_multi_gear_more(rt_uint8_t protoCmd, rt_uint8_t *pData, rt_uint16_t reqLen,uint8_t *pro_gear_idx,uint8_t *pro,rt_uint16_t *protect_ma);
|
extern void parse_multi_gear_more(rt_uint8_t protoCmd, rt_uint8_t *pData, rt_uint16_t reqLen,uint8_t *pro_gear_idx,uint8_t *pro,rt_uint16_t *protect_ma);
|
||||||
extern void parse_power_ufcs(rt_uint8_t *pData, rt_uint16_t reqLen, uint8_t *pro_gear_idx, uint8_t *pro,rt_uint16_t *protect_ma);
|
extern void parse_power_ufcs(rt_uint8_t *pData, rt_uint16_t reqLen, uint8_t *pro_gear_idx, uint8_t *pro,rt_uint16_t *protect_ma);
|
||||||
extern int source_set_pd_new_com(rt_uint8_t pro, struct chrg_switch_t *pSW);
|
extern int source_set_pd_new_com(rt_uint8_t pro, struct chrg_switch_t *pSW);
|
||||||
|
|
||||||
|
/* 提交 Source 功率板初始化参数;北向协议设置完成后调用。 */
|
||||||
|
extern int chrg_source_init_submit(rt_uint8_t idx, struct chrg_switch_t *pSW);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user