Files
Frame-rate-optimization/App/app_math_info.h

122 lines
4.0 KiB
C
Raw Normal View History

2026-04-09 10:14:20 +08:00
#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<73><68>С
#define ARRAY_RESI_INIT_PARAMS_LEN 6 //<2F><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
#define DEFAULT_MIN_DISPLAY_VALUE 0 // Ĭ<><C4AC><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ʾֵ
#define DEFAULT_MAX_DISPLAY_VALUE 255 // Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾֵ
#define MAX_ADC_VALUE 4095 // ADC<44><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>12λADC<44><43>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>Ĭ<EFBFBD><C4AC>ֵ
#define DEFAULT_MIN_RESI_INIT_VALUE 2100 // Ĭ<><C4AC><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼֵ
#define DEFAULT_MAX_RESI_INIT_VALUE 25000 // Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼֵ
#define DEFAULT_DIVID_RESI_VALUE 2700 // Ĭ<>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>ѹֵ
#define MAX_BUF_SIZE (CALI_POINT_NUM * AX_NUM * AY_NUM)
#define ARRAY_RESI_INIT_PARAMS_ADDRS 0x0800B800
// ֡ͷ<D6A1><CDB7>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͬ<D6A1><CDAC><EFBFBD><EFBFBD>
#define HEAD 0xA55A
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ܵĴ<DCB5><C4B4><EFBFBD>֡<EFBFBD><D6A1>
#define ARRAY_RESI_INIT_TRAN_TYPE 0x04 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ARRAY_RESI_VALUE_RETURN_CMD 0x2F // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INIT_RESI_WRITE_CMD 0x3F // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INIT_RESI_SAVE_CMD 0x3D // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define INIT_RESI_CLEAR_CMD 0x1A // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SINGLE_RESI_CALI_TRAN_TYPE 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SINGLE_CALI_RESI_WRITE_CMD 0x3F // <20><><EFBFBD><EFBFBD>У׼<D0A3><D7BC><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SINGLE_CALI_RESI_SAVE_CMD 0x3D // <20><><EFBFBD><EFBFBD>У׼<D0A3><D7BC><EFBFBD><EFBFBD><E8B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CALI_RESI_VALUE_RETURN_CMD 0x2F // У׼<D0A3><D7BC><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SINGLE_CALI_RESI_CLEAR_CMD 0x1A // <20><><EFBFBD><EFBFBD>У׼<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>֡״̬
extern uint8_t cali_frame_state;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼ָ<D7BC><D6B8>֡״̬
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>ģʽö<CABD>٣<EFBFBD><D9A3><EFBFBD><EFBFBD>ڱ<EFBFBD>ʶ<EFBFBD><CAB6>ʼ<EFBFBD><CABC>״̬<D7B4><CCAC>
typedef enum{
STATE = 0x73, // ״̬ģʽ<C4A3><CABD>0x73<37><33>'s'<27><>ASCII<49>
DATA = 0x64, // <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>0x64<36><34>'d'<27><>ASCII<49>
}ARRAY_RESI_INIT_MODE_TYPE_T;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼ģʽö<CABD>٣<EFBFBD><D9A3><EFBFBD><EFBFBD>ڱ<EFBFBD>ʶУ׼״̬<D7B4><CCAC>
typedef enum{
CALI_SUCCESS = 0x01, // У׼<D0A3>ɹ<EFBFBD>
CALI_FAIL = 0x02, // У׼ʧ<D7BC><CAA7>
CALI_INIT = 0x00, // У׼<D0A3><D7BC>ʼ״̬
CALI_RETURN = 0x4F, // У׼<D0A3><D7BC><EFBFBD>أ<EFBFBD>0x4F<34><46>'O'<27><>ASCII<49>
}ARRAY_RESI_CALI_MODE_TYPE_T;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼<D0A3><D7BC><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD>֡<EFBFBD>
typedef struct{
uint16_t sof; // ֡ͷ
uint8_t tran_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t len; // <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
uint8_t mode; // У׼ģʽ
uint8_t cali_params[3 * AX_NUM * AY_NUM]; // У׼<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>Y<EFBFBD>
uint16_t checksum; // У<><D0A3><EFBFBD><EFBFBD>
}ARRAY_RESI_CALI_DATA_RETURN_SERIAL_FRAME_T;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>ģʽ
void set_array_resi_init_mode_type(ARRAY_RESI_INIT_MODE_TYPE_T state);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>ģʽ
ARRAY_RESI_INIT_MODE_TYPE_T get_resi_array_init_mode_type(void);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ϣ
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); // <20><> ͷ<>ļ<EFBFBD><C4BC><EFBFBD> void<69><64>Դ<EFBFBD>ļ<EFBFBD>д<EFBFBD><D0B4> uint8_t
void cali_params_return(void *buf);
#endif