移植与电子模块通信相关代码

This commit is contained in:
andy
2023-10-06 18:47:05 +08:00
parent bf440a35bc
commit 8e3a140bec
77 changed files with 13331 additions and 1168 deletions

View File

@@ -0,0 +1,216 @@
#include "Basechecker.h"
#include "base/utility.h"
#include "hardware/power.h"
#include "base/delay.h"
#include "hardware/gpio_cfg.h"
Checker_RunCfg_st checker_runcfg;
uint8_t Checker_FacBuf[CHECKER_FAC_BUF_LEN];
volatile uint8_t ThreeBindResult_flag = 1;
uint16_t Checker_First_Set_Voltage = 88;
/*
@brief 标记执行结果
@param rtv 执行返回值 1表示失败 0 表示成功
@param taskindex 任务项目ID号
*/
void Checker_MaskResult(uint8_t rtv,uint8_t taskindex)
{
uint8_t uc_index = taskindex >> 3;
uint8_t uc_bitindex = taskindex & 0x07;
if(taskindex >= CHECKER_MAXRT_COUNT)
{
return;
}
checker_runcfg.excue_rtv = rtv;
uc_bitindex = (0x01<<uc_bitindex) & 0xFF;
if(rtv == 0)
{
checker_runcfg.Task_Result[uc_index] &= (~uc_bitindex);
}else{
checker_runcfg.Task_Result[uc_index] |= uc_bitindex;
}
CurrentSampleR_Def;
}
/*
@brief 标记任务序列执行
@param taskindex 任务序列号
*/
void Checker_Excueindex(uint8_t taskindex)
{
uint8_t uc_index = taskindex >> 3;
uint8_t uc_bitindex = taskindex & 0x07;
if(taskindex >= CHECKER_MAXRT_COUNT)
{
return;
}
uc_bitindex = (0x01<<uc_bitindex) & 0xFF;
checker_runcfg.Task_Excute[uc_index] |= uc_bitindex;
}
/*
@brief 保存测试结果值
@param *pus_rtv 测量结果缓存
@param count 缓存个数
*/
void Checker_SetRtv(uint16_t* pus_rtv, uint8_t count)
{
while(count > 0)
{
checker_runcfg.Test_Rtv[checker_runcfg.rtv_index++] = *pus_rtv;
pus_rtv++;
count--;
}
}
/*
brief 准备测试用电压
@param 设置电压值最多支持10个参数
*/
void Checker_PowerPrapare(void)
{
uint8_t uc_index = 0;
uint8_t uc_rtv = 0;
uint16_t us_h_v,us_m_v;
if(checker_runcfg.power_prapare_exe > 0 || checker_runcfg.param_count == 0){
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return ;
}
Checker_First_Set_Voltage = checker_runcfg.params[0];
Bubble_Sort_u16(checker_runcfg.params,checker_runcfg.param_count);
POWER_OFF;
while(uc_index < checker_runcfg.param_count)
{
us_h_v = checker_runcfg.params[uc_index];
uc_index++;
if(us_h_v < 55)
{
uc_rtv = 1;
continue;
}
us_m_v = (us_h_v>>1) > 50 ? (us_h_v>>1):50;
uc_rtv |= PowerCalibration_set(us_h_v,us_m_v);
}
PowerCalibration_set(POWER_DEF_V,POWER_DEF_V-10);
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
}
/*
@brief 延时
@pram1 延时时间 0.1S
@param 使能总线电流监控
@rtv1 波动AD值
*/
void Checker_WaitDelay(void)
{
uint32_t ul_delaytime = checker_runcfg.params[0];
uint8_t us_monito_flag = checker_runcfg.params[1];
uint16_t us_temp;
if(us_monito_flag == 0)
{
while(ul_delaytime > 0)
{
delay_os_ms(100);
ul_delaytime--;
}
}else{
Power_SetSampleRange_Seep(Checker_MonitorBuf_Sample_R,ADC_SPEED_MIDLE);
delay_ms(1);
us_temp = AD_CurMonitor(ul_delaytime*1000);
CurrentSampleR_Def;
}
Power_SetSampleCurrentRange(Current_Max);
Checker_MaskResult(0,checker_runcfg.task_info.runindex);
Checker_SetRtv(&us_temp,checker_runcfg.rtv_count);
}
/*
@brief 电阻检测
@param0 电阻检测模式 0 4线制 1 2线 1-42 2线 2-3 通
@rtv0 电阻检测值
*/
void Checker_ResistorSample(void)
{
/*
1 通道1-4通过桥丝
2 通道2-3通过桥丝
3 通道1-3通测阻抗
4 通道2-4通测阻抗
*/
uint16_t aus_sample[5];
uint16_t us_resistor;
uint8_t uc_index = 0;
AD_SampleResistor(aus_sample);
for(uc_index = 0; uc_index < 5; uc_index++)
{
aus_sample[uc_index] -= board_st.resistor_diff;
}
switch(checker_runcfg.params[0])
{
case 0: us_resistor = aus_sample[0];break;
case 1: us_resistor = aus_sample[1];break;
case 2: us_resistor = aus_sample[2];break;
case 3: us_resistor = aus_sample[3];break;
case 4: us_resistor = aus_sample[4];break;
default : us_resistor = 0;break;
}
Checker_MaskResult(0,checker_runcfg.task_info.runindex);
Checker_SetRtv(&us_resistor,checker_runcfg.rtv_count);
}
/*
@brief 判断是否需要注码
@rtv 0 不需要注码 1 注码
*/
uint8_t JQXT_Test_IsNeedBind(void)
{
uint8_t uc_index = 0;
if(checker_runcfg.uid_len == 0 || checker_runcfg.pwd_len == 0)
{
return 0;
}
for(uc_index = 0; uc_index < checker_runcfg.uid_len ; uc_index++)
{
if(checker_runcfg.writeuid[uc_index] != 0)
{
break;
}
}
if(uc_index != checker_runcfg.uid_len)
{
return 1;
}
for(uc_index = 0; uc_index < checker_runcfg.pwd_len ; uc_index++)
{
if(checker_runcfg.writepwd[uc_index] != 0)
{
break;
}
}
if(uc_index != checker_runcfg.pwd_len)
{
return 1;
}
return 0;
}
/*
检测执行函数是否正常
*/
uint8_t Checker_FunIsValid(CheckerTask* taskArray,uint16_t run_index)
{
uint16_t index = 0;
while((*taskArray !=0) && (index < CHECKER_MAXID_COUNT))
{
index++;
}
if(run_index >= index)
{
return 1;
}
return 0;
}