kopia lustrzana https://github.com/UU5JPP/Wolf-LITE
CALIBRATE.rf_out_power
rodzic
46330d78d1
commit
df3efc26ff
|
@ -304,23 +304,27 @@ float32_t getMaxTXAmplitudeOnFreq(uint32_t freq)
|
|||
{
|
||||
if (freq > MAX_TX_FREQ_HZ)
|
||||
return 0.0f;
|
||||
|
||||
if (freq < 2.5 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_160m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if (freq < 5.3 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_80m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if (freq < 8.5 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_40m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if (freq < 12.0 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_30m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if (freq < 16.0 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_20m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if (freq < 19.5 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_17m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if (freq < 22.5 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_15m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if (freq < 26.5 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_12m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if (freq < 40.0 * 1000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_10m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
|
||||
uint8_t nyquist = freq / (DAC_CLOCK / 2);
|
||||
if (nyquist == 0)
|
||||
{
|
||||
if(freq < 2000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_lf / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if(freq < 5000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_hf_low / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
if(freq < 30000000)
|
||||
return (float32_t)CALIBRATE.rf_out_power_hf / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
|
||||
return (float32_t)CALIBRATE.rf_out_power_hf_high / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
}
|
||||
if (nyquist == 1)
|
||||
return (float32_t)CALIBRATE.rf_out_power_vhf / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
|
||||
return 0.0f;
|
||||
return (float32_t)CALIBRATE.rf_out_power_40m / 100.0f * (float32_t)MAX_TX_AMPLITUDE;
|
||||
}
|
||||
|
||||
float32_t generateSin(float32_t amplitude, uint32_t index, uint32_t samplerate, uint32_t freq)
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
#define LAY_TOPBUTTONS_Y1 1
|
||||
#define LAY_TOPBUTTONS_Y2 50
|
||||
#define LAY_TOPBUTTONS_WIDTH 62
|
||||
#define LAY_TOPBUTTONS_HEIGHT 25
|
||||
#define LAY_TOPBUTTONS_HEIGHT 40
|
||||
#define LAY_TOPBUTTONS_TB_MARGIN 2
|
||||
#define LAY_TOPBUTTONS_LR_MARGIN 2
|
||||
#define LAY_TOPBUTTONS_PRE_X (uint16_t)(LAY_TOPBUTTONS_X1 + LAY_TOPBUTTONS_LR_MARGIN)
|
||||
|
@ -40,7 +40,7 @@
|
|||
#define LAY_FREQ_X_OFFSET_HZ 307
|
||||
#define LAY_FREQ_HEIGHT 51
|
||||
#define LAY_FREQ_WIDTH 370
|
||||
#define LAY_FREQ_TOP_OFFSET 10
|
||||
#define LAY_FREQ_TOP_OFFSET 15
|
||||
#define LAY_FREQ_LEFT_MARGIN 37
|
||||
#define LAY_FREQ_RIGHT_MARGIN (uint16_t)(LCD_WIDTH - LAY_FREQ_LEFT_MARGIN - LAY_FREQ_WIDTH)
|
||||
#define LAY_FREQ_BOTTOM_OFFSET 8
|
||||
|
@ -116,8 +116,8 @@
|
|||
#define LAY_TEXTBAR_TEXT_T_BOTTOM_OFFESET 30
|
||||
#define LAY_TEXTBAR_TEXT_X_OFFSET 85
|
||||
//FFT and waterfall
|
||||
#define LAY_FFT_HEIGHT 50
|
||||
#define LAY_WTF_HEIGHT 55
|
||||
#define LAY_FFT_HEIGHT 70
|
||||
#define LAY_WTF_HEIGHT 40
|
||||
#define LAY_FFT_PRINT_SIZE LCD_WIDTH
|
||||
#define LAY_FFT_CWDECODER_OFFSET 17
|
||||
#define LAY_FFT_FFTWTF_POS_Y (uint16_t)(LCD_HEIGHT - LAY_FFT_HEIGHT - LAY_WTF_HEIGHT - LAY_TEXTBAR_TEXT_T_BOTTOM_OFFESET)
|
||||
|
|
|
@ -273,7 +273,17 @@ void LoadCalibration(bool clear)
|
|||
CALIBRATE.CICFIR_GAINER_val = 35; // Offset from the output of the CIC compensator
|
||||
CALIBRATE.TXCICFIR_GAINER_val = 27; // Offset from the TX-CIC output of the compensator
|
||||
CALIBRATE.DAC_GAINER_val = 26; // DAC offset offset
|
||||
// Calibrate the maximum output power for each band
|
||||
// Calibrate the maximum output power for each band
|
||||
CALIBRATE.rf_out_power_160m = 20; //160m
|
||||
CALIBRATE.rf_out_power_80m = 20; //80m
|
||||
CALIBRATE.rf_out_power_40m = 21; //40m
|
||||
CALIBRATE.rf_out_power_30m = 20; //30m
|
||||
CALIBRATE.rf_out_power_20m = 20; //20m
|
||||
CALIBRATE.rf_out_power_17m = 20; //17m
|
||||
CALIBRATE.rf_out_power_15m = 20; //15m
|
||||
CALIBRATE.rf_out_power_12m = 20; //12m
|
||||
CALIBRATE.rf_out_power_10m = 20; //10m
|
||||
|
||||
CALIBRATE.rf_out_power_lf = 40; // <2mhz
|
||||
CALIBRATE.rf_out_power_hf_low = 45; // <5mhz
|
||||
CALIBRATE.rf_out_power_hf = 26; // <30mhz
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#define MAX_RX_FREQ_HZ 750000000 // Maximum receive frequency (from the ADC datasheet)
|
||||
#define MAX_TX_FREQ_HZ (DAC_CLOCK / 2) // Maximum transmission frequency
|
||||
#define TRX_SAMPLERATE 48000 // audio stream sampling rate during processing
|
||||
#define MAX_TX_AMPLITUDE 0.6f // Maximum amplitude when transmitting to FPGA
|
||||
#define MAX_TX_AMPLITUDE 1.0f // Maximum amplitude when transmitting to FPGA
|
||||
#define AGC_MAX_GAIN 30.0f // Maximum gain in AGC, dB
|
||||
#define AGC_CLIPPING 6.0f // Limit over target in AGC, dB
|
||||
#define TUNE_POWER 100 // % of the power selected in the settings when starting TUNE (100 - full)
|
||||
|
@ -204,7 +204,16 @@ extern struct TRX_CALIBRATE
|
|||
int16_t smeter_calibration;
|
||||
float32_t swr_trans_rate;
|
||||
float32_t volt_cal_rate;
|
||||
|
||||
uint8_t rf_out_power_160m;
|
||||
uint8_t rf_out_power_80m;
|
||||
uint8_t rf_out_power_40m;
|
||||
uint8_t rf_out_power_30m;
|
||||
uint8_t rf_out_power_20m;
|
||||
uint8_t rf_out_power_17m;
|
||||
uint8_t rf_out_power_15m;
|
||||
uint8_t rf_out_power_12m;
|
||||
uint8_t rf_out_power_10m;
|
||||
|
||||
uint8_t csum; //check sum
|
||||
uint8_t ENDBit; //end bit
|
||||
} CALIBRATE;
|
||||
|
|
|
@ -104,6 +104,15 @@ static void SYSMENU_HANDL_CALIB_S_METER(int8_t direction);
|
|||
static void SYSMENU_HANDL_CALIB_VOLT(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_ADC_OFFSET(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_SWR_TRANS_RATE(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_160M(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_80M(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_40M(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_30M(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_20M(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_17M(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_15M(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_12M(int8_t direction);
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_10M(int8_t direction);
|
||||
|
||||
static void SYSMENU_HANDL_TRXMENU(int8_t direction);
|
||||
static void SYSMENU_HANDL_AUDIOMENU(int8_t direction);
|
||||
|
@ -235,6 +244,15 @@ static const struct sysmenu_item_handler sysmenu_calibration_handlers[] =
|
|||
{"S METER", SYSMENU_INT16, (uint32_t *)&CALIBRATE.smeter_calibration, SYSMENU_HANDL_CALIB_S_METER},
|
||||
{"SWR TRANS RATE", SYSMENU_FLOAT32, (uint32_t *)&CALIBRATE.swr_trans_rate, SYSMENU_HANDL_CALIB_SWR_TRANS_RATE},
|
||||
{"VOLT CALIBR", SYSMENU_FLOAT32, (uint32_t *)&CALIBRATE.volt_cal_rate, SYSMENU_HANDL_CALIB_VOLT},
|
||||
{"RF GAIN 160m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_160m, SYSMENU_HANDL_CALIB_RF_GAIN_160M},
|
||||
{"RF GAIN 80m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_80m, SYSMENU_HANDL_CALIB_RF_GAIN_80M},
|
||||
{"RF GAIN 40m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_40m, SYSMENU_HANDL_CALIB_RF_GAIN_40M},
|
||||
{"RF GAIN 30m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_30m, SYSMENU_HANDL_CALIB_RF_GAIN_30M},
|
||||
{"RF GAIN 20m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_20m, SYSMENU_HANDL_CALIB_RF_GAIN_20M},
|
||||
{"RF GAIN 17m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_17m, SYSMENU_HANDL_CALIB_RF_GAIN_17M},
|
||||
{"RF GAIN 15m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_15m, SYSMENU_HANDL_CALIB_RF_GAIN_15M},
|
||||
{"RF GAIN 12m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_12m, SYSMENU_HANDL_CALIB_RF_GAIN_12M},
|
||||
{"RF GAIN 10m", SYSMENU_UINT8, (uint32_t *)&CALIBRATE.rf_out_power_10m, SYSMENU_HANDL_CALIB_RF_GAIN_10M},
|
||||
};
|
||||
static const uint8_t sysmenu_calibration_item_count = sizeof(sysmenu_calibration_handlers) / sizeof(sysmenu_calibration_handlers[0]);
|
||||
|
||||
|
@ -333,9 +351,8 @@ static void SYSMENU_HANDL_TRX_TWO_SIGNAL_TUNE(int8_t direction)
|
|||
|
||||
static void SYSMENU_HANDL_TRX_RFPower(int8_t direction)
|
||||
{
|
||||
TRX.RF_Power += direction;
|
||||
if (TRX.RF_Power < 1)
|
||||
TRX.RF_Power = 1;
|
||||
if (direction > 0 || TRX.RF_Power > 0)
|
||||
TRX.RF_Power += direction;
|
||||
if (TRX.RF_Power > 100)
|
||||
TRX.RF_Power = 100;
|
||||
}
|
||||
|
@ -1693,6 +1710,112 @@ static void SYSMENU_HANDL_CALIB_DAC_SHIFT(int8_t direction)
|
|||
if (CALIBRATE.DAC_GAINER_val > 28)
|
||||
CALIBRATE.DAC_GAINER_val = 28;
|
||||
}
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_160M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_160m > 0)
|
||||
CALIBRATE.rf_out_power_160m += direction;
|
||||
if (CALIBRATE.rf_out_power_160m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_160m += direction;
|
||||
if (CALIBRATE.rf_out_power_160m > 100)
|
||||
CALIBRATE.rf_out_power_160m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_80M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_80m > 0)
|
||||
CALIBRATE.rf_out_power_80m += direction;
|
||||
if (CALIBRATE.rf_out_power_80m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_80m += direction;
|
||||
if (CALIBRATE.rf_out_power_80m > 100)
|
||||
CALIBRATE.rf_out_power_80m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_40M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_40m > 0)
|
||||
CALIBRATE.rf_out_power_40m += direction;
|
||||
if (CALIBRATE.rf_out_power_40m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_40m += direction;
|
||||
if (CALIBRATE.rf_out_power_40m > 100)
|
||||
CALIBRATE.rf_out_power_40m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_30M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_30m > 0)
|
||||
CALIBRATE.rf_out_power_30m += direction;
|
||||
if (CALIBRATE.rf_out_power_30m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_30m += direction;
|
||||
if (CALIBRATE.rf_out_power_30m > 100)
|
||||
CALIBRATE.rf_out_power_30m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_20M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_20m > 0)
|
||||
CALIBRATE.rf_out_power_20m += direction;
|
||||
if (CALIBRATE.rf_out_power_20m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_20m += direction;
|
||||
if (CALIBRATE.rf_out_power_20m > 100)
|
||||
CALIBRATE.rf_out_power_20m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_17M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_17m > 0)
|
||||
CALIBRATE.rf_out_power_17m += direction;
|
||||
if (CALIBRATE.rf_out_power_17m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_17m += direction;
|
||||
if (CALIBRATE.rf_out_power_17m > 100)
|
||||
CALIBRATE.rf_out_power_17m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_15M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_15m > 0)
|
||||
CALIBRATE.rf_out_power_15m += direction;
|
||||
if (CALIBRATE.rf_out_power_15m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_15m += direction;
|
||||
if (CALIBRATE.rf_out_power_15m > 100)
|
||||
CALIBRATE.rf_out_power_15m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_12M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_12m > 0)
|
||||
CALIBRATE.rf_out_power_12m += direction;
|
||||
if (CALIBRATE.rf_out_power_12m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_12m += direction;
|
||||
if (CALIBRATE.rf_out_power_12m > 100)
|
||||
CALIBRATE.rf_out_power_12m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_10M(int8_t direction)
|
||||
{
|
||||
if (CALIBRATE.rf_out_power_10m > 0)
|
||||
CALIBRATE.rf_out_power_10m += direction;
|
||||
if (CALIBRATE.rf_out_power_10m == 0 && direction > 0)
|
||||
CALIBRATE.rf_out_power_10m += direction;
|
||||
if (CALIBRATE.rf_out_power_10m > 100)
|
||||
CALIBRATE.rf_out_power_10m = 100;
|
||||
|
||||
TRX_MAX_TX_Amplitude = getMaxTXAmplitudeOnFreq(CurrentVFO()->Freq);
|
||||
}
|
||||
|
||||
static void SYSMENU_HANDL_CALIB_RF_GAIN_LF(int8_t direction)
|
||||
{
|
||||
|
|
Ładowanie…
Reference in New Issue