第三代测试机编程手册  1.0
载入中...
搜索中...
未找到
预设文件介绍

工程结构说明

在下图路径中打开 .uvprojx 的文件即可

图中的dev_bin.exe是用于自动将app.h中的版本信息更新到bin文件名称的脚本文件,并非工程入口.

工程路径

工程目录如下图所示. 在这个工程中,所有平台运行代码都被封装到了lib中main.c中的代码会引导SDK运行,因此用户不能修改main.c中的内容,否则可能导致程序无法运行!

工程目录介绍

APP.H 解释

app.h

修改测试成功的bin值

app.h的开始会定义默认的成功情况下的bin值. 当所有参与测试的测试项通过之后, 会将该bin值上报.

#define SUCCESS_HBIN 1
#define SUCCESS_SBIN 1

测试程序版本号定义

  • TESTERAPP_VERSION 是指用户在上位机中配置的测试程序版本号.
  • SDK_VERSION 用户在上位机中设置的 SDK版本.
  • VECTOR_VERSION 用户在上位机中定义的向量版本.
//测试程序版本号
#define TESTERAPP_VERSION "V0.1"
#define SDK_VERSION "xf3-mb-mcu.zip"
#define VECTOR_VERSION "V0.1"
工程配置

APP.C 解释

测试初始化函数

为了方便用户对程序进行初始化操作.定义了下面三个函数.

  • USER_StartInit(void)

    该函数调用时机有以下几种情况

    1. 该函数在设备上电之后,不需要等到上位机的任何指令,直接调用一次.
    2. 更新MCU程序,导致MCU重启之后,会调用该函数(类似于第一种情况)
    3. 向量或者FPGA更新之后会改变设备状态,因此会调用一次该函数回复用户定义状态.
    4. 进行设备自检之后会改变设备状态,因此会调用一次该函数回复用户定义状态.

    用户可以在该函数中设置: 向量系统的相位, 设置TIO, DPS 等模块的初始状态, 进行其他的用户自定义的开机初始化操作.

  • USER_RunBeforeTest(void)

    在每一次开始测试流程之前会调用一次该函数. 用户可以在该函数中进行上一次测试之后的状态复位操作, 或者定义每一次开始测试之前的初始值.

  • USER_RunAfterTest(void)

    在每一次测试流程之后会调用一次该函数. 用户可以在该函数中复位本次测试之后的一些设备状态.

// 在测试开始之前,未初始化之前,只执行一次的初始化内容.
void USER_StartInit(void)
{
/*****USER CODE START*****/
/*****USER CODE END*****/
}
// 每次测试开始之前执行的内容,比如复位操作
void USER_RunBeforeTest(void)
{
/*****USER CODE START*****/
/*****USER CODE END*****/
}
// 每次测试之后执行的内容
void USER_RunAfterTest(void)
{
/*****USER CODE START*****/
/*****USER CODE END*****/
}

测试项函数介绍

测试项名称

app.c中会根据, 上位机中配置的每一个测试项的名称生成对应的函数. 函数名称为 " USER_测试项名称 " .例如下面代码的 uint8_t USER_OS_PMU(void)

TestResult_t USER_OS_PMU(void)
{
//预定义结果为失败,比对测试子项值之后修改结果
TestResult_t result = TEST_FAIL;
return result;
}

运行框架初始化介绍

该部分会将 app.c 和 app.h 中的一些信息和函数同步到SDK中以便运行!

