From 46db56d45caea10122d3eb0af4231770d5ad332f Mon Sep 17 00:00:00 2001 From: rfeng Date: Fri, 28 Aug 2026 13:29:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=89=A9=E5=B1=95?= =?UTF-8?q?=20V1.1=20WE=20=E6=A0=A1=E5=87=86=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/atsc_app/bsp/eeprom.c | 23 +++++++++++++++++------ src/atsc_app/inc/lcd_task.h | 2 ++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/atsc_app/bsp/eeprom.c b/src/atsc_app/bsp/eeprom.c index 22163b1..6e1f9ca 100755 --- a/src/atsc_app/bsp/eeprom.c +++ b/src/atsc_app/bsp/eeprom.c @@ -94,15 +94,15 @@ static const uint16 we_power_v1_1_v[]= /* * 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). + * 1 raw step = 0.05 dB; 300 = 0 dB. V1.1 may use values up to 720 + * while V1.0 remains limited to 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 + 480,495,512,528,547,565,590,614,635,662,687,715,500,500,500,500 }; /*auto ver @@ -419,6 +419,12 @@ void e2rom_save_wd(S_WD_PARA *ppara) c256_bytewrite(EEPROM_WD_ADDR+i,*pchar++); } } +uint16 get_we_power_max(void) +{ + return (atsc_para.system_para.hardware_version == HARDWARE_VERSION_V1_1) ? + WE_POWER_MAX_V1_1 : WE_POWER_MAX; +} + static uint16 e2rom_legacy_power_addr(void) { return (atsc_para.wl_para.exc_5x == 0) ? @@ -436,6 +442,10 @@ static uint16 e2rom_active_power_addr(void) void e2rom_save_leak(uint32 ch, S_WE_PARA *ppara) { uint16 base = e2rom_active_power_addr(); + uint16 power_max = get_we_power_max(); + + if(ppara->power > power_max) + ppara->power = power_max; c256_bytewrite(base+ch*2+0,ppara->power>>8); c256_bytewrite(base+ch*2+1,ppara->power); @@ -3331,6 +3341,7 @@ void e2rom_read_leak(uint32 chn,S_WE_PARA *ppara) { uint8 data; uint16 base = e2rom_active_power_addr(); + uint16 power_max = get_we_power_max(); data = c256_byteread(base+chn*2+0); ppara->power = (data<<8)|c256_byteread(base+chn*2+1); @@ -3339,7 +3350,7 @@ void e2rom_read_leak(uint32 chn,S_WE_PARA *ppara) * 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) && + if((ppara->power>power_max) && (atsc_para.system_para.hardware_version == HARDWARE_VERSION_V1_1)) { if((chn>=FREQ_MIN_V1)&&(chn<=FREQ_MAX_V3)) @@ -3351,14 +3362,14 @@ void e2rom_read_leak(uint32 chn,S_WE_PARA *ppara) ppara->power = we_power_v1_1[chn-FREQ_MIN_U]; } - if(ppara->power<=WE_POWER_MAX) + if(ppara->power<=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); } } - if(ppara->power>WE_POWER_MAX) + if(ppara->power>power_max) { if(atsc_para.wl_para.exc_5x==0) ppara->power = e2rom_read_fac_power_default_3x(chn); diff --git a/src/atsc_app/inc/lcd_task.h b/src/atsc_app/inc/lcd_task.h index 6611046..6261e82 100755 --- a/src/atsc_app/inc/lcd_task.h +++ b/src/atsc_app/inc/lcd_task.h @@ -105,6 +105,7 @@ #define WE_POWER_ZERO 300 //we屏 0db对应值 #define WE_POWER_MIN 0 #define WE_POWER_MAX 500 +#define WE_POWER_MAX_V1_1 720 //V1.1物理功率余量允许到+21dB typedef enum { @@ -1369,6 +1370,7 @@ void e2rom_read_psts(S_PSTS_PARA *ppara); extern void e2rom_read_leak(uint32 chn,S_WE_PARA *ppara); extern void e2rom_save_leak(uint32 UI_ch, S_WE_PARA *ppara); +extern uint16 get_we_power_max(void); extern void e2rom_save_ad(S_ADVANCE_PARA *ppara); extern void e2rom_save_ad2(S_ADVANCE2_PARA *ppara); extern void e2rom_save_ad3(S_ADVANCE3_PARA *ppara);