移植Test命令,验证成功
EJ EX 写工厂信息验证成功
This commit is contained in:
379
source/elec_det/test/EWCheckerTest.c
Normal file
379
source/elec_det/test/EWCheckerTest.c
Normal file
@@ -0,0 +1,379 @@
|
||||
#include "base/define.h"
|
||||
#include "stdlib.h"
|
||||
#include "hardware/gpio_cfg.h"
|
||||
#include "base/delay.h"
|
||||
#include "hardware/adc_cfg.h"
|
||||
#include "hardware/power.h"
|
||||
#include "base/utility.h"
|
||||
//#include "usartapp.h"
|
||||
//#include "database.h"
|
||||
#include "interface/BaseChecker.h"
|
||||
#include "hardware/jw3425iic.h"
|
||||
#include "driver/EWDriver.h"
|
||||
#include "elec_io.h"
|
||||
static void MCCheckerTest(int argc, char**argv)
|
||||
{
|
||||
uint16_t us_array[20];
|
||||
uint8_t* puc_buf;
|
||||
uint16_t us_temp;
|
||||
rt_memset(&checker_runcfg.params,0,sizeof(checker_runcfg.params));
|
||||
rt_memset(&checker_runcfg.Task_Result,0,sizeof(checker_runcfg.Task_Result));
|
||||
checker_runcfg.excue_rtv = 0;
|
||||
checker_runcfg.param_count = 0;
|
||||
checker_runcfg.rtv_count = 0;
|
||||
checker_runcfg.rtv_index = 0;
|
||||
checker_runcfg.task_info.runindex = 0;
|
||||
if(argc > 2)
|
||||
{
|
||||
checker_runcfg.param_count = argc-2;
|
||||
us_temp = 0;
|
||||
while(us_temp < checker_runcfg.param_count)
|
||||
{
|
||||
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
|
||||
us_temp++;
|
||||
}
|
||||
}
|
||||
if (argc < 2)
|
||||
{
|
||||
goto MC_help_label_;
|
||||
}else if(!rt_strcmp(argv[1], "SDAOut")){
|
||||
SDA_OUT();
|
||||
if(checker_runcfg.params[0] == 0)
|
||||
{
|
||||
IIC_SDA(0);
|
||||
}else{
|
||||
IIC_SDA(1);
|
||||
}
|
||||
}else if(!rt_strcmp(argv[1], "SDAIn")){
|
||||
SDA_IN();
|
||||
rt_kprintf("SDAIn %1\n",READ_SDA);
|
||||
}else if(!rt_strcmp(argv[1], "SCLOut")){
|
||||
if(checker_runcfg.params[0] == 0)
|
||||
{
|
||||
IIC_SCL(0);
|
||||
}else{
|
||||
IIC_SCL(1);
|
||||
}
|
||||
}else if(!rt_strcmp(argv[1], "CodeCrc")){
|
||||
printf("CodeCrc %X\n",boardinfo_un.boardinfo.mc_ICodeCrc32);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "VrefTrim")){
|
||||
MC_VrefTrim();
|
||||
printf("VrefTrim Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "IrefTrim")){
|
||||
MC_IrefTrim();
|
||||
printf("IrefTrim Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "RC4MTrim")){
|
||||
MC_RC4MTrim();
|
||||
printf("RC4MTrim Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "RC128KTrim")){
|
||||
MC_RC128KTrim();
|
||||
printf("RC128KTrim Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "SetMTPVol")){
|
||||
MC_SetMTPVol();
|
||||
printf("SetMTPVol Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "EraseMTP")){
|
||||
MC_EraseMTP();
|
||||
printf("EraseMTP Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "IICWriteMTP")){
|
||||
MC_IICWriteMTP();
|
||||
printf("IICWriteMTP Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "IICEnMTP")){
|
||||
MC_IICEnMTP();
|
||||
printf("IICEnMTP Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "IICReadMTP")){
|
||||
checker_runcfg.rtv_count = (checker_runcfg.params[1]+1)/2;
|
||||
MC_IICReadMTP();
|
||||
printf("IICMTPState Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
us_temp = 0;
|
||||
while(us_temp < checker_runcfg.rtv_count)
|
||||
{
|
||||
if((us_temp+1) % 4 == 0)
|
||||
{
|
||||
printf("\n");
|
||||
}
|
||||
printf("%02X %02X ",(checker_runcfg.Test_Rtv[us_temp] & 0xFF) ,((checker_runcfg.Test_Rtv[us_temp] >> 8) & 0xFF));
|
||||
us_temp++;
|
||||
|
||||
}
|
||||
printf("\n");
|
||||
}else if(!rt_strcmp(argv[1], "IICMTPState")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
MC_IICCheckMTPState();
|
||||
printf("IICMTPState Excute %d state %x \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] & 0x0FF);
|
||||
}else if(!rt_strcmp(argv[1], "IICUpdateMTP")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
POWER_ON
|
||||
delay_ms(50);
|
||||
MC_IICUpdateMTP();
|
||||
POWER_OFF;
|
||||
printf("IICMTPState Excute %d Error Code %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] & 0x0FF);
|
||||
}
|
||||
|
||||
else{
|
||||
MC_help_label_:
|
||||
rt_kprintf("SDAOut [0/1] gpio out\n");
|
||||
rt_kprintf("SDAIn read gpio pin\n");
|
||||
rt_kprintf("SCLOut [0/1] gpio out\n");
|
||||
rt_kprintf("VrefTrim [En_update] [trim_value]\n");
|
||||
rt_kprintf("IrefTrim [Iref1En_update] [Iref2En_update] [Iref1_value] [Iref2_value]\n");
|
||||
rt_kprintf("RC4MTrim [En_update] [trim_value] \n");
|
||||
rt_kprintf("RC128KTrim [En_update] [trim_value] \n");
|
||||
rt_kprintf("SetMTPVol [L_V_Class] [H_V_Class] \n");
|
||||
rt_kprintf("EraseMTP [Addr] [Erase_Type] \n");
|
||||
rt_kprintf("IICWriteMTP [N datas len < 11] \n");
|
||||
rt_kprintf("IICReadMTP [read len] \n");
|
||||
rt_kprintf("IICMTPState read MTP status \n");
|
||||
}
|
||||
}
|
||||
|
||||
MSH_CMD_EXPORT_ALIAS(MCCheckerTest ,MCI, EW IIC CMD );
|
||||
|
||||
static void EWDriverTest(int argc, char**argv)
|
||||
{
|
||||
uint16_t us_array[20];
|
||||
uint8_t* puc_buf;
|
||||
uint16_t us_temp;
|
||||
uint32_t ul_temp,ul_temp2;
|
||||
RunCfg_un runcfg;
|
||||
rt_memset(&checker_runcfg.params,0,sizeof(checker_runcfg.params));
|
||||
rt_memset(&checker_runcfg.Task_Result,0,sizeof(checker_runcfg.Task_Result));
|
||||
checker_runcfg.excue_rtv = 0;
|
||||
checker_runcfg.param_count = 0;
|
||||
checker_runcfg.rtv_count = 0;
|
||||
checker_runcfg.rtv_index = 0;
|
||||
checker_runcfg.task_info.runindex = 0;
|
||||
if(argc > 2)
|
||||
{
|
||||
checker_runcfg.param_count = argc-2;
|
||||
us_temp = 0;
|
||||
while(us_temp < checker_runcfg.param_count)
|
||||
{
|
||||
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
|
||||
us_temp++;
|
||||
}
|
||||
}
|
||||
if (argc < 2)
|
||||
{
|
||||
goto EW_help_label_;
|
||||
}else if(!rt_strcmp(argv[1], "BUS_H")){
|
||||
EW_DIFF_MOD_H
|
||||
}else if(!rt_strcmp(argv[1], "BUS_L")){
|
||||
|
||||
EW_DIFF_MOD_L
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "BUS_M")){
|
||||
EW_DIFF_MOD_M
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "BUS_OFF")){
|
||||
HMOS_SWITCH_OFF
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "BUS_ON")){
|
||||
HMOS_SWITCH_ON
|
||||
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "BUS_CUR")){
|
||||
printf("BUS_CUR %d \r\n",Power_GetCurrent());
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "SetV")){
|
||||
us_temp = PowerCalibration_set(checker_runcfg.params[0],checker_runcfg.params[1]);
|
||||
printf("SetV Excute %d\n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "DModSend")){
|
||||
HexStrings2Byte(argv+4,argc-4,(uint8_t*)us_array,20);
|
||||
DMod_SendBytes((uint8_t*)us_array,checker_runcfg.params[0],checker_runcfg.params[1],1);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "CommTest")){
|
||||
memcpy(us_array,"1234567890ABC",4);
|
||||
if(checker_runcfg.params[0] < 200)
|
||||
{
|
||||
checker_runcfg.params[0] = 200;
|
||||
}
|
||||
puc_buf = (uint8_t*)us_array;
|
||||
us_temp = EW_CommTest(puc_buf,4,checker_runcfg.params[0]);
|
||||
puc_buf[5+1] = '\0';
|
||||
printf("CommTest Excute %d %s\n",us_temp,puc_buf+2);
|
||||
}else if(!rt_strcmp(argv[1], "EnWriteMTP")){
|
||||
us_temp = EW_EnWriteMTP(checker_runcfg.params[0],checker_runcfg.params[1]);
|
||||
printf("EnWriteMTP Excute %d\n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "WriteMTP")){
|
||||
HexStrings2Byte(argv+5,argc-5,(uint8_t*)us_array,sizeof(us_array));
|
||||
us_temp = EW_WriteMTP(checker_runcfg.params[0],checker_runcfg.params[1],(uint8_t*)us_array,checker_runcfg.params[3]);
|
||||
printf("WriteMTP Excute %d\n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "ReadMTP")){
|
||||
puc_buf = (uint8_t*)us_array;
|
||||
us_temp = EW_ReadMTP(checker_runcfg.params[0],checker_runcfg.params[1],puc_buf,checker_runcfg.params[2]);
|
||||
printf("ReadMTP Excute %d \n",us_temp);
|
||||
for(us_temp = 0; us_temp < checker_runcfg.params[2]; us_temp++)
|
||||
{
|
||||
printf("%02X ",puc_buf[us_temp]);
|
||||
if((us_temp + 1) %8 == 0)
|
||||
{
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
if((us_temp + 1) %8 != 0)
|
||||
{
|
||||
printf("\n");
|
||||
}
|
||||
}else if(!rt_strcmp(argv[1], "Boot")){
|
||||
us_temp = EW_RunBootLoader(checker_runcfg.params[0],checker_runcfg.params[1]);
|
||||
printf("Boot Excute %d\n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "WriteRunCfg")){
|
||||
runcfg.runcfg_st.fire_mos_sw = checker_runcfg.params[1];
|
||||
runcfg.runcfg_st.vbus_rx_sg = 3;
|
||||
runcfg.runcfg_st.vbus_mode = 1;
|
||||
runcfg.runcfg_st.reset_run_step = checker_runcfg.params[2];
|
||||
runcfg.runcfg_st.uid_len = checker_runcfg.params[3];
|
||||
runcfg.runcfg_st.pwd_len = checker_runcfg.params[4];
|
||||
runcfg.runcfg_st.version = checker_runcfg.params[5];
|
||||
us_temp = EW_WriteRunCfg(checker_runcfg.params[0],&runcfg);
|
||||
printf("WriteRunCfg Excute %d\n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "SetAddr")){
|
||||
puc_buf = (uint8_t*)us_array;
|
||||
memcpy(argv[3],puc_buf,strlen(argv[3]));
|
||||
us_temp = EW_SetAddrByUID(checker_runcfg.params[0],puc_buf,strlen(argv[3])-1,(uint8_t*)checker_runcfg.Test_Rtv);
|
||||
printf("SetAddr Excute %d delay %d state %04X\n",us_temp,checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1]);
|
||||
}else if(!rt_strcmp(argv[1], "FastSet")){
|
||||
puc_buf = (uint8_t*)us_array;
|
||||
memcpy(argv[5],puc_buf,strlen(argv[5]));
|
||||
us_temp = EW_FastSetByUID(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2],puc_buf,strlen(argv[5])-1,(uint8_t*)checker_runcfg.Test_Rtv);
|
||||
printf("FastSet Excute %d delay %d state %04X\n",us_temp,checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1]);
|
||||
}else if(!rt_strcmp(argv[1], "SetDelay")){
|
||||
us_temp = EW_SetDelay(checker_runcfg.params[0],checker_runcfg.params[1]);
|
||||
printf("SetDelay Excute %d \n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "VerfyPWD")){
|
||||
puc_buf = (uint8_t*)us_array;
|
||||
memcpy(argv[3],puc_buf,strlen(argv[3]));
|
||||
us_temp = EW_VerfyPWD(checker_runcfg.params[0],puc_buf,strlen(argv[3])-1);
|
||||
printf("VerfyPWD Excute %d \n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "Boom")){
|
||||
us_temp = EW_Boom(checker_runcfg.params[0],checker_runcfg.params[1]);
|
||||
printf("Boom Excute %d \n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "Charge")){
|
||||
us_temp = EW_Charge(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2]);
|
||||
printf("Charge Excute %d \n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "DisCharge")){
|
||||
us_temp = EW_DisCharge(checker_runcfg.params[0]);
|
||||
printf("DisCharge Excute %d \n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "ReadState")){
|
||||
ul_temp = 0;
|
||||
us_temp = EW_ReadState(checker_runcfg.params[0],(uint8_t*)&ul_temp);
|
||||
printf("ReadState Excute %d state %08X\n",us_temp,ul_temp);
|
||||
}else if(!rt_strcmp(argv[1], "ClkAmend")){
|
||||
us_temp = EW_ClkAmend(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2]);
|
||||
printf("ClkAmend Excute %d\n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "Inspect")){
|
||||
puc_buf = (uint8_t*)us_array;
|
||||
us_temp = EW_Inspect(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2],puc_buf);
|
||||
printf("Inspect Excute %d\n",us_temp);
|
||||
us_temp = (checker_runcfg.params[1] - checker_runcfg.params[0] + 7)/8;
|
||||
for(ul_temp = 0; ul_temp< us_temp;ul_temp++)
|
||||
{
|
||||
printf("%02X ",puc_buf[us_temp]);
|
||||
if((us_temp + 1) %8 == 0)
|
||||
{
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
if((us_temp + 1) %8 != 0)
|
||||
{
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "ClkAmend")){
|
||||
us_temp = EW_ClkAmend(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2]);
|
||||
printf("ClkAmend Excute %d\n",us_temp);
|
||||
} else if(!rt_strcmp(argv[1], "CheckRunCfg")){
|
||||
ul_temp = HexStrings2UInt(argv[3]);
|
||||
ul_temp2 = HexStrings2UInt(argv[4]);
|
||||
us_temp = EW_CheckRunCfg(checker_runcfg.params[0],ul_temp,ul_temp2,(uint8_t*)us_array);
|
||||
printf("CheckRunCfg Excute %d Checke_Flag %d\n",us_temp,us_array[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ChecSelf")){
|
||||
us_array[0] = 0;
|
||||
us_temp = EW_ChecSelf(checker_runcfg.params[0],checker_runcfg.params[1],(uint8_t*)us_array);
|
||||
printf("ChecSelf Excute %d SelfCheck Result %d \n",us_temp,us_array[0]);
|
||||
} else if(!rt_strcmp(argv[1], "SaveFireInfo")){
|
||||
us_temp = EW_SaveFireInfo(checker_runcfg.params[0]);
|
||||
printf("SaveFireInfo Excute %d \n",us_temp);
|
||||
} else if(!rt_strcmp(argv[1], "ReadDelayState")){
|
||||
us_array[0] = 0;
|
||||
us_temp = EW_ReadDelay(checker_runcfg.params[0],us_array);
|
||||
printf("SaveFireInfo Excute %d delay %d \n",us_temp,us_array[0]);
|
||||
}else if(!rt_strcmp(argv[1], "SetReportCfg")){
|
||||
us_temp = EW_SetReportCfg(checker_runcfg.params[0],checker_runcfg.params[1]);
|
||||
printf("SetReportCfg Excute %d \n",us_temp);
|
||||
} else if(!rt_strcmp(argv[1], "UpdateCommAddr")){
|
||||
us_temp = EW_UpdateCommAddr(checker_runcfg.params[0],checker_runcfg.params[1]);
|
||||
printf("UpdateCommAddr Excute %d \n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "ReadClkAmend")){
|
||||
us_temp = EW_ReadClkAmend(checker_runcfg.params[0],&ul_temp);
|
||||
printf("ReadClkAmend Excute %d amendValue %d\n",us_temp,ul_temp);
|
||||
}else if(!rt_strcmp(argv[1], "ReadCfgVer")){
|
||||
ul_temp2 = 0;
|
||||
ul_temp = 0;
|
||||
us_temp = EW_ReadRunCfgVersion(checker_runcfg.params[0],(uint8_t*)&ul_temp,(uint16_t*)&ul_temp2);
|
||||
printf("ReadCfgVer Excute %d RunCfg %08X Version %04X\n",us_temp,ul_temp,ul_temp2);
|
||||
}else if(!rt_strcmp(argv[1], "AutoSetAddr")){
|
||||
us_temp = EW_AutoSetAddr(checker_runcfg.params[0],checker_runcfg.params[1]);
|
||||
printf("AutoSetAddr Excute %d \n",us_temp);
|
||||
}else if(!rt_strcmp(argv[1], "EW_ReadUID")){
|
||||
puc_buf = (uint8_t*)us_array;
|
||||
us_temp = EW_ReadUID(checker_runcfg.params[0],puc_buf,checker_runcfg.params[1]);
|
||||
printf("EW_ReadUID Excute %d ",us_temp);
|
||||
us_temp = checker_runcfg.params[1];
|
||||
for(ul_temp = 0; ul_temp< us_temp;ul_temp++)
|
||||
{
|
||||
printf("%02X ",puc_buf[ul_temp]);
|
||||
if((ul_temp + 1) %8 == 0)
|
||||
{
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
if((ul_temp + 1) %8 != 0)
|
||||
{
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
else{
|
||||
EW_help_label_:
|
||||
rt_kprintf("BUS_H Out High Voltage");
|
||||
rt_kprintf("BUS_M Out Midle Voltage\n");
|
||||
rt_kprintf("BUS_L Out High Voltage other side\n");
|
||||
rt_kprintf("BUS_OFF Close Bus\n");
|
||||
rt_kprintf("BUS_ON Open Bus\n");
|
||||
rt_kprintf("BUS_CUR Get Bus Current\n");
|
||||
rt_kprintf("SetV [Hight_V] [Midle_V]\n");
|
||||
rt_kprintf("CommTest [Cycle]VBusD Transport Test \n");
|
||||
rt_kprintf("EnWriteMTP [addr][en_flag] Enable or Disable MTP Written \n");
|
||||
rt_kprintf("WriteMTP [addr][mtp_addr][dataSize][HexData] Write data to MTP \n");
|
||||
rt_kprintf("ReadMTP [addr][mtp_addr][read_len] Read data from MTP \n");
|
||||
rt_kprintf("Boot Jump to BootLoader \n");
|
||||
rt_kprintf("WriteRunCfg [addr][mos_sw][reset_run_flg][uid_len][pwd_len][version] \n");
|
||||
rt_kprintf("SetDelay [addr][delay]\n");
|
||||
rt_kprintf("SetAddr [commaddr][UID] Update CommAddr by UID\n");
|
||||
rt_kprintf("FastSet [commaddr][delay][pwd_flag][UID] Fast Set Delay and CommAddr By UID\n");
|
||||
rt_kprintf("VerfyPWD [addr][pwd] Verfy PWD\n");
|
||||
rt_kprintf("Boom [addr][delay] \n");
|
||||
rt_kprintf("Charge [addr][voltage_class][group] voltage_class 0 bypass 1 16V 2 20V 3 3.5V addr > group*4 \n");
|
||||
rt_kprintf("DisCharge [addr]\n");
|
||||
rt_kprintf("ReadState [addr] read delay and state\n");
|
||||
rt_kprintf("Inspect [bgaddr] [endaddr] [state_mask]\n");
|
||||
rt_kprintf("ClkAmend [addr] [Cycle] [PlusCount]\n");
|
||||
rt_kprintf("CheckRunCfg [addr] [Cfg_mask_hex] [Cfg_state_hex]\n");
|
||||
rt_kprintf("ChecSelf [addr] [Checke_Mode] [Result]\n");
|
||||
rt_kprintf("SaveFireInfo [addr]\n");
|
||||
rt_kprintf("ReadDelayState [addr]\n");
|
||||
rt_kprintf("SetReportCfg [speed][cur]\n");
|
||||
rt_kprintf("UpdateCommAddr [addr][new_addr]\n");
|
||||
rt_kprintf("ReadClkAmend [addr]\n");
|
||||
rt_kprintf("ReadCfgVer [addr]\n");
|
||||
rt_kprintf("AutoSetAddr [addr][addr_fac]\n");
|
||||
rt_kprintf("EW_ReadUID [addr][uid_len]\n");
|
||||
|
||||
}
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(EWDriverTest ,EW, EWPro Driver );
|
||||
302
source/elec_det/test/EW_TestUsartApp.c
Normal file
302
source/elec_det/test/EW_TestUsartApp.c
Normal file
@@ -0,0 +1,302 @@
|
||||
#include "driver/ewdriver.h"
|
||||
#include "base/define.h"
|
||||
#include "base/delay.h"
|
||||
//#include "console_usart.h"
|
||||
#include "base/utility.h"
|
||||
//#include "usartapp.h"
|
||||
//#include "arrayfifo.h"
|
||||
//#include "YeCommProtocol.h"
|
||||
#include "hardware/power.h"
|
||||
#include "elec_io.h"
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct{
|
||||
uint8_t head[2];//<2F>̶<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
uint16_t frame_len;//<2F><>֡<EFBFBD><D6A1><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>CRC
|
||||
uint8_t src_addr;//Դ<><D4B4>ַ
|
||||
uint8_t dist_addr;//Ŀ<>ĵ<EFBFBD>ַ
|
||||
uint8_t cmd;//<2F><><EFBFBD><EFBFBD>
|
||||
uint16_t sq;//<2F><>ˮ<EFBFBD><CBAE>
|
||||
}EwCmd_st;
|
||||
|
||||
typedef struct{
|
||||
EwCmd_st head;
|
||||
uint8_t oper_cmd;
|
||||
uint16_t h_v;
|
||||
uint16_t m_v;
|
||||
}EwBusCmd_st;
|
||||
|
||||
typedef struct{
|
||||
EwCmd_st head;
|
||||
uint8_t oper_cmd;
|
||||
uint16_t h_v;
|
||||
uint16_t m_v;
|
||||
uint16_t bus_v;
|
||||
uint32_t cur;
|
||||
uint8_t crc;
|
||||
}EwHartBeatCmd_st;
|
||||
|
||||
typedef struct{
|
||||
EwCmd_st head;
|
||||
uint16_t r_len;
|
||||
uint16_t w_len;
|
||||
uint16_t reate;
|
||||
uint8_t cmd_delay;
|
||||
uint8_t buf[64];
|
||||
}EwBusRW_st;
|
||||
|
||||
typedef struct{
|
||||
EwCmd_st head;
|
||||
uint8_t ack;
|
||||
uint8_t buf[96];
|
||||
}EwBusRWAck_st;
|
||||
|
||||
typedef struct{
|
||||
EwCmd_st head;
|
||||
uint16_t w_len;
|
||||
uint16_t cycle;
|
||||
uint16_t count;
|
||||
uint16_t reate;
|
||||
uint8_t cmd_delay;
|
||||
uint8_t buf[64];
|
||||
}EwClkAmend_st;
|
||||
|
||||
typedef struct{
|
||||
EwCmd_st head;
|
||||
uint16_t reate;
|
||||
uint8_t w_len;
|
||||
uint8_t cmd_delay;
|
||||
uint16_t bitcount;
|
||||
uint8_t buf[64];
|
||||
}EwInspect_st;
|
||||
|
||||
typedef union{
|
||||
EwCmd_st head;
|
||||
EwBusCmd_st busoper01;
|
||||
EwHartBeatCmd_st heartbeat02;
|
||||
EwBusRW_st busrw03;
|
||||
EwBusRWAck_st busrwack03;
|
||||
EwClkAmend_st clkamend04;
|
||||
EwInspect_st inspect05;
|
||||
uint8_t buf[128];
|
||||
|
||||
}EWCmd_un;
|
||||
#pragma pack()
|
||||
EWCmd_un ewcmd_nu;
|
||||
EwHartBeatCmd_st ew_beat_ack;
|
||||
volatile uint8_t ew_app_rec_flag = 0;
|
||||
volatile uint8_t heard_beat_flag = 0;
|
||||
struct rt_event ew_usart0_rx_event;
|
||||
|
||||
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static void EW_AckCmd(EWCmd_un* cmd_un)
|
||||
{
|
||||
uint8_t uc_temp = cmd_un->head.src_addr;
|
||||
uint8_t uc_last_dist = cmd_un->head.dist_addr;
|
||||
uint8_t uc_crc = 0;
|
||||
cmd_un->head.frame_len++;//<2F><><EFBFBD>Ȱ<EFBFBD><C8B0><EFBFBD>CRC
|
||||
cmd_un->head.src_addr = Gpio_GetDeivceAddr();//cmd_un->head.src_addr;
|
||||
cmd_un->head.dist_addr = uc_temp;
|
||||
uc_crc = CheckCRC_8(cmd_un->buf,cmd_un->head.frame_len-1);
|
||||
cmd_un->buf[cmd_un->head.frame_len-1] = uc_crc;
|
||||
ConsoleUsart_send_bytes(cmd_un->buf,cmd_un->head.frame_len);
|
||||
//ConsoleUsart0DMA_send_bytes(cmd_un->yecmdbuf,cmd_un->head.frame_len,10);
|
||||
}
|
||||
|
||||
static void EW_BusCmd01(EWCmd_un* cmd_un)
|
||||
{
|
||||
if(cmd_un->busoper01.oper_cmd == 1)
|
||||
{
|
||||
PowerCalibration_set(cmd_un->busoper01.h_v,cmd_un->busoper01.m_v);
|
||||
EW_DIFF_MOD_H;
|
||||
}else{
|
||||
|
||||
PowerCalibration_set(POWER_DEF_V,POWER_DEF_V-10);
|
||||
EW_BUS_OFF
|
||||
}
|
||||
cmd_un->head.frame_len = sizeof(EwCmd_st);
|
||||
cmd_un->buf[cmd_un->head.frame_len] = 0;
|
||||
cmd_un->head.frame_len++;
|
||||
EW_AckCmd(cmd_un);
|
||||
}
|
||||
static void EW_HeartBeatCmd02(EWCmd_un* cmd_un)
|
||||
{
|
||||
heard_beat_flag = cmd_un->heartbeat02.oper_cmd;
|
||||
memcpy(&ew_beat_ack,cmd_un,sizeof(EwCmd_st));
|
||||
cmd_un->head.frame_len = sizeof(EwCmd_st);
|
||||
cmd_un->buf[cmd_un->head.frame_len] = 0;
|
||||
cmd_un->head.frame_len++;
|
||||
EW_AckCmd(cmd_un);
|
||||
}
|
||||
extern uint16_t EW_DMOD_READ_Timeout;
|
||||
static void EW_RWCmd03(EWCmd_un* cmd_un)
|
||||
{
|
||||
uint8_t auc_ew_head[2];
|
||||
uint8_t uc_ack = 0;
|
||||
uint16_t ul_readlen = cmd_un->busrw03.r_len;
|
||||
auc_ew_head[0] = cmd_un->busrw03.buf[0];
|
||||
auc_ew_head[1] = cmd_un->busrw03.buf[1];
|
||||
if(cmd_un->busrw03.w_len > 0)
|
||||
{
|
||||
__disable_irq();
|
||||
DMod_SendBytes(cmd_un->busrw03.buf,cmd_un->busrw03.w_len, cmd_un->busrw03.reate,ul_readlen);
|
||||
__enable_irq();
|
||||
}
|
||||
delay_ms(cmd_un->busrw03.cmd_delay);
|
||||
if(ul_readlen > 0)
|
||||
{
|
||||
__disable_irq();
|
||||
uc_ack = DMod_FireBusReadDatasV2(cmd_un->busrwack03.buf,ul_readlen,EW_DMOD_READ_Timeout);
|
||||
__enable_irq();
|
||||
if(ul_readlen == 2 && uc_ack == 0)
|
||||
{
|
||||
|
||||
if(auc_ew_head[0] != cmd_un->busrwack03.buf[0] || auc_ew_head[1] != cmd_un->busrwack03.buf[1])
|
||||
{
|
||||
uc_ack = 10;
|
||||
}
|
||||
}else if(ul_readlen > 2 && uc_ack == 0)
|
||||
{
|
||||
if(cmd_un->busrwack03.buf[ul_readlen-1] != CheckCRC_8(cmd_un->busrwack03.buf,ul_readlen-1))
|
||||
{
|
||||
uc_ack = 11;
|
||||
}
|
||||
}
|
||||
}
|
||||
cmd_un->busrwack03.ack = uc_ack;
|
||||
cmd_un->busrwack03.head.frame_len = sizeof(EwCmd_st) +1+ ul_readlen;
|
||||
EW_AckCmd(cmd_un);
|
||||
}
|
||||
|
||||
static void EW_ClkAmendCmd04(EWCmd_un* cmd_un)
|
||||
{
|
||||
uint16_t us_cycle = cmd_un->clkamend04.cycle;
|
||||
|
||||
__disable_irq();
|
||||
DMod_SendBytes(cmd_un->clkamend04.buf,cmd_un->clkamend04.w_len, cmd_un->clkamend04.reate,0);
|
||||
__enable_irq();
|
||||
delay_ms(cmd_un->clkamend04.cmd_delay);
|
||||
EW_SendTrimSquare(us_cycle,us_cycle>>1,cmd_un->clkamend04.count);
|
||||
cmd_un->busrwack03.ack = 0;
|
||||
cmd_un->busrwack03.head.frame_len = sizeof(EwCmd_st) +1;
|
||||
EW_AckCmd(cmd_un);
|
||||
|
||||
}
|
||||
|
||||
static void EW_InspectCmd05(EWCmd_un* cmd_un)
|
||||
{
|
||||
uint16_t us_cycle = cmd_un->clkamend04.cycle;
|
||||
uint16_t us_count = 0;
|
||||
us_count = cmd_un->inspect05.bitcount;
|
||||
__disable_irq();
|
||||
DMod_SendBytes(cmd_un->inspect05.buf,cmd_un->inspect05.w_len, cmd_un->inspect05.reate,1);
|
||||
__enable_irq();
|
||||
delay_ms(cmd_un->inspect05.cmd_delay);
|
||||
cmd_un->busrwack03.ack = 0;
|
||||
DMod_ReadInspect_Data(us_count,cmd_un->busrwack03.buf);
|
||||
cmd_un->busrwack03.head.frame_len = sizeof(EwCmd_st) +((us_count+7)>>3)+1;
|
||||
EW_AckCmd(cmd_un);
|
||||
|
||||
}
|
||||
|
||||
void EW_DoCmd(EWCmd_un* cmd_un)
|
||||
{
|
||||
switch(cmd_un->head.cmd)
|
||||
{
|
||||
case 0x01: EW_BusCmd01(cmd_un);break;
|
||||
case 0x02: EW_HeartBeatCmd02(cmd_un);break;
|
||||
case 0x03: EW_RWCmd03(cmd_un); break;
|
||||
case 0x04: EW_ClkAmendCmd04(cmd_un);break;
|
||||
case 0x05: EW_InspectCmd05(cmd_un);break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void DoHeartBeat()
|
||||
{
|
||||
uint8_t uc_crc;
|
||||
ew_beat_ack.oper_cmd = 1;
|
||||
ew_beat_ack.h_v = Power_GetHPowerV();
|
||||
ew_beat_ack.m_v = Power_GetMPowerV();
|
||||
ew_beat_ack.bus_v = Power_GetBousV();
|
||||
ew_beat_ack.cur = Power_GetCurrent();
|
||||
ew_beat_ack.head.frame_len = sizeof(EwHartBeatCmd_st);
|
||||
uc_crc = CheckCRC_8((uint8_t*)&ew_beat_ack,ew_beat_ack.head.frame_len-1);
|
||||
ew_beat_ack.crc = uc_crc;
|
||||
ConsoleUsart_send_bytes((uint8_t*)&ew_beat_ack,ew_beat_ack.head.frame_len);
|
||||
|
||||
}
|
||||
|
||||
void EWUsartApp_Task(void* param)
|
||||
{
|
||||
rt_uint32_t event;
|
||||
uint32_t idle_count = 0;
|
||||
UNUSED(param);
|
||||
rt_event_init(&ew_usart0_rx_event, "ew_usart_rx_e", RT_IPC_FLAG_PRIO);
|
||||
ew_app_rec_flag = 0;
|
||||
|
||||
while(1)
|
||||
{
|
||||
if(idle_count > 9)
|
||||
{
|
||||
idle_count = 0;
|
||||
if(heard_beat_flag > 0)
|
||||
{
|
||||
DoHeartBeat();
|
||||
}
|
||||
}
|
||||
|
||||
if(rt_event_recv(&ew_usart0_rx_event, UART_MC_FRAME_EVENT,RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,100, &event) != RT_EOK)
|
||||
{
|
||||
idle_count++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if((event & UART_MC_FRAME_EVENT) > 0)
|
||||
{
|
||||
ConsoleRxDisable();
|
||||
if(ewcmd_nu.buf[0]=='E' && ewcmd_nu.buf[1] == 'w')
|
||||
{
|
||||
|
||||
if(ewcmd_nu.buf[ewcmd_nu.head.frame_len-1] == CheckCRC_8(ewcmd_nu.buf,ewcmd_nu.head.frame_len-1))
|
||||
{
|
||||
|
||||
EW_DoCmd(&ewcmd_nu);
|
||||
}
|
||||
|
||||
}
|
||||
ConsoleRxEnable();
|
||||
ew_app_rec_flag = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@brief <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
|
||||
@param buf Դ<><D4B4><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD>ռ<EFBFBD>
|
||||
@paran len <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
|
||||
@rtv <20><>
|
||||
*/
|
||||
void EW_UsartApp_Push_Cmd(uint8_t* buf, uint16_t len)
|
||||
{
|
||||
if(ew_app_rec_flag > 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(len > sizeof(EWCmd_un))
|
||||
{
|
||||
len = sizeof(EWCmd_un);
|
||||
}
|
||||
rt_memcpy((void*)&ewcmd_nu,buf,len);
|
||||
rt_event_send(&ew_usart0_rx_event,UART_MC_FRAME_EVENT);//<2F><><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||
ew_app_rec_flag = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
597
source/elec_det/test/Test.c
Normal file
597
source/elec_det/test/Test.c
Normal file
@@ -0,0 +1,597 @@
|
||||
#include "base/define.h"
|
||||
#include "stdlib.h"
|
||||
#include "hardware/gpio_cfg.h"
|
||||
#include "base/delay.h"
|
||||
#include "hardware/adc_cfg.h"
|
||||
#include "hardware/power.h"
|
||||
#include "base/utility.h"
|
||||
//#include "usartapp.h"
|
||||
#include "driver/jqdriver.h"
|
||||
#include "interface/jqchecker.h"
|
||||
//#include "database.h"
|
||||
#include "driver/XTDriver.h"
|
||||
#include "interface/Basechecker.h"
|
||||
#include "elec_io.h"
|
||||
|
||||
|
||||
|
||||
volatile uint16_t jq_adc_test_buf[2048];
|
||||
|
||||
static void OutGroup1(uint32_t count,uint32_t delay,uint32_t cycle)
|
||||
{
|
||||
__disable_irq();
|
||||
while(count > 0)
|
||||
{
|
||||
PCout(OUTBH_Pin_Nu) = 1;
|
||||
PBout(OUTAH_Pin_Nu) = 1;
|
||||
delay_us(delay);
|
||||
PBout(OUTBL_Pin_Nu) = 0;
|
||||
PBout(OUTAL_Pin_Nu) = 0;
|
||||
delay_us(cycle);
|
||||
PCout(OUTBH_Pin_Nu) = 0;
|
||||
PBout(OUTAH_Pin_Nu) = 0;
|
||||
delay_us(delay);
|
||||
PBout(OUTBL_Pin_Nu) = 1;
|
||||
PBout(OUTAL_Pin_Nu) = 1;
|
||||
delay_us(cycle);
|
||||
count--;
|
||||
}
|
||||
__enable_irq();
|
||||
}
|
||||
static void GpioTest(int argc, char**argv)
|
||||
{
|
||||
uint32_t io_value = 0;
|
||||
uint32_t count = 0,delay,cycle;
|
||||
if (argc < 3)
|
||||
{
|
||||
goto IO_help_label_;
|
||||
}
|
||||
if(argc == 3)
|
||||
{
|
||||
io_value = atoi(argv[2]);
|
||||
}
|
||||
|
||||
if (!rt_strcmp(argv[1], "LAVC_M"))
|
||||
{
|
||||
PAout(LAVC_M_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "SEG0"))
|
||||
{
|
||||
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG0_Pin_Nu));
|
||||
}else if(!rt_strcmp(argv[1], "R10_ON"))
|
||||
{
|
||||
PBout(R10_ON_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "R510_ON")){
|
||||
PBout(R510_ON_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "LED1")){
|
||||
PBout(LED1_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "IO_APD12")){
|
||||
PBout(IO_APD12_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "LED2")){
|
||||
PBout(LED2_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "OUTAL"))
|
||||
{
|
||||
PBout(OUTAL_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "OUTBL"))
|
||||
{
|
||||
PBout(OUTBL_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "OUTAH"))
|
||||
{
|
||||
PBout(OUTAH_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "R100_ON"))
|
||||
{
|
||||
PCout(R100_ON_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "OUTBH"))
|
||||
{
|
||||
PCout(OUTBH_Pin_Nu) = io_value;
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "Power_ON"))
|
||||
{
|
||||
PCout(POWER_ON_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "SEG4"))
|
||||
{
|
||||
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG4_Pin_Nu));
|
||||
}else if(!rt_strcmp(argv[1], "SEG3"))
|
||||
{
|
||||
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG3_Pin_Nu));
|
||||
}else if(!rt_strcmp(argv[1], "SEG1"))
|
||||
{
|
||||
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG1_Pin_Nu));
|
||||
}else if(!rt_strcmp(argv[1], "SEG2"))
|
||||
{
|
||||
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG2_Pin_Nu));
|
||||
}else if(!rt_strcmp(argv[1], "IO_APD22"))
|
||||
{
|
||||
PCout(IO_APD22_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "IO_APD21"))
|
||||
{
|
||||
PCout(IO_APD21_Pin_Nu) = io_value;
|
||||
}else if(!rt_strcmp(argv[1], "IO_APD11"))
|
||||
{
|
||||
PCout(IO_APD11_Pin_Nu) = io_value;
|
||||
}
|
||||
|
||||
else if(!rt_strcmp(argv[1], "Group1"))
|
||||
{
|
||||
|
||||
count = atoi(argv[2]);
|
||||
delay = atoi(argv[3]);
|
||||
cycle = atoi(argv[4]);
|
||||
OutGroup1(count,delay,cycle);
|
||||
}
|
||||
else
|
||||
{
|
||||
IO_help_label_:
|
||||
rt_kprintf("IO [IO_name] 0/1/R \n");
|
||||
rt_kprintf("IO Group[number] count delay cycle \n");
|
||||
|
||||
}
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(GpioTest,IO,I/O Input Output test);
|
||||
|
||||
static void DACTest(int argc, char**argv)
|
||||
{
|
||||
uint32_t da_value = 0;
|
||||
if (argc < 3)
|
||||
{
|
||||
goto DAC_help_label_;
|
||||
}
|
||||
if(argc == 3)
|
||||
{
|
||||
da_value = atoi(argv[2]);
|
||||
}
|
||||
|
||||
if(!rt_strcmp(argv[1], "C_H_DAC"))
|
||||
{
|
||||
if(da_value < 125)
|
||||
{
|
||||
rt_kprintf("C_H_DAC Min value 1400");
|
||||
}else{
|
||||
C_H_DAC_Set(da_value);
|
||||
}
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "C_M_DAC"))
|
||||
{
|
||||
C_M_DAC_Set(da_value);
|
||||
}else{
|
||||
DAC_help_label_:
|
||||
rt_kprintf("DA [C_H_DAC/C_M_DAC] Value(0~4096) \n");
|
||||
}
|
||||
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(DACTest,DA,Out DA Voltage);
|
||||
static void ADCTest(int argc, char**argv)
|
||||
{
|
||||
uint16_t adv;
|
||||
uint16_t ul_count = 0;
|
||||
if (argc < 2)
|
||||
{
|
||||
goto ADC_help_label_;
|
||||
}else if(!rt_strcmp(argv[1], "V_LA_M"))
|
||||
{
|
||||
GetADC1_Value(V_LA_M_CH,&adv,1);
|
||||
rt_kprintf("V_LA_M = %d \n",adv);
|
||||
}else if(!rt_strcmp(argv[1], "V_LA_H"))
|
||||
{
|
||||
GetADC1_Value(V_LA_H_CH,&adv,1);
|
||||
rt_kprintf("V_LA_H = %d \n",adv);
|
||||
}else if(!rt_strcmp(argv[1], "VCC_2V5"))
|
||||
{
|
||||
GetADC1_Value(VCC_2V5_CH,&adv,1);
|
||||
rt_kprintf("VCC_2V5 = %d \n",adv);
|
||||
}else if(!rt_strcmp(argv[1], "VCC_1V25"))
|
||||
{
|
||||
GetADC1_Value(VCC_1V25_CH,&adv,1);
|
||||
rt_kprintf("VCC_1V25 = %d \n",adv);
|
||||
}else if(!rt_strcmp(argv[1], "RAD_01"))
|
||||
{
|
||||
GetADC1_Value(RAD_01_CH,&adv,1);
|
||||
rt_kprintf("RAD_01 = %d \n",adv);
|
||||
}else if(!rt_strcmp(argv[1], "AD_OUTA"))
|
||||
{
|
||||
GetADC1_Value(AD_OUTA_CH,&adv,1);
|
||||
rt_kprintf("AD_OUTA = %d \n",adv);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "AD_OUTB"))
|
||||
{
|
||||
GetADC1_Value(AD_OUTB_CH,&adv,1);
|
||||
rt_kprintf("AD_OUTB = %d \n",adv);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "V_BASE"))
|
||||
{
|
||||
GetADC1_Value(ADC_Channel_17,&adv,1);
|
||||
rt_kprintf("V_BASE = %d \n",adv);
|
||||
}else if(!rt_strcmp(argv[1], "TEMP"))
|
||||
{
|
||||
GetADC1_Value(ADC_Channel_16,&adv,1);
|
||||
rt_kprintf("TEMP = %d \n",adv);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "AN_UA"))
|
||||
{
|
||||
StartADC2Channel(AN_UA_CH,ADC_SPEED_MIDLE);
|
||||
rt_kprintf("AN_UA = %d \n",GetADC1_Fast());
|
||||
}else if(!rt_strcmp(argv[1], "AN_MAL"))
|
||||
{
|
||||
StartADC2Channel(AN_MAL_CH,ADC_SPEED_MIDLE);
|
||||
rt_kprintf("AN_MAL = %d \n",GetADC1_Fast());
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "FMA"))
|
||||
{
|
||||
JQBUS_OFF;
|
||||
rt_kprintf("Close Bus \n");
|
||||
delay_ms(1000);
|
||||
rt_kprintf("Open Bus \n");
|
||||
POWER_ON;
|
||||
StartADC2Channel(AN_MAL_CH,ADC_SPEED_HIGH);
|
||||
Power_SetSampleCurrentRange(R100_0p2mA_3mA_MC);
|
||||
JQBUS_ON;
|
||||
delay_ms(1);
|
||||
ul_count = 0;
|
||||
while(ul_count < 2048)
|
||||
{
|
||||
jq_adc_test_buf[ul_count++] = GetADC1_Fast();
|
||||
}
|
||||
ul_count = 0;
|
||||
rt_kprintf("Sample data \n");
|
||||
while(ul_count < 2048)
|
||||
{
|
||||
rt_kprintf("%d\t%d\t%d\t%d\n",jq_adc_test_buf[ul_count],jq_adc_test_buf[ul_count+1],jq_adc_test_buf[ul_count+2],jq_adc_test_buf[ul_count+3]);
|
||||
ul_count +=4;
|
||||
}
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "FUA"))
|
||||
{
|
||||
JQBUS_OFF;
|
||||
rt_kprintf("Close Bus \n");
|
||||
delay_ms(1000);
|
||||
rt_kprintf("Open Bus \n");
|
||||
StartADC2Channel(AN_UA_CH,ADC_SPEED_HIGH);
|
||||
POWER_ON;
|
||||
Power_SetSampleCurrentRange(R10_0p1mA_1p6mA_UC);
|
||||
JQBUS_ON;
|
||||
delay_ms(1);
|
||||
ul_count = 0;
|
||||
while(ul_count < 2048)
|
||||
{
|
||||
jq_adc_test_buf[ul_count++] = GetADC1_Fast();
|
||||
}
|
||||
ul_count = 0;
|
||||
rt_kprintf("Sample data \n");
|
||||
while(ul_count < 2048)
|
||||
{
|
||||
rt_kprintf("%d\t%d\t%d\t%d\n",jq_adc_test_buf[ul_count],jq_adc_test_buf[ul_count+1],jq_adc_test_buf[ul_count+2],jq_adc_test_buf[ul_count+3]);
|
||||
ul_count +=4;
|
||||
}
|
||||
}
|
||||
else{
|
||||
ADC_help_label_:
|
||||
rt_kprintf("AD [ChannelName] \n");
|
||||
rt_kprintf("AD FUA / FMA \n");
|
||||
}
|
||||
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(ADCTest,AD,Get AD Value);
|
||||
|
||||
|
||||
|
||||
static void PowerTest(int argc, char**argv)
|
||||
{
|
||||
PowerInfo_st infos_st;
|
||||
if (argc < 2)
|
||||
{
|
||||
goto FB_help_label_;
|
||||
}else if(!rt_strcmp(argv[1], "ON"))
|
||||
{
|
||||
POWER_ON
|
||||
}else if(!rt_strcmp(argv[1], "OFF"))
|
||||
{
|
||||
POWER_OFF
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "HV"))
|
||||
{
|
||||
|
||||
rt_kprintf("POWER HV(10) %d \n" , Power_GetHPowerV());
|
||||
}else if(!rt_strcmp(argv[1], "MV"))
|
||||
{
|
||||
rt_kprintf("POWER MV(10) %d \n" , Power_GetMPowerV());
|
||||
}else if(!rt_strcmp(argv[1], "CURRENT")){
|
||||
rt_kprintf("CURRENT 0.1uA %d \n" , Power_GetCurrent());
|
||||
}else if(!rt_strcmp(argv[1], "SET"))
|
||||
{
|
||||
infos_st.V_LAH = atoi(argv[2]);
|
||||
infos_st.V_LAM = atoi(argv[3]);
|
||||
infos_st.V_LAH_DAC = 0;
|
||||
infos_st.V_LAM_DAC = 0;
|
||||
PowerCalibration(&infos_st);
|
||||
if( infos_st.V_LAH_DAC > 0)
|
||||
PowerSetVoltage(&infos_st);
|
||||
|
||||
}
|
||||
else{
|
||||
FB_help_label_:
|
||||
rt_kprintf("POWER [ ON |HV | MV | CURRENT] \n");
|
||||
rt_kprintf("POWER [SET] [HV max 260] [MV ] \n");
|
||||
}
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(PowerTest ,POWER, BUS POWER );
|
||||
|
||||
|
||||
extern Checker_RunCfg_st checker_runcfg;
|
||||
static void CheckerTest(int argc, char**argv)
|
||||
{
|
||||
uint32_t h_power,m_power;
|
||||
uint16_t us_array[20];
|
||||
uint8_t* puc_buf;
|
||||
uint16_t us_temp;
|
||||
rt_memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st));
|
||||
if(argc > 2)
|
||||
{
|
||||
checker_runcfg.param_count = argc-2;
|
||||
us_temp = 0;
|
||||
while(us_temp < checker_runcfg.param_count)
|
||||
{
|
||||
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
|
||||
us_temp++;
|
||||
}
|
||||
}
|
||||
if (argc < 2)
|
||||
{
|
||||
goto CH_help_label_;
|
||||
}else if(!rt_strcmp(argv[1], "ON")){
|
||||
JQBUS_ON
|
||||
}else if(!rt_strcmp(argv[1], "OFF")){
|
||||
JQBUS_OFF
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "H")){
|
||||
JQBUS_W_1
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "L")){
|
||||
JQBUS_W_0
|
||||
}else if(!rt_strcmp(argv[1], "CURRENT")){
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "PowerPrapare")){
|
||||
|
||||
Checker_PowerPrapare();
|
||||
rt_kprintf("PowerPrapare Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "PowerOn")){
|
||||
checker_runcfg.rtv_count = 2;
|
||||
JQ_Test_PowerOn();
|
||||
rt_kprintf("PowerOn Excute %d BusV %d Energy %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
|
||||
}else if(!rt_strcmp(argv[1], "SetBusV")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
JQ_Test_SetBusV();
|
||||
rt_kprintf("SetBusV Excute %d BusV %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] );
|
||||
}else if(!rt_strcmp(argv[1], "BaseCur")){
|
||||
checker_runcfg.rtv_count = 2;
|
||||
JQ_Test_BaseCur();
|
||||
rt_kprintf("BaseCur Excute %d BusCur1 %d BusCur2 %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "ScanUID")){
|
||||
checker_runcfg.rtv_count = 8;
|
||||
JQ_Test_ScanUID();
|
||||
rt_kprintf("ScanUID excute %d, max_cur %d, max_time %d, min_cur %d, min_time %d UID\t",\
|
||||
checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[2],checker_runcfg.Test_Rtv[3]);
|
||||
us_temp = 0;
|
||||
while(us_temp < 4)
|
||||
{
|
||||
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp+4]) & 0x0FF);
|
||||
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp+4]>>8) & 0x0FF);
|
||||
us_temp++;
|
||||
}
|
||||
printf("\n");
|
||||
}else if(!rt_strcmp(argv[1], "ReadChipID")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
JQ_Test_ReadChipID();
|
||||
printf("ReadChipID Excute %d ChipID %04x \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "PWCheck")){
|
||||
JQ_Test_PWCheck();
|
||||
printf("PWCheck Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "OTPCheck")){
|
||||
JQ_Test_OTPCheck();
|
||||
printf("OTPCheck Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "FTCheck")){
|
||||
JQ_Test_FTCheck();
|
||||
printf("FTCheck Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ReadState")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
JQ_Test_ReadState();
|
||||
printf("ReadState Excute %d State %02x\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "WriteUserInfo")){
|
||||
JQ_Test_WriteUserInfo();
|
||||
printf("WriteUserInfo Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ChgEnergy")){
|
||||
checker_runcfg.rtv_count = 4;
|
||||
JQ_Test_ChgEnergy();
|
||||
printf("ReadState Excute %d Energy_0.1ms %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
printf("EndCur_0.1uA %d ",checker_runcfg.Test_Rtv[1]);
|
||||
printf("MaxCur_0.1mA %d ",checker_runcfg.Test_Rtv[2]);
|
||||
printf("ShakeADV %d \n",checker_runcfg.Test_Rtv[3]);
|
||||
}else if(!rt_strcmp(argv[1], "CheckDAC")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
JQ_Test_CheckDAC();
|
||||
printf("CheckDAC Excute %d End_DAC %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "WaitDelay")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
Checker_WaitDelay();
|
||||
printf("CheckDAC Excute %d End_DAC %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "SetDelay")){
|
||||
JQ_Test_SetDelay();
|
||||
printf("SetDelay Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ReadDelay")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
JQ_Test_ReadDelay();
|
||||
printf("ReadDelay Excute %d Delay %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ClkTrim")){
|
||||
JQ_Test_ClkTrim();
|
||||
printf("ClkTrim Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "Discharge")){
|
||||
JQ_Test_Discharge();
|
||||
printf("Discharge Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "Reset")){
|
||||
JQ_Test_Reset();
|
||||
printf("Reset Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "BootEn")){
|
||||
JQ_Test_BootEn();
|
||||
printf("BootEn Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ClearBoom")){
|
||||
JQ_Test_ClearBoom();
|
||||
printf("ClearBoom Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "BoomEnergy")){
|
||||
checker_runcfg.rtv_count = 4;
|
||||
JQ_Test_BoomEnergy();
|
||||
printf("BoomEnergy Excute %d Energy_0.1ms %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
printf("PlusShakeADV %d ",checker_runcfg.Test_Rtv[1]);
|
||||
printf("MaxChgCur_0.1mA %d ",checker_runcfg.Test_Rtv[2]);
|
||||
printf("ChgShakeADV %d \n",checker_runcfg.Test_Rtv[3]);
|
||||
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "EnCommEndCur")){
|
||||
JQ_Test_EnCommEndCur();
|
||||
printf("BootEn Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "GetCommEndCur")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
JQ_Test_GetCommEndCur();
|
||||
printf("GetCommEndCur Excute %d CommCur %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "PowerOff")){
|
||||
JQ_Test_PowerOff();
|
||||
printf("PowerOff Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "WriteOTP")){
|
||||
HexStrings2Byte(argv+4,argc-4,(uint8_t*)(&checker_runcfg.params[2]),8);
|
||||
JQ_Test_WriteOTP();
|
||||
printf("WriteOTP Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ReadOTP")){
|
||||
us_temp = checker_runcfg.params[1];
|
||||
checker_runcfg.rtv_count = (us_temp + 1)/2;
|
||||
JQ_Test_ReadOTP();
|
||||
printf("ReadOTP Excute %d ReadDatas ",checker_runcfg.Task_Result[0]);
|
||||
puc_buf = (uint8_t*)checker_runcfg.Test_Rtv;
|
||||
while(us_temp > 0)
|
||||
{
|
||||
printf("%02x ",*puc_buf++);
|
||||
us_temp--;
|
||||
}
|
||||
printf("\n");
|
||||
}else if(!rt_strcmp(argv[1], "WriteBuf2OTP")){
|
||||
JQ_Test_WriteBuf2OTP();
|
||||
printf("WriteBuf2OTP Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "BindUIDPWD")){
|
||||
|
||||
memcpy(us_array,argv[2],strlen(argv[2]));
|
||||
UidCode_YM2JQ(checker_runcfg.writeuid,(uint8_t*)us_array);
|
||||
m_power = GetPasswordByUidCode((uint8_t*)us_array);
|
||||
memcpy(checker_runcfg.writepwd,(uint8_t*)&m_power ,4);
|
||||
checker_runcfg.pwd_len = 4;
|
||||
checker_runcfg.uid_len = 8;
|
||||
JQ_UID_PWD_Bind();
|
||||
printf("BindUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "VerifyUIDPWD")){
|
||||
JQ_Verify_UID_PWD();
|
||||
printf("VerifyUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}
|
||||
|
||||
else if(!rt_strcmp(argv[1], "SetHardVer")){
|
||||
HexStrings2Byte(argv+2,argc-2,(uint8_t*)(&boardinfo_un.boardinfo.hard_v),2);
|
||||
SaveBoardInfo();
|
||||
printf("SetHardVer %04x\n",boardinfo_un.boardinfo.hard_v);
|
||||
}else if(!rt_strcmp(argv[1], "SetRsisDiff")){
|
||||
boardinfo_un.boardinfo.resistor_diff = checker_runcfg.params[0];
|
||||
SaveBoardInfo();
|
||||
printf("SetRsisDiff %d\n",boardinfo_un.boardinfo.resistor_diff);
|
||||
}else if(!rt_strcmp(argv[1], "ReadBoard")){
|
||||
LoadBoardInfo();
|
||||
printf("BootFlag %08x HardVersion %02x RsistorDiff %d\n",\
|
||||
boardinfo_un.boardinfo.bootflag,boardinfo_un.boardinfo.hard_v,boardinfo_un.boardinfo.resistor_diff);
|
||||
}else if(!rt_strcmp(argv[1], "ExcuePlan")){
|
||||
Ye_RunPlanCheckTest();
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "SetWriteBuf")){
|
||||
HexStrings2Byte(argv+2,argc-2,Checker_FacBuf+2,CHECKER_FAC_BUF_LEN-2);
|
||||
if(argc > CHECKER_FAC_BUF_LEN)
|
||||
{
|
||||
Checker_FacBuf[0] = CHECKER_FAC_BUF_LEN-2;
|
||||
}else{
|
||||
Checker_FacBuf[0] = argc-2;
|
||||
}
|
||||
Checker_FacBuf[1] = CheckCRC_8(Checker_FacBuf+2,Checker_FacBuf[0]);
|
||||
printf("SetWriteBuf Excute 0 \n");
|
||||
}else if(!rt_strcmp(argv[1], "ResistorSample")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
Checker_ResistorSample();
|
||||
printf("CheckPWD Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "CapVoltage")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
JQ_Test_CapVoltage();
|
||||
printf("CheckPWD Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "EnOTPW")){
|
||||
JQ_Test_EnOTPW();
|
||||
printf("EnOTPW Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "WriteVersion")){
|
||||
JQ_Test_WriteVersion();
|
||||
printf("WriteVersion Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ReadVersion")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
JQ_Test_ReadVersion();
|
||||
printf("ReadVersion Excute %d Ver %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "WriteFacBuff")){
|
||||
JQ_Test_WriteFacBuff();
|
||||
printf("WriteFacBuff Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "VerifyFacBuff")){
|
||||
JQ_Test_VerifyFacBuff();
|
||||
printf("VerifyFacBuff Excute %d ",checker_runcfg.Task_Result[0]);
|
||||
}
|
||||
|
||||
else{
|
||||
CH_help_label_:
|
||||
rt_kprintf("CH [ON | OFF | H | L ] \n");
|
||||
rt_kprintf("PowerPrapare [V1,V2,V3...V10] \n");
|
||||
rt_kprintf("PowerOn [Voltage] [TimeOut] [End_ADC_V] \n");
|
||||
rt_kprintf("SetBusV [Voltage] \n");
|
||||
rt_kprintf("BaseCur \n");
|
||||
rt_kprintf("ScanUID [EN_CommCur] [E_UID_Equal_0] \n");
|
||||
rt_kprintf("PWCheck [EN_PW_0] \n");
|
||||
rt_kprintf("ReadChipID \n");
|
||||
rt_kprintf("OTPCheck [EN_UID_PWD_0] [EN_Delay_Re_0] [EN_Factory_0]\n");
|
||||
rt_kprintf("FTCheck \n");
|
||||
rt_kprintf("ReadState [State_Mask] \n");
|
||||
rt_kprintf("WriteUserInfo [2bytes] [2bytes]\n");
|
||||
rt_kprintf("ChgEnergy [End_ADV] [Sample_timeout] [End_Cur_0.1] [Wait_Timeout] [Chg_Hold]\n");
|
||||
rt_kprintf("CheckDAC [Bg_DAC] [End_DAC]\n");
|
||||
rt_kprintf("WaitDelay [Delay_0.1S] [En_Monitor] \n");
|
||||
rt_kprintf("SetDelay [Delay] \n");
|
||||
rt_kprintf("ReadDelay \n");
|
||||
rt_kprintf("ClkTrim [Cycle_us] [Pluse_count] \n");
|
||||
rt_kprintf("Discharge \n");
|
||||
rt_kprintf("Reset \n");
|
||||
rt_kprintf("BoomEnergy [End_ADV] [Plus_Count] [DelaySample_ms]\n");
|
||||
rt_kprintf("BootEn \n");
|
||||
rt_kprintf("ClearBoom \n");
|
||||
rt_kprintf("EnCommEndCur \n");
|
||||
rt_kprintf("GetCommEndCur \n");
|
||||
rt_kprintf("PowerOff \n");
|
||||
rt_kprintf("WriteOTP [OTP_Addr] [Write_Len] [DATA ...]\n");
|
||||
rt_kprintf("ReadOTP [OTP_Addr] [Read_Len] \n");
|
||||
rt_kprintf("WriteBuf2OTP [OTP_Addr] [Buffer_Addr] [WriteLen] \n");
|
||||
rt_kprintf("BindUIDPWD [uid_str] \n");
|
||||
rt_kprintf("VerifyUIDPWD \n");
|
||||
|
||||
rt_kprintf("SetHardVer [HardVersion 2Bytes] \n");
|
||||
rt_kprintf("SetRsisDiff [RsistorDiff *100] \n");
|
||||
rt_kprintf("ReadBoardInfo \n");
|
||||
rt_kprintf("ExcuePlan \n");
|
||||
rt_kprintf("SetWriteBuf [HexData...]\n");
|
||||
rt_kprintf("ResistorSample [Test_Modle]\n");
|
||||
rt_kprintf("CapVoltage [WaitTime 0.1S]\n");
|
||||
rt_kprintf("EnOTPW \n");
|
||||
rt_kprintf("WriteVersion [Product Ver] \n");
|
||||
rt_kprintf("ReadVersion \n");
|
||||
rt_kprintf("WriteFacBuff [otp_addr][buf_bg][w_len] \n");
|
||||
rt_kprintf("VerifyFacBuff [otp_addr][buf_bg][r_len] \n");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(CheckerTest ,JCH, BUS POWER );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
303
source/elec_det/test/XTCheckerTest.c
Normal file
303
source/elec_det/test/XTCheckerTest.c
Normal file
@@ -0,0 +1,303 @@
|
||||
#include "base/define.h"
|
||||
#include "stdlib.h"
|
||||
#include "hardware/gpio_cfg.h"
|
||||
#include "base/delay.h"
|
||||
#include "hardware/adc_cfg.h"
|
||||
#include "hardware/power.h"
|
||||
#include "base/utility.h"
|
||||
//#include "usartapp.h"
|
||||
//#include "database.h"
|
||||
#include "driver/XTDriver.h"
|
||||
#include "interface/BaseChecker.h"
|
||||
#include "interface/XTChecker.h"
|
||||
#include "elec_io.h"
|
||||
|
||||
//volatile uint16_t jq_adc_test_buf[2048];
|
||||
static void XTCheckerTest(int argc, char**argv)
|
||||
{
|
||||
uint32_t h_power,m_power;
|
||||
uint16_t us_array[20];
|
||||
uint8_t* puc_buf;
|
||||
uint16_t us_temp;
|
||||
rt_memset(&checker_runcfg.params,0,sizeof(checker_runcfg.params));
|
||||
rt_memset(&checker_runcfg.Task_Result,0,sizeof(checker_runcfg.Task_Result));
|
||||
checker_runcfg.excue_rtv = 0;
|
||||
checker_runcfg.param_count = 0;
|
||||
checker_runcfg.rtv_count = 0;
|
||||
checker_runcfg.rtv_index = 0;
|
||||
checker_runcfg.task_info.runindex = 0;
|
||||
|
||||
if(argc > 2)
|
||||
{
|
||||
checker_runcfg.param_count = argc-2;
|
||||
us_temp = 0;
|
||||
while(us_temp < checker_runcfg.param_count)
|
||||
{
|
||||
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
|
||||
us_temp++;
|
||||
}
|
||||
}
|
||||
if (argc < 2)
|
||||
{
|
||||
goto CH_help_label_;
|
||||
}else if(!rt_strcmp(argv[1], "ON")){
|
||||
XTBUS_ON
|
||||
}else if(!rt_strcmp(argv[1], "OFF")){
|
||||
XTBUS_OFF
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "H")){
|
||||
XTBUS_W_1
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "L")){
|
||||
XTBUS_W_0
|
||||
}else if(!rt_strcmp(argv[1], "CURRENT")){
|
||||
rt_kprintf("Bus Cur %d 0.1uA \n",Power_GetCurrent());
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "PowerPrapare")){
|
||||
|
||||
Checker_PowerPrapare();
|
||||
rt_kprintf("PowerPrapare Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "PowerOn")){
|
||||
checker_runcfg.rtv_count = 2;
|
||||
XT_Test_PowerOn();
|
||||
rt_kprintf("PowerOn Excute %d BusV %d Energy %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
|
||||
}else if(!rt_strcmp(argv[1], "SetBusV")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
XT_Test_SetBusV();
|
||||
rt_kprintf("SetBusV Excute %d BusV %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] );
|
||||
}else if(!rt_strcmp(argv[1], "BaseCur")){
|
||||
checker_runcfg.rtv_count = 2;
|
||||
XT_Test_BaseCur();
|
||||
rt_kprintf("BaseCur Excute %d BusCur1 %d BusCur2 %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "ScanUID")){
|
||||
checker_runcfg.rtv_count = (checker_runcfg.params[0]+8+1)/2;
|
||||
XT_Test_ScanUID();
|
||||
rt_kprintf("ScanUID excute %d \t",checker_runcfg.Task_Result[0]);
|
||||
us_temp = 0;
|
||||
while(us_temp < checker_runcfg.rtv_count)
|
||||
{
|
||||
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp]) & 0x0FF);
|
||||
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp]>>8) & 0x0FF);
|
||||
us_temp++;
|
||||
}
|
||||
printf("\n");
|
||||
}else if(!rt_strcmp(argv[1], "WriteChipCfg")){
|
||||
XT_Test_WriteChipCfg();
|
||||
printf("WriteChipCfg Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "CheckChipCfg")){
|
||||
XT_Test_CheckChipCfg();
|
||||
printf("CheckChipCfg Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "BindTestCode")){
|
||||
XT_Test_BindTestCode();
|
||||
printf("BindTestCode Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ChgEnergy")){
|
||||
checker_runcfg.rtv_count = 4;
|
||||
XT_Test_ChgEnergy();
|
||||
printf("ReadState Excute %d Energy_0.1ms %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
printf("EndCur_0.1uA %d ",checker_runcfg.Test_Rtv[1]);
|
||||
printf("MaxCur_0.1mA %d ",checker_runcfg.Test_Rtv[2]);
|
||||
printf("ShakeADV %d \n",checker_runcfg.Test_Rtv[3]);
|
||||
} else if(!rt_strcmp(argv[1], "WriteRunField")){
|
||||
XT_Test_WriteRunField();
|
||||
printf("WriteRunField Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "CheckRunField")){
|
||||
checker_runcfg.rtv_count = 4;
|
||||
XT_Test_CheckRunField();
|
||||
printf("ReadState Excute %d MaxCur %d MaxTime %d MinCur %d MinTime %d\n",checker_runcfg.Task_Result[0],\
|
||||
checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[2],checker_runcfg.Test_Rtv[3]);
|
||||
}else if(!rt_strcmp(argv[1], "Resister")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
XT_Test_Resister();
|
||||
printf("Resister Excute %d R_adc %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "Cap")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
XT_Test_Cap();
|
||||
printf("Cap Excute %d Cap %d 0.1uf\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "WaitDelay")){
|
||||
Checker_WaitDelay();
|
||||
printf("Cap Excute %d C\n",checker_runcfg.Task_Result[0]);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "WriteShell")){
|
||||
XT_Test_WriteShell();
|
||||
printf("WriteShell Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "WriteUID")){
|
||||
XT_Test_WriteUID();
|
||||
printf("WriteUID Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "WritePWD")){
|
||||
XT_Test_WritePWD();
|
||||
printf("WritePWD Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "CheckBackFlag")){
|
||||
XT_Test_CheckBackFlag();
|
||||
printf("CheckBackFlag Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "ReadBackFlag")){
|
||||
checker_runcfg.rtv_count = 2;
|
||||
XT_Test_ReadBackFlag();
|
||||
printf("Discharge Excute %d BackBytes %04X %04X\n ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1]);
|
||||
}else if(!rt_strcmp(argv[1], "Trim")){
|
||||
XT_Test_Trim();
|
||||
printf("Trim Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "Discharge")){
|
||||
XT_Test_Discharge();
|
||||
printf("Discharge Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "EnCommEndCur")){
|
||||
XT_Test_EnCommEndCur();
|
||||
printf("EnCommEndCur Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "GetCommEndCur")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
XT_Test_GetCommEndCur();
|
||||
printf("GetCommEndCur Excute %d Cur_ADC %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "OneLineCheck")){
|
||||
XT_Test_OneLineCheck();
|
||||
printf("OneLineCheck Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "CheckState")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
XT_Test_CheckState();
|
||||
printf("CheckState Excute %d CommCur %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "Boom")){
|
||||
checker_runcfg.rtv_count = 2;
|
||||
XT_Test_Boom();
|
||||
printf("Boom Excute %d delay %d 0.1ms net_id %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "Reset")){
|
||||
XT_Test_Reset();
|
||||
printf("Reset Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "PowerOFF")){
|
||||
XT_Test_PowerOFF();
|
||||
printf("PowerOFF Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "LockCmdC")){
|
||||
XT_Test_LockCmdC();
|
||||
printf("LockCmdC Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "CodeBindEn")){
|
||||
XT_Test_CodeBindEn();
|
||||
printf("LockCmdC Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "SetWriteBuf")){
|
||||
Checker_FacBuf[0] = strlen(argv[2]);
|
||||
memcpy(Checker_FacBuf+2,argv[2],Checker_FacBuf[0]);
|
||||
Checker_FacBuf[1] = CheckCRC_8(Checker_FacBuf+2,Checker_FacBuf[0]);
|
||||
printf("SetWriteBuf Excute 0 \n");
|
||||
}else if(!rt_strcmp(argv[1], "SetWriteBufHex")){
|
||||
HexStrings2Byte(argv+2,argc-2,Checker_FacBuf+2,48);
|
||||
Checker_FacBuf[0] = argc-2;
|
||||
Checker_FacBuf[1] = CheckCRC_8(Checker_FacBuf+2,Checker_FacBuf[0]);
|
||||
printf("SetWriteBufHex Excute 0 \n");
|
||||
}else if(!rt_strcmp(argv[1], "InputCheck")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
XT_Test_InputCheck();
|
||||
printf("InputCheck Excute %d BusVoltage %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "CheckPWD")){
|
||||
XT_Test_CheckPWD();
|
||||
printf("CheckPWD Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
|
||||
}else if(!rt_strcmp(argv[1], "UID_PWD_Bind")){
|
||||
|
||||
printf("UID_PWD_Bind Excute %d \n",XT_UID_PWD_Bind());
|
||||
}else if(!rt_strcmp(argv[1], "ResistorSample")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
Checker_ResistorSample();
|
||||
printf("ResistorSample Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "LoadChipCfg")){
|
||||
checker_runcfg.rtv_count = 4;
|
||||
XT_Test_LoadChipCfg();
|
||||
printf("LoadChipCfg Excute %d UID_LEN %d PWD_LEN %d CUR_CLASS %d Ver %d\n",\
|
||||
checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[3],checker_runcfg.Test_Rtv[2]);
|
||||
}
|
||||
else if(!rt_strcmp(argv[1], "CapVoltage")){
|
||||
checker_runcfg.rtv_count = 1;
|
||||
XT_Test_CapVoltage();
|
||||
printf("CheckPWD Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
|
||||
}else if(!rt_strcmp(argv[1], "BindUIDPWD")){
|
||||
|
||||
memcpy(us_array,argv[2],strlen(argv[2]));
|
||||
UidCode_YM2JQ(checker_runcfg.writeuid,(uint8_t*)us_array);
|
||||
|
||||
m_power = GetPasswordByUidCode((uint8_t*)us_array);
|
||||
memcpy(checker_runcfg.writepwd,(uint8_t*)&m_power ,4);
|
||||
|
||||
checker_runcfg.pwd_len = 4;
|
||||
checker_runcfg.uid_len = 8;
|
||||
XT_Test_UID_PWD_Bind();
|
||||
printf("BindUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "VerifyUIDPWD")){
|
||||
XT_Test_UID_PWD_Verify();
|
||||
printf("VerifyUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
|
||||
}
|
||||
|
||||
|
||||
else if(!rt_strcmp(argv[1], "SetHardVer")){
|
||||
HexStrings2Byte(argv+2,argc-2,(uint8_t*)(&boardinfo_un.boardinfo.hard_v),2);
|
||||
SaveBoardInfo();
|
||||
printf("SetHardVer %04x\n",boardinfo_un.boardinfo.hard_v);
|
||||
}else if(!rt_strcmp(argv[1], "SetRsisDiff")){
|
||||
boardinfo_un.boardinfo.resistor_diff = checker_runcfg.params[0];
|
||||
SaveBoardInfo();
|
||||
printf("SetRsisDiff %d\n",boardinfo_un.boardinfo.resistor_diff);
|
||||
}else if(!rt_strcmp(argv[1], "ReadBoard")){
|
||||
LoadBoardInfo();
|
||||
printf("BootFlag %08x HardVersion %02x RsistorDiff %d\n PlanID " ,\
|
||||
boardinfo_un.boardinfo.bootflag,boardinfo_un.boardinfo.hard_v,boardinfo_un.boardinfo.resistor_diff);
|
||||
}else if(!rt_strcmp(argv[1], "ExcuePlan")){
|
||||
Ye_RunPlanCheckTest();
|
||||
}else if(!rt_strcmp(argv[1], "CurMonitor")){
|
||||
XT_CurMonitor();
|
||||
printf("CurMonitor Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}else if(!rt_strcmp(argv[1], "VerfyShell")){
|
||||
XT_Test_VerfyShell();
|
||||
printf("VerfyShell Excute %d\n",checker_runcfg.Task_Result[0]);
|
||||
}
|
||||
|
||||
else{
|
||||
CH_help_label_:
|
||||
rt_kprintf("CH [ON | OFF | H | L ] \n");
|
||||
rt_kprintf("PowerPrapare [V1,V2,V3...V10] \n");
|
||||
rt_kprintf("PowerOn [Voltage] [TimeOut] [End_ADC_V] \n");
|
||||
rt_kprintf("SetBusV [Voltage] \n");
|
||||
rt_kprintf("BaseCur \n");
|
||||
rt_kprintf("ScanUID [UID_LEN] [E_UID_Equal_0]\n");
|
||||
rt_kprintf("WriteChipCfg [UID_LEN] [PWD_LEN] [FreeBack_Class] [Ver] \n");
|
||||
rt_kprintf("CheckChipCfg [UID_LEN] [PWD_LEN] [FreeBack_Class] [Ver] \n");
|
||||
rt_kprintf("BindTestCode \n");
|
||||
rt_kprintf("ChgEnergy [Vol_Class] [End_ADV] [End_Cur_0.1] [Wait_Timeout] [Chg_Hold]\n");
|
||||
rt_kprintf("WriteRunField [Net_ID] [Delay] [Local_Num]\n");
|
||||
rt_kprintf("CheckRunField [Net_ID] [Delay] [Local_Num] [En_Freebakc_0]\n");
|
||||
rt_kprintf("Resister \n");
|
||||
rt_kprintf("Cap [Chg_Class][Measure_Time]\n");
|
||||
rt_kprintf("WriteShell [Buf_Bg] [Len] \n");
|
||||
rt_kprintf("WaitDelay [Delay_0.1S] [En_Monitor] \n");
|
||||
rt_kprintf("WriteUID [Buf_Bg] [Len] \n");
|
||||
rt_kprintf("WritePWD [Buf_Bg] [Len]\n");
|
||||
rt_kprintf("CheckBackFlag [EN_1Checke_0Write] [2BytesMask] [2BytesData]\n");
|
||||
rt_kprintf("ReadBackFlag \n");
|
||||
rt_kprintf("Trim [Trim_Mode][Cycle][Count]\n");
|
||||
rt_kprintf("Discharge \n");
|
||||
rt_kprintf("EnCommEndCur \n");
|
||||
rt_kprintf("GetCommEndCur \n");
|
||||
rt_kprintf("OneLineCheck [NetID] [MaxNetId]\n");
|
||||
rt_kprintf("CheckState [StateMask] \n");
|
||||
rt_kprintf("Boom [Monitor_time]\n");
|
||||
rt_kprintf("Reset \n");
|
||||
rt_kprintf("PowerOFF \n");
|
||||
rt_kprintf("LockCmdC \n");
|
||||
rt_kprintf("CodeBindEn \n");
|
||||
rt_kprintf("InputCheck [BusVoltage][TimeOut_1ms]\n");
|
||||
rt_kprintf("CheckPWD \n");
|
||||
rt_kprintf("SetHardVer [HardVersion 2Bytes] \n");
|
||||
rt_kprintf("SetRsisDiff [RsistorDiff *100] \n");
|
||||
rt_kprintf("ReadBoardInfo \n");
|
||||
rt_kprintf("SetWriteBuf [HexData...]\n");
|
||||
rt_kprintf("ResistorSample [Test_Modle]\n");
|
||||
rt_kprintf("CapVoltage [WaitTime 0.1S]\n");
|
||||
rt_kprintf("BindUIDPWD [uid_str] \n");
|
||||
rt_kprintf("VerifyUIDPWD \n");
|
||||
rt_kprintf("OnlineScan [BusV][TimeOUt][UIDLen] \n");
|
||||
rt_kprintf("VerfyShell [buf_bg][len] \n");
|
||||
rt_kprintf("ExcuePlan \n");
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
MSH_CMD_EXPORT_ALIAS(XTCheckerTest ,XCH, XT CHecker );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user