增加程控增益(未测试),小于180开启,大于1900关闭
This commit is contained in:
parent
7091edb970
commit
aaec993378
|
@ -134,6 +134,7 @@ typedef struct _mcs_para{
|
|||
}mcs_para;
|
||||
extern mcs_para g_stMcs_Para;
|
||||
|
||||
//错误日志
|
||||
typedef struct _error_log{
|
||||
uint16_t tof_error_NS:1; /* 接受南北信号(tofy,tofx<0)很小 */
|
||||
uint16_t tof_error_WE:1; /* 接受东西信号(tofy,tofx<0)很小 */
|
||||
|
@ -153,6 +154,19 @@ typedef struct _error_log{
|
|||
uint16_t error_15:1; /* 保留 */
|
||||
}error_log;
|
||||
extern error_log g_error_log;
|
||||
|
||||
//增益控制位
|
||||
typedef struct _adc_gain_status{
|
||||
uint16_t gain_status_s:1;
|
||||
uint16_t gain_status_n:1;
|
||||
uint16_t gain_status_e:1;
|
||||
uint16_t gain_status_w:1;
|
||||
uint16_t bit4:1;
|
||||
uint16_t bit5:1;
|
||||
uint16_t bit6:1;
|
||||
uint16_t bit7:1;
|
||||
}adc_gain_status;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
#define MAX_VALUES 50
|
||||
|
|
|
@ -40,10 +40,6 @@ AverageCalculator wave_max_val_1;
|
|||
AverageCalculator wave_max_val_2;
|
||||
AverageCalculator wave_max_val_3;
|
||||
AverageCalculator wave_max_val_4;
|
||||
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];
|
||||
|
@ -80,12 +76,76 @@ int32_t max_val_index_f32;
|
|||
// adc增益使能
|
||||
void enable_adc_gain(void)
|
||||
{
|
||||
HAL_GPIO_WritePin(GPIO_GAIN_SET_GPIO_Port, GPIO_GAIN_SET_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_ReadPin(GPIO_GAIN_SET_GPIO_Port, GPIO_GAIN_SET_Pin) ? (void)0 : HAL_GPIO_WritePin(GPIO_GAIN_SET_GPIO_Port, GPIO_GAIN_SET_Pin, GPIO_PIN_SET);
|
||||
}
|
||||
// adc增益取消使能
|
||||
void disable_adc_gain(void)
|
||||
{
|
||||
HAL_GPIO_WritePin(GPIO_GAIN_SET_GPIO_Port, GPIO_GAIN_SET_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_ReadPin(GPIO_GAIN_SET_GPIO_Port, GPIO_GAIN_SET_Pin) ? HAL_GPIO_WritePin(GPIO_GAIN_SET_GPIO_Port, GPIO_GAIN_SET_Pin, GPIO_PIN_RESET) : (void)0;
|
||||
}
|
||||
|
||||
adc_gain_status gain_status = {0};
|
||||
// adc增益控制,0x01:S,0x02:N,0x03:E,0x04:W,当次使能下次生效,暂定为180开,1900关
|
||||
void config_adc_gain(uint8_t channel, uint16_t max_val)
|
||||
{
|
||||
switch(channel)
|
||||
{
|
||||
case 0x01:
|
||||
if(max_val <= 180)
|
||||
gain_status.gain_status_s = 1;
|
||||
else if(max_val >= 1900)
|
||||
gain_status.gain_status_s = 0;
|
||||
break;
|
||||
|
||||
case 0x02:
|
||||
if(max_val <= 180)
|
||||
gain_status.gain_status_n = 1;
|
||||
else if(max_val >= 1900)
|
||||
gain_status.gain_status_n = 0;
|
||||
break;
|
||||
|
||||
case 0x03:
|
||||
if(max_val <= 180)
|
||||
gain_status.gain_status_e = 1;
|
||||
else if(max_val >= 1900)
|
||||
gain_status.gain_status_e = 0;
|
||||
break;
|
||||
|
||||
case 0x04:
|
||||
if(max_val <= 180)
|
||||
gain_status.gain_status_w = 1;
|
||||
else if(max_val >= 1900)
|
||||
gain_status.gain_status_w = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void use_adc_gain(uint8_t channel)
|
||||
{
|
||||
switch(channel)
|
||||
{
|
||||
case 0x01:
|
||||
gain_status.gain_status_s ? enable_adc_gain() : disable_adc_gain();
|
||||
break;
|
||||
|
||||
case 0x02:
|
||||
gain_status.gain_status_n ? enable_adc_gain() : disable_adc_gain();
|
||||
break;
|
||||
|
||||
case 0x03:
|
||||
gain_status.gain_status_e ? enable_adc_gain() : disable_adc_gain();
|
||||
break;
|
||||
|
||||
case 0x04:
|
||||
gain_status.gain_status_w ? enable_adc_gain() : disable_adc_gain();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 多项式插值
|
||||
|
@ -401,6 +461,11 @@ char str[100];
|
|||
|
||||
void wind_task(void const * argument)
|
||||
{
|
||||
// 最大幅值
|
||||
uint16_t wave_max_val1;
|
||||
uint16_t wave_max_val2;
|
||||
uint16_t wave_max_val3;
|
||||
uint16_t wave_max_val4;
|
||||
//错误次数统计,南北,东西分开(接受信号很小)
|
||||
uint8_t tof_error_log_NS = 0;
|
||||
uint8_t tof_error_log_WE = 0;
|
||||
|
@ -423,6 +488,7 @@ void wind_task(void const * argument)
|
|||
// 通道1 通道2 测试南北风速
|
||||
// 通道1发送 通道2接收
|
||||
change_channel(0x01);
|
||||
use_adc_gain(0x01);
|
||||
// 等待通道切换稳定
|
||||
// adc开启采集数据有个固定的延时,这里取消等待
|
||||
//HAL_Delay(0);
|
||||
|
@ -432,14 +498,22 @@ void wind_task(void const * argument)
|
|||
osDelay(1);
|
||||
// 通道2发送 通道1接收
|
||||
change_channel(0x02);
|
||||
use_adc_gain(0x02);
|
||||
// 等待通道切换稳定
|
||||
//HAL_Delay(0);
|
||||
// 发送pwm 并启动adc采集数据
|
||||
play_one_measure(adc_val1,ADC_VAL_LEN);
|
||||
|
||||
|
||||
tofx = cal_tof(adc_val,ADC_VAL_LEN, &wave_max_val1);addValue(&wave_max_val_1, wave_max_val1);
|
||||
tofy = cal_tof(adc_val1,ADC_VAL_LEN, &wave_max_val2);addValue(&wave_max_val_2, wave_max_val2);
|
||||
tofx = cal_tof(adc_val,ADC_VAL_LEN, &wave_max_val1);
|
||||
//最大值平均+增益控制
|
||||
addValue(&wave_max_val_1, wave_max_val1);
|
||||
config_adc_gain(0x01, wave_max_val_1.ave);
|
||||
|
||||
tofy = cal_tof(adc_val1,ADC_VAL_LEN, &wave_max_val2);
|
||||
//最大值平均+增益控制
|
||||
addValue(&wave_max_val_2, wave_max_val2);
|
||||
config_adc_gain(0x02, wave_max_val_2.ave);
|
||||
|
||||
|
||||
// 接受信号很小
|
||||
|
@ -483,6 +557,7 @@ void wind_task(void const * argument)
|
|||
// 通道3 通道4 测试东西风速
|
||||
// 通道3发送 通道4接收
|
||||
change_channel(0x03);
|
||||
use_adc_gain(0x03);
|
||||
// 等待通道切换稳定
|
||||
//HAL_Delay(0);
|
||||
// 发送pwm 并启动adc采集数据
|
||||
|
@ -491,14 +566,22 @@ void wind_task(void const * argument)
|
|||
osDelay(1);
|
||||
// 通道4发送 通道3接收
|
||||
change_channel(0x04);
|
||||
use_adc_gain(0x04);
|
||||
// 等待通道切换稳定
|
||||
//HAL_Delay(0);
|
||||
// 发送pwm 并启动adc采集数据
|
||||
play_one_measure(adc_val1,ADC_VAL_LEN);
|
||||
|
||||
|
||||
tofx = cal_tof(adc_val,ADC_VAL_LEN, &wave_max_val3);addValue(&wave_max_val_3, wave_max_val3);
|
||||
tofy = cal_tof(adc_val1,ADC_VAL_LEN, &wave_max_val4);addValue(&wave_max_val_4, wave_max_val4);
|
||||
tofx = cal_tof(adc_val,ADC_VAL_LEN, &wave_max_val3);
|
||||
//最大值平均+增益控制
|
||||
addValue(&wave_max_val_3, wave_max_val3);
|
||||
config_adc_gain(0x03, wave_max_val_3.ave);
|
||||
|
||||
tofy = cal_tof(adc_val1,ADC_VAL_LEN, &wave_max_val4);
|
||||
//最大值平均+增益控制
|
||||
addValue(&wave_max_val_4, wave_max_val4);
|
||||
config_adc_gain(0x04, wave_max_val_4.ave);
|
||||
|
||||
// 如果测量的信号幅值过小。
|
||||
if(tofx<0||tofy<0)
|
||||
|
|
Loading…
Reference in New Issue