From f2ffc61bf6036d433f6c2e2ed5ab1f77271162a6 Mon Sep 17 00:00:00 2001 From: 95384 <664090429@qq.com> Date: Wed, 4 Dec 2024 10:12:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B0=83=E8=AF=95=E5=AF=84?= =?UTF-8?q?=E5=AD=98=E5=99=A8=EF=BC=8C=E5=8F=AF=E5=B0=86=E5=B0=86=E6=B3=A2?= =?UTF-8?q?=E5=BD=A2=E6=9C=80=E5=A4=A7=E5=80=BC=E5=8F=91=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App/Inc/anemometer_dev.h | 12 +++++++++ App/Inc/frt_protocol.h | 4 +++ App/Src/anemometer_dev.c | 40 +++++++++++++++++++++------ App/Src/frt_protocol.c | 58 +++++++++++++++++++++++++++++++++++++--- 4 files changed, 102 insertions(+), 12 deletions(-) diff --git a/App/Inc/anemometer_dev.h b/App/Inc/anemometer_dev.h index 563ed85..52843a1 100644 --- a/App/Inc/anemometer_dev.h +++ b/App/Inc/anemometer_dev.h @@ -155,6 +155,18 @@ typedef struct _error_log{ extern error_log g_error_log; #pragma pack(pop) +#define MAX_VALUES 50 +typedef struct { + uint16_t values[MAX_VALUES]; + uint16_t count; + uint16_t currentIndex; + uint16_t ave; +} AverageCalculator; +extern AverageCalculator Test1; +extern AverageCalculator Test2; +extern AverageCalculator Test3; +extern AverageCalculator Test4; + // 切换通道 void change_channel(uint32_t channel); diff --git a/App/Inc/frt_protocol.h b/App/Inc/frt_protocol.h index 04b3f26..15a6d68 100644 --- a/App/Inc/frt_protocol.h +++ b/App/Inc/frt_protocol.h @@ -71,6 +71,10 @@ typedef enum FRT_REGISTER_LINEAR_POINT_Y_4 = 48, /* ԲֵУ׼4 */ FRT_REGISTER_LINEAR_POINT_Y_5 = 49, /* ԲֵУ׼5 */ FRT_REGISTER_LINEAR_ENABLE = 50, /* Բֵʹ */ + FRT_REGISTER_TEST1 = 51, /* ԼĴ */ + FRT_REGISTER_TEST2 = 52, /* ԼĴ */ + FRT_REGISTER_TEST3 = 53, /* ԼĴ */ + FRT_REGISTER_TEST4 = 54, /* ԼĴ */ }FRT_MsgRegister; #pragma pack(push,1) diff --git a/App/Src/anemometer_dev.c b/App/Src/anemometer_dev.c index c2c1791..572f567 100644 --- a/App/Src/anemometer_dev.c +++ b/App/Src/anemometer_dev.c @@ -22,8 +22,28 @@ arm_rfft_fast_instance_f32 s; float32_t rfft_float_buf[FFT_DATA_LEN]; // fft结果 float32_t fft_out_f32[ADC_VAL_LEN] = {0}; -// +// 波形最大点 +void addValue(AverageCalculator *calc, uint16_t value) { + calc->values[calc->currentIndex] = value; + calc->currentIndex = (calc->currentIndex + 1) % MAX_VALUES; + if (calc->count < MAX_VALUES) { + calc->count++; + } + uint32_t sum = 0; + for (int i = 0; i < calc->count; i++) { + sum += calc->values[i]; + } + calc->ave = sum / calc->count; +} +AverageCalculator Test1; +AverageCalculator Test2; +AverageCalculator Test3; +AverageCalculator Test4; +uint16_t wave_max_val1; +uint16_t wave_max_val2; +uint16_t wave_max_val3; +uint16_t wave_max_val4; int16_t adc_val[ADC_VAL_LEN]; int16_t adc_val1[ADC_VAL_LEN]; @@ -101,7 +121,8 @@ float32_t RSSI; float32_t buf[ADC_VAL_LEN]; float32_t buf2[ADC_VAL_LEN]; /*****************滤波器BUFF**********/ -float32_t cal_tof(q15_t* x,uint32_t len) +float32_t cal_tof(q15_t* x,uint32_t len, int16_t *maxVal) +// float32_t cal_tof(q15_t* x,uint32_t len) { q15_t max_val,dc_offset; float32_t echo_p = 0,echo_dt = 0; @@ -132,7 +153,8 @@ float32_t cal_tof(q15_t* x,uint32_t len) // arm_float_to_q15(buf2,firFilterTestOutData,len); for(i= 0 ;i FRT_REGISTER_PRESSURE && start_reg_addr < FRT_REGISTER_DEVICE_ADDR) ||\ (start_reg_addr > FRT_REGISTER_TEMPHUM_UPDATE_TIME && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\ - start_reg_addr > FRT_REGISTER_LINEAR_ENABLE \ + start_reg_addr > FRT_REGISTER_TEST4 \ ) { @@ -1118,7 +1168,7 @@ void FRT_MsgProc_ReadRegister(device_handle device, void *pMsg) reg_num < 0x01 ||\ (((reg_num + start_reg_addr - 1) > FRT_REGISTER_PRESSURE) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR)) ||\ (((reg_num + start_reg_addr -1) > FRT_REGISTER_TEMPHUM_UPDATE_TIME) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_TRANSDUCER_CFG_1R5)) ||\ - ((reg_num + start_reg_addr -1) > FRT_REGISTER_LINEAR_ENABLE) \ + ((reg_num + start_reg_addr -1) > FRT_REGISTER_TEST4) \ ) {