void LPXSDK_AppInit(void)
{
Frame_SetTestAppVersion(TESTERAPP_VERSION); //设置版本号
Frame_SetTestSuccessBin(SUCCESS_HBIN,SUCCESS_SBIN); //设置成功软硬件bin
Frame_SetStartInitFunc(USER_StartInit); //设置开机之后,在测试开始之前,只执行一次的初始化内容
Frame_SetRunbeforeTestFunc(USER_RunBeforeTest); //设置开始测试之前运行的函数
Frame_SetRunAfterTestFunc(USER_RunAfterTest); //设置结束测试之后运行的函数
//设置测试项
Frame_AddTestItemFunc(USER_OS_PMU);
Frame_AddTestItemFunc(USER_OS_AVDD);
Frame_AddTestItemFunc(USER_FUN_ALL_5V);
Frame_AddTestItemFunc(USER_IOUT_510);
Frame_AddTestItemFunc(USER_IOUT_1P5K);
Frame_AddTestItemFunc(USER_SKEW_78);
Frame_AddTestItemFunc(USER_IOU_T_12K);
Frame_AddTestItemFunc(USER_IIH);
Frame_AddTestItemFunc(USER_FUN_UP);
Frame_AddTestItemFunc(USER_SDO_3P3V);
Frame_AddTestItemFunc(USER_IDD_REXT_OFF);
Frame_AddTestItemFunc(USER_OUT_DIO);
Frame_AddTestItemFunc(USER_LEAKAGE);
Frame_AddTestItemFunc(USER_BIN2);
//...
Frame_SetInitFlag(); //设置初始化标志,如果不设置则无法运行
}

注意:

  1. 用户不应该修改预定义的代码, 这会导致上位机无法获得正确的测试结果.
  2. 用户在使用测试资源, 测试项, 测试参数 时应该使用 .h 文件中定义的宏定义操作.

var.h 解释

内部资源宏定义

文件的第一部分为内部资源的宏定义, 对应上位机的资源配置界面

内部资源宏定义
资源配置

在调用TIO, CBIT等具有多通道的模块时,需要指定通道号. 资源分配就是管理这些通道号.

在使用内部资源(当前主板上的资源)时, 可以将这些资源宏定义当做是为通道号定义了一个方便理解的别名.

  • 例如:有cbit 的 pin16 ,该pin在硬件上的功能被设计为 "控制连接芯片的OUT脚接上拉电阻" . 在上位机中分配资源的时候可以为该 pin 取名为 OUT_Up.

    在调用资源时,代码可以写作:

    CBIT_ConfigAndOutput(OUT_Up,CBIT_ON);
    void CBIT_ConfigAndOutput(uint8_t pin, uint8_t value)
    配置CBIT状态后直接输出
资源项介绍

外部资源结构体类型

外部资源: 是指非当前测试主板上的资源. 比如测试主板上没有高压模块, 如果要使用高压模块, 就需要使用外部资源的调用方式进行访问.

如果当前没有使用外部资源, 结构体类型中将没有内容.

外部资源结构体定义

测试项结构体

ItemParam_t 结构体中定义了每个测试项的基本属性.

Item_t 结构体中, 根据上位机配置的测试项, 生成了每个测试项的访问入口.

测试项结构体

对应上位机中的内容

测试项配置

测试参数(测试子项)结构体

分为三层: 测试参数汇总, 测试项参数, 测试参数单元

图中的 OS_PMU_t是针对 OS_PMU这一项的测试参数生成的相关结构体

测试参数汇总结构体

在上位机中,OS_PMU 的测试参数内容如下:

测试子项配置

因此生成的OS_PMU_t 的结构体如下:

测试参数结构体

其他测试项类似.

SubItemParam_t 结构体定义了, 每一个测试参数的内容

SubItemParam_t

常量结构体

在上位机中可以设置一些常量

常量配置

将会根据常量的内容, 在下面结构体中增加内容

image-20230922120533817

访问入口

在文件的最后, 定义了用户可以访问到 var.h 中数据的入口.

  • vExitRes : 外部资源访问接口
  • vItem : 测试项信息访问接口
  • vSubItem : 测试参数信息访问接口
  • vConst : 常量访问接口

其中只有 vSubItem 是可读可写接口, 允许用户修改其中的值. 其他三个均为只信息.

访问接口

具体的调用方式请参考: 参数调用示例

var.c 解释

该文件中定义了 var.h 中类型的变量, 并预留出访问接口.

var.c