第一次提交
This commit is contained in:
398
App/app_math_info.c
Normal file
398
App/app_math_info.c
Normal file
@@ -0,0 +1,398 @@
|
||||
#include "app_math_info.h"
|
||||
|
||||
uint8_t frame_state =0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>֡״̬
|
||||
uint8_t cali_frame_state =0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Уָ<D7BC><D6B8>֡״̬
|
||||
|
||||
// ȫ<>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ģʽ<C4A3><CABD>Ĭ<EFBFBD><C4AC>״̬ģʽ<C4A3><CABD>
|
||||
ARRAY_RESI_INIT_MODE_TYPE_T resi_init_mode = STATE;
|
||||
|
||||
// ȫ<>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Уģʽ<C4A3><CABD>Ĭ<EFBFBD>ϳ<EFBFBD>ʼ״̬<D7B4><CCAC>
|
||||
ARRAY_RESI_CALI_MODE_TYPE_T resi_cali_mode = CALI_INIT;
|
||||
|
||||
uint8_t array_resi_init_params_read_buf[MAX_BUF_SIZE] = {0};
|
||||
uint8_t array_resi_init_params_write_buf[MAX_BUF_SIZE] = {0};
|
||||
|
||||
|
||||
|
||||
// У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>Y<EFBFBD>ᣩ
|
||||
uint8_t cali_adc_params[CALI_POINT_NUM * AX_NUM * AY_NUM] = {0};
|
||||
|
||||
// ȫ<>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t array_resi_cali_params_write_buf[MAX_BUF_SIZE] = {0};
|
||||
uint8_t array_resi_cali_params_read_buf[MAX_BUF_SIZE] = {0};
|
||||
|
||||
uint8_t success_protocal[ARRAY_RESI_INIT_PARAMS_LEN] = {0x6F,0x6F,0x6F,0x6B,0x6B,0x6B};
|
||||
uint8_t fail_protocal[ARRAY_RESI_INIT_PARAMS_LEN] = {0x6E,0x6E,0x6E,0x6F,0x6F,0x6F};
|
||||
//static uint8_t static_protocal[ARRAY_RESI_INIT_PARAMS_LEN] = {0};
|
||||
//extern uint8_t adc_read_sw;
|
||||
/**
|
||||
* <20><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>ģʽ
|
||||
* @param state<74><65>ģʽ<C4A3><CABD>STATE/DATA<54><41>
|
||||
*/
|
||||
void set_array_resi_init_mode_type(ARRAY_RESI_INIT_MODE_TYPE_T state)
|
||||
{
|
||||
resi_init_mode = state;
|
||||
}
|
||||
|
||||
/**
|
||||
* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>ģʽ
|
||||
* @return <20><>ǰģʽ
|
||||
*/
|
||||
ARRAY_RESI_INIT_MODE_TYPE_T get_resi_array_init_mode_type(void)
|
||||
{
|
||||
return resi_init_mode;
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Уģʽ
|
||||
* @param state<74><65>ģʽ<C4A3><CABD>CALI_SUCCESS/CALI_FAIL<49>ȣ<EFBFBD>
|
||||
*/
|
||||
void set_array_resi_cali_mode_type(ARRAY_RESI_CALI_MODE_TYPE_T state)
|
||||
{
|
||||
resi_cali_mode = state;
|
||||
}
|
||||
|
||||
/**
|
||||
* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Уģʽ
|
||||
* @return <20><>ǰģʽ
|
||||
*/
|
||||
ARRAY_RESI_CALI_MODE_TYPE_T get_resi_array_cali_mode_type(void)
|
||||
{
|
||||
return resi_cali_mode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
uint8_t array_resi_params_write(mx_frame_struct *buf)
|
||||
{
|
||||
mx_frame_struct frame;
|
||||
|
||||
// 1. <20><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16_t min_resi = (buf->data[1] << 8) | buf->data[0];
|
||||
uint16_t max_resi = (buf->data[3] << 8) | buf->data[2];
|
||||
uint16_t ref_resi = (buf->data[5] << 8) | buf->data[4];
|
||||
|
||||
//printf("min_resi is %d, %d %d\n",min_resi,max_resi,ref_resi);
|
||||
// 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
|
||||
if(min_resi >= max_resi) {
|
||||
frame.trantype = 0x04;
|
||||
set_array_resi_init_mode_type(STATE);
|
||||
frame.type = get_resi_array_init_mode_type();
|
||||
frame.data = fail_protocal;
|
||||
frame.datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR, &frame);
|
||||
return 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
||||
}
|
||||
|
||||
// 3. ? <20><><EFBFBD>µ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棩
|
||||
g_sys_config.min_trigger_res_value = min_resi;
|
||||
g_sys_config.max_trigger_res_value = max_resi;
|
||||
g_sys_config.div_trigger_res = ref_resi;
|
||||
|
||||
// 4. Ӧ<>õ<EFBFBD><C3B5><EFBFBD>ѧ<EFBFBD><D1A7>
|
||||
// math_resi_init(max_resi, min_resi, ref_resi, MAX_ADC_VALUE, DEFAULT_MAX_DISPLAY_VALUE);
|
||||
// min_trigger_res_value1
|
||||
math_resi_init(g_sys_config.max_trigger_res_value, g_sys_config.min_trigger_res_value, g_sys_config.div_trigger_res, 4096, 255);
|
||||
|
||||
// 5. <20><><EFBFBD>ͳɹ<CDB3>Ӧ<EFBFBD><D3A6>
|
||||
frame.trantype = 0x04;
|
||||
set_array_resi_init_mode_type(DATA);
|
||||
frame.type = get_resi_array_init_mode_type();
|
||||
frame.data = success_protocal;
|
||||
frame.datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR, &frame);
|
||||
|
||||
return 1; // <20>ɹ<EFBFBD>
|
||||
}
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Flash
|
||||
* @brief <20><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2>־û<D6BE><C3BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
uint8_t array_resi_params_save(void *buf)
|
||||
{
|
||||
mx_frame_struct *frame = (mx_frame_struct *)buf;
|
||||
// 1. <20><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
static uint16_t min_resi=0;
|
||||
static uint16_t max_resi=0;
|
||||
static uint16_t ref_resi=0;
|
||||
min_resi = (frame->data[1] << 8) | frame->data[0];
|
||||
max_resi = (frame->data[3] << 8) | frame->data[2];
|
||||
ref_resi = (frame->data[5] << 8) | frame->data[4];
|
||||
//printf("%d, %d %d\n",min_resi,max_resi,ref_resi);
|
||||
// 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
|
||||
if(min_resi > max_resi) {
|
||||
frame->trantype = 0x04;
|
||||
set_array_resi_init_mode_type(STATE);
|
||||
frame->type = get_resi_array_init_mode_type();
|
||||
frame->data = fail_protocal;
|
||||
frame->datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
|
||||
}
|
||||
|
||||
// 3. ? <20><><EFBFBD>µ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
g_sys_config.min_trigger_res_value = min_resi;
|
||||
g_sys_config.max_trigger_res_value = max_resi;
|
||||
g_sys_config.div_trigger_res = ref_resi;
|
||||
|
||||
// 4. <20><><EFBFBD>浽Flash<73><68>ʹ<EFBFBD><CAB9>ͳһ<CDB3>ӿڣ<D3BF>
|
||||
if(save_sys_config(&g_sys_config) != 0) {
|
||||
frame->trantype = 0x04;
|
||||
set_array_resi_init_mode_type(STATE);
|
||||
frame->type = get_resi_array_init_mode_type();
|
||||
frame->data = fail_protocal;
|
||||
frame->datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
}
|
||||
|
||||
delay_ms(5); // <20>ȴ<EFBFBD>Flashд<68><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// 5.<2E><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if(load_config_params(&g_flash_para) == 1) {
|
||||
// <20><>֤<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>²<EFBFBD><C2B2><EFBFBD>
|
||||
// math_resi_init(max_resi, min_resi, ref_resi, MAX_ADC_VALUE, DEFAULT_MAX_DISPLAY_VALUE);
|
||||
math_resi_init(g_sys_config.max_trigger_res_value, g_sys_config.min_trigger_res_value, g_sys_config.div_trigger_res, 4096, 255);
|
||||
|
||||
frame->trantype = 0x04;
|
||||
set_array_resi_init_mode_type(STATE);
|
||||
frame->type = get_resi_array_init_mode_type();
|
||||
frame->data = success_protocal;
|
||||
frame->datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
frame->trantype = 0x04;
|
||||
set_array_resi_init_mode_type(STATE);
|
||||
frame->type = get_resi_array_init_mode_type();
|
||||
frame->data = fail_protocal;
|
||||
frame->datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5>
|
||||
* @brief <20><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD>ָ<EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
uint8_t clear_array_init_info(void *buf)
|
||||
{
|
||||
mx_frame_struct *frame = (mx_frame_struct *)buf;
|
||||
|
||||
// 1. ? <><D7BC>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> default_config <20><>ȡ<EFBFBD><C8A1>
|
||||
uint8_t temp_data[6];
|
||||
temp_data[0] = default_config.min_trigger_res_value & 0xFF;
|
||||
temp_data[1] = (default_config.min_trigger_res_value >> 8) & 0xFF;
|
||||
temp_data[2] = default_config.max_trigger_res_value & 0xFF;
|
||||
temp_data[3] = (default_config.max_trigger_res_value >> 8) & 0xFF;
|
||||
temp_data[4] = default_config.div_trigger_res & 0xFF;
|
||||
temp_data[5] = (default_config.div_trigger_res >> 8) & 0xFF;
|
||||
|
||||
// 2. <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> frame->data <20><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD> array_resi_params_write
|
||||
frame->data = temp_data;
|
||||
array_resi_params_write(frame); // Ӧ<><D3A6>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
|
||||
|
||||
// 3. ? <20><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD>ã<EFBFBD>ʹ<EFBFBD>õײ<C3B5><D7B2>ӿڣ<D3BF>
|
||||
flash_erase(FMC_WRITE_START_ADDR);
|
||||
|
||||
// 4. <20><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>
|
||||
uint16_t verify_buf[3];
|
||||
flash_read(FMC_WRITE_START_ADDR, verify_buf, 3);
|
||||
|
||||
frame->trantype = 0x04;
|
||||
set_array_resi_init_mode_type(STATE);
|
||||
frame->type = get_resi_array_init_mode_type();
|
||||
|
||||
if(verify_buf[0] == 0xFFFF && verify_buf[1] == 0xFFFF && verify_buf[2] == 0xFFFF) {
|
||||
frame->data = success_protocal;
|
||||
frame->datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
return 1; // <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||
}
|
||||
else {
|
||||
frame->data = fail_protocal;
|
||||
frame->datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
return 0; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD>ص<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
*/
|
||||
uint8_t return_array_resi_init_info(void *buf)
|
||||
{
|
||||
mx_frame_struct *frame = (mx_frame_struct *)buf;
|
||||
|
||||
// 1. ? <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD> g_sys_config <20><>ȡ<EFBFBD><C8A1>
|
||||
static uint8_t response_data[6];
|
||||
response_data[0] = g_sys_config.min_trigger_res_value & 0xFF;
|
||||
response_data[1] = (g_sys_config.min_trigger_res_value >> 8) & 0xFF;
|
||||
response_data[2] = g_sys_config.max_trigger_res_value & 0xFF;
|
||||
response_data[3] = (g_sys_config.max_trigger_res_value >> 8) & 0xFF;
|
||||
response_data[4] = g_sys_config.div_trigger_res & 0xFF;
|
||||
response_data[5] = (g_sys_config.div_trigger_res >> 8) & 0xFF;
|
||||
|
||||
// 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
set_array_resi_init_mode_type(DATA);
|
||||
frame->trantype = 0x04;
|
||||
frame->type = get_resi_array_init_mode_type();
|
||||
frame->data = response_data;
|
||||
frame->datalen = ARRAY_RESI_INIT_PARAMS_LEN;
|
||||
mx_serial_tx_frame(USART_3_TR,frame);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/**
|
||||
* @brief д<><D0B4>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱӦ<CAB1>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浽Flash<73><68>
|
||||
* @param buf Э<><D0AD>ָ֡<D6A1><D6B8>
|
||||
*/
|
||||
void math_resi_array_cali_write(void *buf)
|
||||
{
|
||||
mx_frame_struct *frame = (mx_frame_struct *)buf;
|
||||
uint8_t empty_data = 0;
|
||||
|
||||
// 1. ? ֱ<>Ӹ<EFBFBD><D3B8>Ƶ<EFBFBD>map_sys<79><73>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(frame->datalen == ((CALI_POINT_NUM * AX_NUM*AY_NUM)+ 6)){
|
||||
memcpy(map_sys.map_matrix, frame->data, CALI_POINT_NUM * AX_NUM*AY_NUM);
|
||||
set_array_resi_cali_mode_type(CALI_SUCCESS);
|
||||
}
|
||||
else {
|
||||
set_array_resi_cali_mode_type(CALI_FAIL);
|
||||
}
|
||||
|
||||
// 2. <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
|
||||
frame->trantype = 0x03;
|
||||
frame->type = get_resi_array_cali_mode_type();
|
||||
frame->data = &empty_data;
|
||||
frame->datalen = 1;
|
||||
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Flash
|
||||
* @param buf Э<><D0AD>ָ֡<D6A1><D6B8>
|
||||
*/
|
||||
void math_resi_array_cali_save(void *buf)
|
||||
{
|
||||
mx_frame_struct *frame = (mx_frame_struct *)buf;
|
||||
uint8_t empty_data = 0;
|
||||
flash_map_struct verify_map;
|
||||
|
||||
// 1. ? <20><><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD>ݵ<EFBFBD>map_sys
|
||||
if(frame->datalen != ((CALI_POINT_NUM * AX_NUM*AY_NUM)+6)) {
|
||||
set_array_resi_cali_mode_type(CALI_FAIL);
|
||||
goto send_response;
|
||||
}
|
||||
|
||||
memcpy(map_sys.map_matrix, frame->data, CALI_POINT_NUM * AX_NUM*AY_NUM);
|
||||
|
||||
// 2. <20><><EFBFBD><EFBFBD>FlashУ<D0A3><D7BC><EFBFBD><EFBFBD>
|
||||
flash_erase(FMC_WRITE_MAP_ADDR);
|
||||
|
||||
// 3. ʹ<><CAB9>ͳһ<CDB3>ӿڱ<D3BF><DAB1>浽Flash
|
||||
if(save_config_maps(&map_sys) != 0) {
|
||||
set_array_resi_cali_mode_type(CALI_FAIL);
|
||||
goto send_response;
|
||||
}
|
||||
|
||||
delay_ms(2); // <20>ȴ<EFBFBD>Flashд<68><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// 4. <20><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ز<EFBFBD><D8B2>ȶ<EFBFBD>
|
||||
if(load_config_maps(&verify_map) != 1) {
|
||||
set_array_resi_cali_mode_type(CALI_FAIL);
|
||||
goto send_response;
|
||||
}
|
||||
|
||||
// 5. <20><>֤<EFBFBD>ؼ<EFBFBD>У<D0A3>㣨ǰ3<C7B0><33>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7B8>㣩
|
||||
if(verify_map.map_matrix[0] != 0xFF &&
|
||||
verify_map.map_matrix[AX_NUM*AY_NUM] != 0xFF &&
|
||||
verify_map.map_matrix[2 * AX_NUM*AY_NUM] != 0xFF) {
|
||||
set_array_resi_cali_mode_type(CALI_SUCCESS);
|
||||
}
|
||||
else {
|
||||
set_array_resi_cali_mode_type(CALI_FAIL);
|
||||
}
|
||||
|
||||
send_response:
|
||||
// 6. <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
|
||||
|
||||
frame->trantype = 0x03;
|
||||
frame->type = get_resi_array_cali_mode_type();
|
||||
frame->data = &empty_data;
|
||||
frame->datalen = 1;
|
||||
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>Ĭ<EFBFBD><C4AC>ӳ<EFBFBD>䣩
|
||||
* @param buf Э<><D0AD>ָ֡<D6A1><D6B8>
|
||||
* @return 1=<3D>ɹ<EFBFBD>, 0=ʧ<><CAA7>
|
||||
*/
|
||||
uint8_t cali_params_clear(void *buf)
|
||||
{
|
||||
mx_frame_struct *frame = (mx_frame_struct *)buf;
|
||||
uint8_t empty_data = 0;
|
||||
uint16_t verify_buf[3];
|
||||
|
||||
frame->trantype = 0x03;
|
||||
frame->data = &empty_data;
|
||||
frame->datalen = 1;
|
||||
|
||||
// 1. ? <20><><EFBFBD><EFBFBD>FlashУ<D0A3><D7BC><EFBFBD><EFBFBD>
|
||||
flash_erase(FMC_WRITE_MAP_ADDR);
|
||||
memset(map_sys.map_matrix, 0, sizeof(map_sys.map_matrix));
|
||||
// 2. ? <20><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡǰ3<C7B0><33><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>
|
||||
flash_read(FMC_WRITE_MAP_ADDR, verify_buf, 3);
|
||||
|
||||
if(verify_buf[0] == 0xFFFF && verify_buf[1] == 0xFFFF && verify_buf[2] == 0xFFFF) {
|
||||
// 3. ? <20><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>ָ<EFBFBD>Ĭ<EFBFBD><C4AC>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RAM
|
||||
|
||||
memcpy(map_matrix_init, map_sys.map_matrix, sizeof(map_matrix_init));
|
||||
|
||||
set_array_resi_cali_mode_type(CALI_SUCCESS);
|
||||
frame->type = get_resi_array_cali_mode_type();
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
set_array_resi_cali_mode_type(CALI_FAIL);
|
||||
frame->type = get_resi_array_cali_mode_type();
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ص<EFBFBD>ǰУ<D0A3><D7BC><EFBFBD><EFBFBD>
|
||||
* @param buf Э<><D0AD>ָ֡<D6A1><D6B8>
|
||||
*/
|
||||
void cali_params_return(void *buf)
|
||||
{
|
||||
mx_frame_struct *frame = (mx_frame_struct *)buf;
|
||||
|
||||
frame->trantype = 0x03;
|
||||
set_array_resi_cali_mode_type(CALI_RETURN);
|
||||
frame->type = get_resi_array_cali_mode_type();
|
||||
|
||||
|
||||
frame->data = map_sys.map_matrix;
|
||||
frame->datalen = CALI_POINT_NUM * AX_NUM * AY_NUM;
|
||||
|
||||
mx_serial_tx_frame(USART_3_TR, frame);
|
||||
}
|
||||
Reference in New Issue
Block a user