122 lines
4.0 KiB
C
122 lines
4.0 KiB
C
#ifndef __APP_MATH_INFO_H
|
||
#define __APP_MATH_INFO_H
|
||
#include "at32a423.h"
|
||
#include "at32a423_clock.h"
|
||
#include "systick.h"
|
||
#include "sysconfig.h"
|
||
#include "main.h"
|
||
|
||
#include "bsp_flash.h"
|
||
|
||
#include "bsp_uart.h"
|
||
|
||
#include "string.h"
|
||
#include "stdint.h"
|
||
|
||
#include "mx_frame_core.h"
|
||
#include "mx_serial.h"
|
||
#include "cali_process.h"
|
||
#include "resi_math_lib.h"
|
||
|
||
#define CALI_POINT_NUM 3
|
||
#define SINGLE_MATH_CALI_PARAMS_PARAMS_SECTOR_SIZE 1 // flash大小
|
||
#define ARRAY_RESI_INIT_PARAMS_LEN 6 //单片机返回给上位机的数据信息
|
||
|
||
// 显示相关默认值
|
||
#define DEFAULT_MIN_DISPLAY_VALUE 0 // 默认最小显示值
|
||
#define DEFAULT_MAX_DISPLAY_VALUE 255 // 默认最大显示值
|
||
#define MAX_ADC_VALUE 4095 // ADC最大采样值(12位ADC)
|
||
|
||
// 电阻初始化默认值
|
||
#define DEFAULT_MIN_RESI_INIT_VALUE 2100 // 默认最小电阻初始值
|
||
#define DEFAULT_MAX_RESI_INIT_VALUE 25000 // 默认最大电阻初始值
|
||
#define DEFAULT_DIVID_RESI_VALUE 2700 // 默认电阻分压值
|
||
|
||
|
||
|
||
#define MAX_BUF_SIZE (CALI_POINT_NUM * AX_NUM * AY_NUM)
|
||
|
||
|
||
#define ARRAY_RESI_INIT_PARAMS_ADDRS 0x0800B800
|
||
|
||
// 帧头标识(用于串口数据帧同步)
|
||
#define HEAD 0xA55A
|
||
|
||
// 传输类型和命令定义(用于区分不同功能的串口帧)
|
||
#define ARRAY_RESI_INIT_TRAN_TYPE 0x04 // 电阻阵列初始化传输类型
|
||
#define ARRAY_RESI_VALUE_RETURN_CMD 0x2F // 电阻值返回命令
|
||
#define INIT_RESI_WRITE_CMD 0x3F // 初始化电阻写入命令
|
||
#define INIT_RESI_SAVE_CMD 0x3D // 初始化电阻保存命令
|
||
#define INIT_RESI_CLEAR_CMD 0x1A // 初始化电阻清除命令
|
||
|
||
#define SINGLE_RESI_CALI_TRAN_TYPE 0x03 // 单个电阻校准传输类型
|
||
#define SINGLE_CALI_RESI_WRITE_CMD 0x3F // 单个校准电阻写入命令
|
||
#define SINGLE_CALI_RESI_SAVE_CMD 0x3D // 单个校准电阻保存命令
|
||
#define CALI_RESI_VALUE_RETURN_CMD 0x2F // 校准电阻值返回命令
|
||
#define SINGLE_CALI_RESI_CLEAR_CMD 0x1A // 单个校准电阻清除命令
|
||
|
||
|
||
|
||
extern uint8_t array_resi_init_params_read_buf[MAX_BUF_SIZE];
|
||
extern uint8_t array_resi_init_params_write_buf[MAX_BUF_SIZE];
|
||
|
||
extern uint8_t array_resi_cali_params_write_buf[MAX_BUF_SIZE];
|
||
extern uint8_t array_resi_cali_params_read_buf[MAX_BUF_SIZE];
|
||
|
||
extern uint8_t success_protocal[ARRAY_RESI_INIT_PARAMS_LEN];
|
||
extern uint8_t fail_protocal[ARRAY_RESI_INIT_PARAMS_LEN];
|
||
|
||
//extern uint8_t success_protocal[ARRAY_RESI_INIT_PARAMS_LEN];
|
||
//extern uint8_t fail_protocal[ARRAY_RESI_INIT_PARAMS_LEN];
|
||
|
||
extern uint8_t frame_state;//电阻阵列指令帧状态
|
||
extern uint8_t cali_frame_state;//单个电阻校准指令帧状态
|
||
|
||
// 电阻阵列初始化模式枚举(用于标识初始化状态)
|
||
typedef enum{
|
||
STATE = 0x73, // 状态模式(0x73是's'的ASCII码)
|
||
DATA = 0x64, // 数据模式(0x64是'd'的ASCII码)
|
||
}ARRAY_RESI_INIT_MODE_TYPE_T;
|
||
|
||
// 电阻阵列校准模式枚举(用于标识校准状态)
|
||
typedef enum{
|
||
CALI_SUCCESS = 0x01, // 校准成功
|
||
CALI_FAIL = 0x02, // 校准失败
|
||
CALI_INIT = 0x00, // 校准初始状态
|
||
CALI_RETURN = 0x4F, // 校准返回(0x4F是'O'的ASCII码)
|
||
}ARRAY_RESI_CALI_MODE_TYPE_T;
|
||
|
||
|
||
|
||
// 电阻阵列校准数据返回帧结构
|
||
typedef struct{
|
||
uint16_t sof; // 帧头
|
||
uint8_t tran_type; // 传输类型
|
||
uint16_t len; // 数据长度
|
||
uint8_t mode; // 校准模式
|
||
uint8_t cali_params[3 * AX_NUM * AY_NUM]; // 校准参数(3个点×X轴×Y轴)
|
||
uint16_t checksum; // 校验和
|
||
}ARRAY_RESI_CALI_DATA_RETURN_SERIAL_FRAME_T;
|
||
|
||
// 函数声明:设置电阻阵列初始化模式
|
||
void set_array_resi_init_mode_type(ARRAY_RESI_INIT_MODE_TYPE_T state);
|
||
// 函数声明:获取电阻阵列初始化模式
|
||
ARRAY_RESI_INIT_MODE_TYPE_T get_resi_array_init_mode_type(void);
|
||
|
||
// 函数声明:返回电阻阵列初始化信息
|
||
uint8_t return_array_resi_init_info(void *buf);
|
||
|
||
void set_array_resi_cali_mode_type(ARRAY_RESI_CALI_MODE_TYPE_T state);
|
||
|
||
ARRAY_RESI_CALI_MODE_TYPE_T get_resi_array_cali_mode_type(void);
|
||
|
||
uint8_t array_resi_params_write(mx_frame_struct *buf);
|
||
uint8_t array_resi_params_save(void *buf);
|
||
uint8_t clear_array_init_info(void *buf);
|
||
void math_resi_array_cali_write(void *buf);
|
||
void math_resi_array_cali_save(void *buf);
|
||
uint8_t cali_params_clear(void *buf); // ← 头文件是 void,源文件写成 uint8_t
|
||
void cali_params_return(void *buf);
|
||
|
||
#endif
|