新增:V1.1 硬件功率校准

This commit is contained in:
efox
2026-08-28 13:28:25 +08:00
committed by rfeng
parent eebdd22256
commit 936a850c6b
9 changed files with 193 additions and 32 deletions
+99 -25
View File
@@ -85,6 +85,26 @@ static const int32 we_power[]=
1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000
};
/* Hardware V1.1 VHF calibration, channels 2..13. */
static const uint16 we_power_v1_1_v[]=
{
143,98,66,38,28,52,52,59,62,64,66,74
};
/*
* Hardware V1.1 UHF calibration, channels 14..83 (473..887 MHz).
* Values are the raw WE register values measured with 563 MHz as 0 dB.
* 1 raw step = 0.05 dB; 300 = 0 dB. Values at the upper end are
* limited to WE_POWER_MAX (500).
*/
static const uint16 we_power_v1_1[]=
{
224,226,231,231,234,235,239,244,245,248,254,257,264,268,269,275,281,282,
292,292,295,301,304,312,317,322,329,335,340,345,347,350,354,358,361,366,
370,377,382,385,389,391,394,399,403,405,413,420,423,432,437,447,454,463,
480,495,500,500,500,500,500,500,500,500,500,500,500,500,500,500
};
/*auto ver
{
-405, -361, -349, -314, -332, -303, -295, -285, -172, -257,
@@ -192,6 +212,7 @@ void e2rom_save_sys(S_SYSTEM_PARA *ppara)
c256_bytewrite(EEPROM_ADRV9009_ORX_MANU_GAIN, ppara->orx_manu_gain&0xff);
c256_bytewrite(EEPROM_SPEC_ENABLE, ppara->spec_enable ? 1 : 0);
c256_bytewrite(EEPROM_HARDWARE_VERSION, ppara->hardware_version);
}
void e2rom_save_power(S_RF_PARA *ppara)
{
@@ -398,18 +419,26 @@ void e2rom_save_wd(S_WD_PARA *ppara)
c256_bytewrite(EEPROM_WD_ADDR+i,*pchar++);
}
}
static uint16 e2rom_legacy_power_addr(void)
{
return (atsc_para.wl_para.exc_5x == 0) ?
EEPROM_CH2_POWER_ADDR : EEPROM_CH1_POWER_ADDR;
}
static uint16 e2rom_active_power_addr(void)
{
if(atsc_para.system_para.hardware_version == HARDWARE_VERSION_V1_1)
return EEPROM_CH_POWER_V1_1_ADDR;
return e2rom_legacy_power_addr();
}
void e2rom_save_leak(uint32 ch, S_WE_PARA *ppara)
{
if(atsc_para.wl_para.exc_5x==0)
{
c256_bytewrite(EEPROM_CH2_POWER_ADDR+ch*2+0,ppara->power>>8);
c256_bytewrite(EEPROM_CH2_POWER_ADDR+ch*2+1,ppara->power);
}
else
{
c256_bytewrite(EEPROM_CH1_POWER_ADDR+ch*2+0,ppara->power>>8);
c256_bytewrite(EEPROM_CH1_POWER_ADDR+ch*2+1,ppara->power);
}
uint16 base = e2rom_active_power_addr();
c256_bytewrite(base+ch*2+0,ppara->power>>8);
c256_bytewrite(base+ch*2+1,ppara->power);
}
void e2rom_save_we(S_WE_PARA *ppara)
{
@@ -1145,8 +1174,16 @@ void e2rom_read_system(S_SYSTEM_PARA *ppara)
ppara->orx_manu_gain = orx_gain_max;
ppara->spec_enable = 1;
ppara->hardware_version = c256_byteread(EEPROM_HARDWARE_VERSION);
if(ppara->hardware_version >= HARDWARE_VERSION_END)
{
ppara->hardware_version = DEFAULT_HARDWARE_VERSION;
c256_bytewrite(EEPROM_HARDWARE_VERSION, ppara->hardware_version);
}
printf("load agc_att=%d %fdb adrv9009_att=%d orx_manu_gain=%d spec_enable=%d\n", ppara->agc_att, -0.5*ppara->agc_att, ppara->adrv9009_att, ppara->orx_manu_gain, ppara->spec_enable);
printf("load agc_att=%d %fdb adrv9009_att=%d orx_manu_gain=%d spec_enable=%d hardware=V1.%d\n",
ppara->agc_att, -0.5*ppara->agc_att, ppara->adrv9009_att,
ppara->orx_manu_gain, ppara->spec_enable, ppara->hardware_version);
}
static void bak_e2rom_read_rf(S_RF_PARA *ppara)
{
@@ -2008,6 +2045,26 @@ static void e2rom_fac_power_rst_3x(void)
}
}
static void e2rom_fac_power_rst_v1_1(void)
{
uint32 i;
uint16 power;
for(i=FREQ_MIN_V1; i<=FREQ_MAX_V3; i++)
{
power = we_power_v1_1_v[i-FREQ_MIN_V1];
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+i*2+0, power>>8);
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+i*2+1, power);
}
for(i=FREQ_MIN_U; i<=FREQ_MAX_U; i++)
{
power = we_power_v1_1[i-FREQ_MIN_U];
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+i*2+0, power>>8);
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+i*2+1, power);
}
}
static uint16 e2rom_read_fac_power_default_3x(uint32 chn)
{
uint16 power;
@@ -2860,6 +2917,7 @@ void e2rom_load_default_param(unsigned char menu)
atsc_para.system_para.gps = 0;
atsc_para.system_para.test = TEST_OFF;
atsc_para.system_para.spec_enable = 1;
atsc_para.system_para.hardware_version = DEFAULT_HARDWARE_VERSION;
//atsc_para.system_para.net = 1; //MFN;
atsc_para.system_para.ctrl = CTRL_REMOTE; // remote
@@ -3243,6 +3301,7 @@ void e2rom_load_default_param(unsigned char menu)
case MENU_POWER:
atsc_para.rf_para.power = RF_POWER_ZERO;
e2rom_fac_power_rst_v1_1();
if(atsc_para.wl_para.exc_5x==0)
{
atsc_para.rf_para.db = DEFAULT_RF_POWER_DB_3X;
@@ -3270,27 +3329,41 @@ void e2rom_load_default_param(unsigned char menu)
void e2rom_read_leak(uint32 chn,S_WE_PARA *ppara)
{
uint8 data = 0;
uint8 data;
uint16 base = e2rom_active_power_addr();
if(atsc_para.wl_para.exc_5x==0)
data = c256_byteread(base+chn*2+0);
ppara->power = (data<<8)|c256_byteread(base+chn*2+1);
/*
* Populate an upgraded unit's missing V1.1 entry from the measured
* V1.1 defaults and persist it in the independent V1.1 EEPROM table.
*/
if((ppara->power>WE_POWER_MAX) &&
(atsc_para.system_para.hardware_version == HARDWARE_VERSION_V1_1))
{
data = c256_byteread(EEPROM_CH2_POWER_ADDR+chn*2+0);
ppara->power = (data<<8)|c256_byteread(EEPROM_CH2_POWER_ADDR+chn*2+1);
if(ppara->power>WE_POWER_MAX)
if((chn>=FREQ_MIN_V1)&&(chn<=FREQ_MAX_V3))
{
ppara->power = e2rom_read_fac_power_default_3x(chn);
ppara->power = we_power_v1_1_v[chn-FREQ_MIN_V1];
}
else if((chn>=FREQ_MIN_U)&&(chn<=FREQ_MAX_U))
{
ppara->power = we_power_v1_1[chn-FREQ_MIN_U];
}
if(ppara->power<=WE_POWER_MAX)
{
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+chn*2+0,ppara->power>>8);
c256_bytewrite(EEPROM_CH_POWER_V1_1_ADDR+chn*2+1,ppara->power);
}
}
else
{
data = c256_byteread(EEPROM_CH1_POWER_ADDR+chn*2+0);
ppara->power = (data<<8)|c256_byteread(EEPROM_CH1_POWER_ADDR+chn*2+1);
if(ppara->power>WE_POWER_MAX)
{
if(ppara->power>WE_POWER_MAX)
{
if(atsc_para.wl_para.exc_5x==0)
ppara->power = e2rom_read_fac_power_default_3x(chn);
else
ppara->power = e2rom_read_fac_power_default_5x(chn);
}
}
}
extern void fpga_read_system(S_SYSTEM_PARA *ppara);
@@ -3443,6 +3516,7 @@ void e2rom_read_all_para(void)
e2rom_load_default_param(2);
e2rom_load_default_param(3);
e2rom_fac_power_rst_v1_1();
if(atsc_para.wl_para.exc_5x==0) //此处是将非当前标准的we功率也置为默认值.
{
e2rom_fac_power_rst_5x();