diff --git a/App/Inc/frt_protocol.h b/App/Inc/frt_protocol.h index a0f6a57..152e34f 100644 --- a/App/Inc/frt_protocol.h +++ b/App/Inc/frt_protocol.h @@ -58,32 +58,33 @@ typedef enum FRT_REGISTER_COEFFICIENT = 34, /* 粘度修正系数 */ FRT_REGISTER_DISTANCE_NS = 35, /* 南北换能器表面距离 */ FRT_REGISTER_DISTANCE_WE = 36, /* 东西换能器表面距离 */ - FRT_REGISTER_ERROR_LOG = 37, /* 错误日志 */ - FRT_REGISTER_WIND_C_NS = 38, /* 计算得到的南北风速 */ - FRT_REGISTER_WIND_C_WE = 39, /* 计算得到的东西风速 */ - FRT_REGISTER_LINEAR_POINT_X_1 = 40, /* 线性插值原始点1 */ - FRT_REGISTER_LINEAR_POINT_X_2 = 41, /* 线性插值原始点2 */ - FRT_REGISTER_LINEAR_POINT_X_3 = 42, /* 线性插值原始点3 */ - FRT_REGISTER_LINEAR_POINT_X_4 = 43, /* 线性插值原始点4 */ - FRT_REGISTER_LINEAR_POINT_X_5 = 44, /* 线性插值原始点5 */ - FRT_REGISTER_LINEAR_POINT_Y_1 = 45, /* 线性插值校准点1 */ - FRT_REGISTER_LINEAR_POINT_Y_2 = 46, /* 线性插值校准点2 */ - FRT_REGISTER_LINEAR_POINT_Y_3 = 47, /* 线性插值校准点3 */ - FRT_REGISTER_LINEAR_POINT_Y_4 = 48, /* 线性插值校准点4 */ - FRT_REGISTER_LINEAR_POINT_Y_5 = 49, /* 线性插值校准点5 */ - FRT_REGISTER_LINEAR_ENABLE = 50, /* 线性插值使能 */ - FRT_REGISTER_MAX_WAVE_1 = 51, /* 换能器最大波形 */ - FRT_REGISTER_MAX_WAVE_2 = 52, /* 换能器最大波形 */ - FRT_REGISTER_MAX_WAVE_3 = 53, /* 换能器最大波形 */ - FRT_REGISTER_MAX_WAVE_4 = 54, /* 换能器最大波形 */ - FRT_REGISTER_ID_1 = 55, /* ID16 */ - FRT_REGISTER_ID_2 = 56, /* ID32 */ - FRT_REGISTER_ID_3 = 57, /* ID48 */ - FRT_REGISTER_ID_4 = 58, /* ID64 */ - FRT_REGISTER_ENCRYPT_1 = 59, /* 密文16 */ - FRT_REGISTER_ENCRYPT_2 = 60, /* 密文32 */ - FRT_REGISTER_ENCRYPT_3 = 61, /* 密文48 */ - FRT_REGISTER_ENCRYPT_4 = 62, /* 密文64 */ + FRT_REGISTER_ANEMOMETER_DELAY = 37, /* 换能器匹配层延时 */ + FRT_REGISTER_ERROR_LOG = 38, /* 错误日志 */ + FRT_REGISTER_WIND_C_NS = 39, /* 计算得到的南北风速 */ + FRT_REGISTER_WIND_C_WE = 40, /* 计算得到的东西风速 */ + FRT_REGISTER_LINEAR_POINT_X_1 = 41, /* 线性插值原始点1 */ + FRT_REGISTER_LINEAR_POINT_X_2 = 42, /* 线性插值原始点2 */ + FRT_REGISTER_LINEAR_POINT_X_3 = 43, /* 线性插值原始点3 */ + FRT_REGISTER_LINEAR_POINT_X_4 = 44, /* 线性插值原始点4 */ + FRT_REGISTER_LINEAR_POINT_X_5 = 45, /* 线性插值原始点5 */ + FRT_REGISTER_LINEAR_POINT_Y_1 = 46, /* 线性插值校准点1 */ + FRT_REGISTER_LINEAR_POINT_Y_2 = 47, /* 线性插值校准点2 */ + FRT_REGISTER_LINEAR_POINT_Y_3 = 48, /* 线性插值校准点3 */ + FRT_REGISTER_LINEAR_POINT_Y_4 = 49, /* 线性插值校准点4 */ + FRT_REGISTER_LINEAR_POINT_Y_5 = 50, /* 线性插值校准点5 */ + FRT_REGISTER_LINEAR_ENABLE = 51, /* 线性插值使能 */ + FRT_REGISTER_MAX_WAVE_1 = 52, /* 换能器最大波形 */ + FRT_REGISTER_MAX_WAVE_2 = 53, /* 换能器最大波形 */ + FRT_REGISTER_MAX_WAVE_3 = 54, /* 换能器最大波形 */ + FRT_REGISTER_MAX_WAVE_4 = 55, /* 换能器最大波形 */ + FRT_REGISTER_ID_1 = 56, /* ID16 */ + FRT_REGISTER_ID_2 = 57, /* ID32 */ + FRT_REGISTER_ID_3 = 58, /* ID48 */ + FRT_REGISTER_ID_4 = 59, /* ID64 */ + FRT_REGISTER_ENCRYPT_1 = 60, /* 密文16 */ + FRT_REGISTER_ENCRYPT_2 = 61, /* 密文32 */ + FRT_REGISTER_ENCRYPT_3 = 62, /* 密文48 */ + FRT_REGISTER_ENCRYPT_4 = 63, /* 密文64 */ }FRT_MsgRegister; #pragma pack(push,1) diff --git a/App/Inc/inflash.h b/App/Inc/inflash.h index db3c976..a6dcbe6 100644 --- a/App/Inc/inflash.h +++ b/App/Inc/inflash.h @@ -67,6 +67,7 @@ typedef struct _factory_config_info{ u_int16_t linear_point_5_y; /* 绾挎ф彃鍊肩偣5Y */ u_int16_t linear_enable; /* 绾挎ф彃鍊间娇鑳 */ u_int32_t encrypt_1; /* 鍚32浣嶅瘑鏂 */ + u_int16_t anemometerDelayTime; /* 鎹㈣兘鍣ㄥ尮閰嶅眰寤舵椂us */ u_int16_t temp0; /* 鍗犱綅鐣欏緟鍗囩骇 */ u_int16_t temp1; /* 鍗犱綅鐣欏緟鍗囩骇 */ u_int16_t temp2; /* 鍗犱綅鐣欏緟鍗囩骇 */ diff --git a/App/Src/anemometer_dev.c b/App/Src/anemometer_dev.c index fec93d5..5afae41 100644 --- a/App/Src/anemometer_dev.c +++ b/App/Src/anemometer_dev.c @@ -554,8 +554,8 @@ void wind_task(void const * argument) tof_error_log_NS = 0; g_error_log.tof_error_NS = 0; // 璁$畻鎴恥s - tofx = ((tofx-FIR_PHASE_DELAY)/ADC_SAMP_RATE_MHz)+REV_MUTE_DELAY_US-1.0f/DRIVE_FREQ_MHz+0.0001f - 2.0f; - tofy = ((tofy-FIR_PHASE_DELAY)/ADC_SAMP_RATE_MHz)+REV_MUTE_DELAY_US-1.0f/DRIVE_FREQ_MHz+0.0001f - 2.0f; + tofx = ((tofx-FIR_PHASE_DELAY)/ADC_SAMP_RATE_MHz)+REV_MUTE_DELAY_US-1.0f/DRIVE_FREQ_MHz+0.0001f - g_stConfigInfo.anemometerDelayTime*1.0f; + tofy = ((tofy-FIR_PHASE_DELAY)/ADC_SAMP_RATE_MHz)+REV_MUTE_DELAY_US-1.0f/DRIVE_FREQ_MHz+0.0001f - g_stConfigInfo.anemometerDelayTime*1.0f; // 閫氳繃鍚勯氶亾娓¤秺鏃堕棿姹傛椂闂村樊 dtof = tofx-tofy; @@ -623,8 +623,8 @@ void wind_task(void const * argument) tof_error_log_WE = 0; g_error_log.tof_error_WE = 0; // 璁$畻鎴恥s - tofx = ((tofx-FIR_PHASE_DELAY)/ADC_SAMP_RATE_MHz)+REV_MUTE_DELAY_US-1.0f/DRIVE_FREQ_MHz+0.000001f - 2.0f; - tofy = ((tofy-FIR_PHASE_DELAY)/ADC_SAMP_RATE_MHz)+REV_MUTE_DELAY_US-1.0f/DRIVE_FREQ_MHz+0.000001f - 2.0f; + tofx = ((tofx-FIR_PHASE_DELAY)/ADC_SAMP_RATE_MHz)+REV_MUTE_DELAY_US-1.0f/DRIVE_FREQ_MHz+0.000001f - g_stConfigInfo.anemometerDelayTime*1.0f; + tofy = ((tofy-FIR_PHASE_DELAY)/ADC_SAMP_RATE_MHz)+REV_MUTE_DELAY_US-1.0f/DRIVE_FREQ_MHz+0.000001f - g_stConfigInfo.anemometerDelayTime*1.0f; // 閫氳繃鍚勯氶亾娓¤秺鏃堕棿姹傛椂闂村樊 dtof = tofx-tofy; diff --git a/App/Src/frt_protocol.c b/App/Src/frt_protocol.c index f23016b..b974baa 100644 --- a/App/Src/frt_protocol.c +++ b/App/Src/frt_protocol.c @@ -54,6 +54,7 @@ static u_int16_t FRT_ReadRegRSSIRange(void *pMsg); static u_int16_t FRT_ReadRegCoefficient(void *pMsg); static u_int16_t FRT_ReadRegDISTANCE_NS(void *pMsg); static u_int16_t FRT_ReadRegDISTANCE_WE(void *pMsg); +static u_int16_t FRT_ReadRegANEMOMETER_Delay(void *pMsg); static u_int16_t FRT_ReadRegErrorData(void *pMsg); static u_int16_t FRT_ReadRegWindC_NS(void *pMsg); static u_int16_t FRT_ReadRegWindC_WE(void *pMsg); @@ -85,6 +86,7 @@ static u_int16_t FRT_WriteRegRSSIRange(void *pMsg); static u_int16_t FRT_WriteRegCoefficient(void *pMsg); static u_int16_t FRT_WriteRegDISTANCE_NS(void *pMsg); static u_int16_t FRT_WriteRegDISTANCE_WE(void *pMsg); +static u_int16_t FRT_WriteRegANEMOMETER_Delay(void *pMsg); static u_int16_t FRT_WriteRegPoint_1Y(void *pMsg); static u_int16_t FRT_WriteRegPoint_2Y(void *pMsg); static u_int16_t FRT_WriteRegPoint_3Y(void *pMsg); @@ -141,6 +143,7 @@ FRT_RegProcTable_s g_RegTbl[] = { FRT_REGISTER_COEFFICIENT, FRT_ReadRegCoefficient }, /* 璇荤矘搴︿慨姝g郴鏁 */ { FRT_REGISTER_DISTANCE_NS, FRT_ReadRegDISTANCE_NS }, /* 璇诲崡鍖楁帰澶磋〃闈㈡湁鏁堣窛绂 */ { FRT_REGISTER_DISTANCE_WE, FRT_ReadRegDISTANCE_WE }, /* 璇讳笢瑗挎帰澶磋〃闈㈡湁鏁堣窛绂 */ + { FRT_REGISTER_ANEMOMETER_DELAY, FRT_ReadRegANEMOMETER_Delay }, /* 璇绘崲鑳藉櫒鍖归厤灞傚欢鏃 */ { FRT_REGISTER_ERROR_LOG, FRT_ReadRegErrorData }, /* 璇婚敊璇棩蹇 */ { FRT_REGISTER_WIND_C_NS, FRT_ReadRegWindC_NS }, /* 璇昏绠楀緱鍒扮殑鍗楀寳椋庨 */ { FRT_REGISTER_WIND_C_WE, FRT_ReadRegWindC_WE }, /* 璇昏绠楀緱鍒扮殑涓滆タ椋庨 */ @@ -181,6 +184,7 @@ FRT_RegProcTable_s g_Write_RegTbl[] = { FRT_REGISTER_COEFFICIENT, FRT_WriteRegCoefficient }, /* 鍐欑矘搴︿慨姝g郴鏁 */ { FRT_REGISTER_DISTANCE_NS, FRT_WriteRegDISTANCE_NS }, /* 鍐欏崡鍖楁帰澶磋〃闈㈡湁鏁堣窛绂 */ { FRT_REGISTER_DISTANCE_WE, FRT_WriteRegDISTANCE_WE }, /* 鍐欎笢瑗挎帰澶磋〃闈㈡湁鏁堣窛绂 */ + { FRT_REGISTER_ANEMOMETER_DELAY, FRT_WriteRegANEMOMETER_Delay }, /* 鍐欐崲鑳藉櫒鍖归厤灞傚欢鏃 */ { FRT_REGISTER_LINEAR_POINT_Y_1, FRT_WriteRegPoint_1Y }, /* 绾挎ф彃鍊兼牎鍑嗙偣1 */ { FRT_REGISTER_LINEAR_POINT_Y_2, FRT_WriteRegPoint_2Y }, /* 绾挎ф彃鍊兼牎鍑嗙偣2 */ { FRT_REGISTER_LINEAR_POINT_Y_3, FRT_WriteRegPoint_3Y }, /* 绾挎ф彃鍊兼牎鍑嗙偣3 */ @@ -691,6 +695,18 @@ static u_int16_t FRT_ReadRegDISTANCE_WE(void *pMsg) return FRT_swap_endian_16(value); } +/** + * @brief 璇绘崲鑳藉櫒鍖归厤寤舵椂 + * @param + * @retval + */ +static u_int16_t FRT_ReadRegANEMOMETER_Delay(void *pMsg) +{ + read_config_info(); + u_int16_t value=g_stConfigInfo.anemometerDelayTime; + return FRT_swap_endian_16(value); +} + /** * @brief 璇婚敊璇棩蹇 * @param @@ -1053,6 +1069,22 @@ static u_int16_t FRT_WriteRegDISTANCE_WE(void *pMsg) return 0; } +/** + * @brief 鍐欐崲鑳藉櫒鍖归厤寤舵椂 + * @param + * @retval + */ +static u_int16_t FRT_WriteRegANEMOMETER_Delay(void *pMsg) +{ + uint16_t *pMsgAddr = (uint16_t *)pMsg; + uint16_t data = *pMsgAddr; + + g_stConfigInfo.anemometerDelayTime = data; + save_factory_config_info(g_stConfigInfo); + + return 0; +} + /** * @brief 鍐欑嚎鎬ф彃鍊肩煫姝g偣1 * @param @@ -1379,8 +1411,8 @@ void FRT_MsgProc_WriteRegister(device_handle device, void *pMsg) // 鏍¢獙 if (start_reg_addr < FRT_REGISTER_DEVICE_ADDR ||\ (start_reg_addr > FRT_REGISTER_REST_DEFAULT_SETTING && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\ - (start_reg_addr > FRT_REGISTER_DISTANCE_WE && start_reg_addr < FRT_REGISTER_LINEAR_POINT_Y_1) ||\ - (start_reg_addr > FRT_REGISTER_LINEAR_POINT_Y_5) && (start_reg_addr < FRT_REGISTER_ENCRYPT_1) ||\ + (start_reg_addr > FRT_REGISTER_ANEMOMETER_DELAY && start_reg_addr < FRT_REGISTER_LINEAR_POINT_Y_1) ||\ + (start_reg_addr > FRT_REGISTER_LINEAR_ENABLE) && (start_reg_addr < FRT_REGISTER_ENCRYPT_1) ||\ (start_reg_addr > FRT_REGISTER_ENCRYPT_4) ) { @@ -1390,8 +1422,8 @@ void FRT_MsgProc_WriteRegister(device_handle device, void *pMsg) if (reg_num < 0x01 ||\ ((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR) ||\ (((reg_num + start_reg_addr -1) > FRT_REGISTER_REST_DEFAULT_SETTING) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_TRANSDUCER_CFG_1R5)) ||\ - (((reg_num + start_reg_addr -1) > FRT_REGISTER_DISTANCE_WE) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_LINEAR_POINT_Y_1)) ||\ - (((reg_num + start_reg_addr -1) > FRT_REGISTER_LINEAR_POINT_Y_5) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_ENCRYPT_1)) ||\ + (((reg_num + start_reg_addr -1) > FRT_REGISTER_ANEMOMETER_DELAY) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_LINEAR_POINT_Y_1)) ||\ + (((reg_num + start_reg_addr -1) > FRT_REGISTER_LINEAR_ENABLE) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_ENCRYPT_1)) ||\ ((reg_num + start_reg_addr -1) > FRT_REGISTER_ENCRYPT_4) ) { diff --git a/App/Src/inflash.c b/App/Src/inflash.c index 4393da6..3287419 100644 --- a/App/Src/inflash.c +++ b/App/Src/inflash.c @@ -43,6 +43,7 @@ factory_config_info g_stConfigInfo={ .linear_enable = 0, /* 线性插值使能 */ .encrypt_0 = 0, /* 密文 */ .encrypt_1 = 0, /* 密文 */ + .anemometerDelayTime = 2, /* 换能器匹配层延时us *//*大宇3,无锡电声2*/ .flag_end = FLAG_SAVE_INFLASH_END, };