From 628f00a93952476d6e2640939a095d883e61634b Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Sun, 17 Sep 2023 11:06:42 +0100 Subject: [PATCH] Fix frequency band bug --- app/app.c | 22 ++++++++++++++++++---- driver/bk4819.c | 30 +++++++++++++++++++++++++++--- firmware | Bin 165092 -> 165092 bytes firmware.bin | Bin 48828 -> 48812 bytes firmware.packed.bin | Bin 48846 -> 48830 bytes frequencies.c | 4 ++-- radio.c | 29 +++++++++++++++++++++-------- 7 files changed, 68 insertions(+), 17 deletions(-) diff --git a/app/app.c b/app/app.c index 1c4c53f..783a60e 100644 --- a/app/app.c +++ b/app/app.c @@ -447,19 +447,33 @@ void APP_StartListening(FUNCTION_Type_t Function) if (gRxVfo->IsAM) { + // RX AF level BK4819_WriteRegister(BK4819_REG_48, 0xB3A8); - // PGA + MIXER + LNA + LNA_SHORT - BK4819_WriteRegister(BK4819_REG_13, 3u | (3u << 3) | (2u << 5) | (3u << 8)); + // help improve AM RX audio by reducing the PGA gain + // + // I think the solution is to set the RX AGC to limit the front end gain + // + // LNA_SHORT .. 0dB + // LNA ........ 14dB + // MIXER ...... 0dB + // PGA ........ -15dB + // + BK4819_WriteRegister(BK4819_REG_13, (3u << 8) | (2u << 5) | (3u << 3) | (3u << 0)); gNeverUsed = 0; } else { + // RX AF level BK4819_WriteRegister(BK4819_REG_48, 0xB000 | (gEeprom.VOLUME_GAIN << 4) | (gEeprom.DAC_GAIN << 0)); - // PGA + MIXER + LNA + LNA_SHORT - BK4819_WriteRegister(BK4819_REG_13, 0x03BE); + // LNA_SHORT .. 0dB + // LNA ........ 14dB + // MIXER ...... 0dB + // PGA ........ -3dB + // + BK4819_WriteRegister(BK4819_REG_13, (3u << 8) | (2u << 5) | (3u << 3) | (6u << 0)); } #ifdef ENABLE_VOICE diff --git a/driver/bk4819.c b/driver/bk4819.c index 044d6bd..55f0742 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -41,12 +41,19 @@ void BK4819_Init(void) BK4819_WriteRegister(BK4819_REG_00, 0x8000); BK4819_WriteRegister(BK4819_REG_00, 0x0000); + BK4819_WriteRegister(BK4819_REG_37, 0x1D0F); BK4819_WriteRegister(BK4819_REG_36, 0x0022); + BK4819_SetAGC(0); - BK4819_WriteRegister(BK4819_REG_19, 0x1041); + + BK4819_WriteRegister(BK4819_REG_19, 0b0001000001000001); // <15> MIC AGC 1 = disable 0 = enable + BK4819_WriteRegister(BK4819_REG_7D, 0xE940); + + // RX AF level BK4819_WriteRegister(BK4819_REG_48, 0xB3A8); + BK4819_WriteRegister(BK4819_REG_09, 0x006F); BK4819_WriteRegister(BK4819_REG_09, 0x106B); BK4819_WriteRegister(BK4819_REG_09, 0x2067); @@ -63,9 +70,12 @@ void BK4819_Init(void) BK4819_WriteRegister(BK4819_REG_09, 0xD0CB); BK4819_WriteRegister(BK4819_REG_09, 0xE0B5); BK4819_WriteRegister(BK4819_REG_09, 0xF09F); + BK4819_WriteRegister(BK4819_REG_1F, 0x5454); BK4819_WriteRegister(BK4819_REG_3E, 0xA037); + gBK4819_GpioOutState = 0x9000; + BK4819_WriteRegister(BK4819_REG_33, 0x9000); BK4819_WriteRegister(BK4819_REG_3F, 0); } @@ -191,7 +201,13 @@ void BK4819_SetAGC(uint8_t Value) { if (Value == 0) { - BK4819_WriteRegister(BK4819_REG_13, 0x03BE); + // LNA_SHORT .. 0dB + // LNA ........ 14dB + // MIXER ...... 0dB + // PGA ........ -3dB + // + BK4819_WriteRegister(BK4819_REG_13, (3u << 8) | (2u << 5) | (3u << 3) | (6u << 0)); // 000000 11 101 11 110 + BK4819_WriteRegister(BK4819_REG_12, 0x037B); BK4819_WriteRegister(BK4819_REG_11, 0x027B); BK4819_WriteRegister(BK4819_REG_10, 0x007A); @@ -203,7 +219,14 @@ void BK4819_SetAGC(uint8_t Value) if (Value == 1) { unsigned int i; - BK4819_WriteRegister(BK4819_REG_13, 0x03BE); + + // LNA_SHORT .. 0dB + // LNA ........ 14dB + // MIXER ...... 0dB + // PGA ........ -3dB + // + BK4819_WriteRegister(BK4819_REG_13, (3u << 8) | (2u << 5) | (3u << 3) | (6u << 0)); // 000000 11 101 11 110 + BK4819_WriteRegister(BK4819_REG_12, 0x037C); BK4819_WriteRegister(BK4819_REG_11, 0x027B); BK4819_WriteRegister(BK4819_REG_10, 0x007A); @@ -212,6 +235,7 @@ void BK4819_SetAGC(uint8_t Value) BK4819_WriteRegister(BK4819_REG_7B, 0x318C); BK4819_WriteRegister(BK4819_REG_7C, 0x595E); BK4819_WriteRegister(BK4819_REG_20, 0x8DEF); + for (i = 0; i < 8; i++) // Bug? The bit 0x2000 below overwrites the (i << 13) BK4819_WriteRegister(BK4819_REG_06, ((i << 13) | 0x2500u) + 0x036u); diff --git a/firmware b/firmware index fea595038c967fc1a60601090ecaf259a7e23999..b75429de5a70df29d51656e78a2d8acbfa748223 100644 GIT binary patch delta 8332 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 QD^->xQ=_|bwelSOUx_KN?EnA( diff --git a/firmware.bin b/firmware.bin index aee8da5950e633368be898fec86f6a9fb8210285..2409f83c9139249385653313d2841b3c6b159132 100644 GIT binary patch delta 5033 zcmZ`-dstIfw%_X{Apt~!h$bL%l86ujBM=b~l}9Qi1n`LuunM)dP->0EN6;#u;$x_z zxNAl6+0L|5+Nzvl2P=bP>$R=dTT<^-sCw0DHFY{|L#v*gka%VtZU4OazTa7Euf5Mc z>$Ue@J7@jOdwyp36zFc5dK2c-Xt2O*v=SD=Zti1P4={~Omu&;s$o0xE2Y`&*8QjLe zV$L``n1RbQO>KgYxJq@V9A4$xM&<%sqcF?lDz30j((2J2{ZY8|Ml!n_3L(`DvuVZ9D_RUX63iT5A;s{RrrDHd3pl_=crf~L1z}e1h;8V;fX+T zh|whz#@$F)+b+ZR)KWAZR?rCln6`a1sW=73(Iv%c7{|TESz&8&o#~}d zcBRKx_AA^2^mefyUgmC=C>gZSHIv76a&uM$bkhg3Qs5RBH#-TSiq$||6^JJ)1cATMd_Zs@;k~EmkDJp^?*fgXk z@m9B1?jBF0Dx-p5#x~Jq5V^aW=2kYt8hW`h3%;a*&qhVH3@zQE-w`Dbx6~ERuA+Ij zo!j+9SCx-zlFNQJgkgMLwB)%zp?Wu-YlE#^-Lka|gmHr}oB;TiJ63Ix^uP0>4w9*| z#()eT&V!(#~rKq$xzmBN%(+Xs6{bOzla?$=NMJm0HWEFV% z<&UKP$tWH1xIY8A5UzN+5}5m4bl%HjQR~$&x5Hr?vmy=WEM1X}F5A0eDL#c2COAuD z?JFRT?zJ0D+l67cw*{c5Wp0&MMRZ6v3Y*84<;}^husqb{XdASi9;vsM-m~lADK2>B zENQ=f=9Tu4bACu1<7C|SN5uUP*bMp4B?=a5q;A5GbYPhmTY9_S$d=r4QE5nm(+LNeJmv6^^Jn zkSFg~7VfD&kVgh0$)*bX)0?W>G=naDM*ieFmoM$b(hLO#cbCPo<78(ELwB3ov_MbM zZH~11!AG@PIT7PWI}bWml^(N2JtLY%IWH#4`VZR5w68lBmFh`G>OtFAoh{_j0%+9{ zkzXqYo^$Q?jjhg%|8SH0M2Lj6j z!tB>V3v|_%t%b8SVdR6N(Q-@C?Aluy=T^L7kN5V5Vyj@YqQ91v!v&-MzQx}jx2IP84OD#E_5@a`7XOr1w z@70?l8{{3|)CFNT(M!rcL>11MBkl5z{f=}JYLLGhob!5mVBok zr?mCcqIIgc-}AI#V!2q~oj?|Z5|T4`&!258B1b=bo!O2#oDzSNE?GC4NpaG3>msd2 z%oH&p#ffgz_o6xHP~(7hm0s2=@OtryBTj1q4(y(!+@D%8woum6k_Q9Pg~~lOmPn$t zwP}k2+~X$a_glf!amD*@-)6Z*LeQ@OwEZWcM7{vO6eyFH^y?1k`+dh#c zUOsoo?Mflp*uF2$Dc-=ENV-|;h%sn$X4$kB4}VWAE;3X_sj8(lB=G-7muxVO9uy>A z>&1N63H%75fSqRb@aO4~4M~bi9)S;}&J9s8oc_3BbbYpvY#3`XR1r3km{UhMHsyhH zqFLh*_;4@#INjw=fzS6g7@}aT<%ue*MUm$PSsO7ieS{VHQm+y>iBSat|D7iSpE4n$ zH|61RdNMQGY}b_%+@j*2~ZG{@yc3fX9w4@+eR~ z9pz=!@n}gHzIELrjm>&8whrQh`!-%7t!dOn4+wHy5c+6~Pbvfwje&D+x84cfge9j?;BZ83p|(Y&`2$EbFDJ#+sA zJ+Qruad*&%+rPl?{C!6aR$@tioR7~Yd@i9k{x~7{9WRNO^}TZ1&p%5?H?L5~~By&~zAgn6E9r=hsSvDPPHbh9(_(-hb z2T}8P12Auq@1VxlZ15vp{o0pd4}{Qn@d$AykYuvS%JZ?bbZ2SU`QM~^Vz&k#=lNgg z$2%$f7oG8^OOQvSc10^RX9$UzNol>+{3mX`Q?%Z zNUM;RBArQR(I)tgUZpo-75(V-8oVtV_NGAnO6)wv5ON$RU4)L@@ev^ol-Y~&@gC52j1CYjoc^eEyT#0Q8j#972bgrsN%BEWFT z`fQbvUU@?c9rVXHn&A^#w{JOIr>=d`n52r}qwvNV;}^EX2@5`{&mu z`NA?1YGsU4j4k;7n6x9nb9|NhPLzk z+w{tT^?2o((H0jz@{!6ws65N;QsAu8o)AKJwE5vBy6s@J_Wunv?KxNq`852{3V5Dw zJ~TD-XJ4-?q0nUgs*E}QkpG^3d8p1Bfit$EUCBsyBb|*@k2rw*euNa8ENn~hdK&2h zL<`DY=mW`~!^kg2Sru(L+>8Hj%sTRPfT8f{*ukJ$$AxuZShYy?O}nzUkqcgx!=s7BhY9qoR`H zf)wK8FM56aUBpU1qhpDmHx5Y`c0V6G?+iH)>-_zZtqkpZ_=rcdC{4#nEdk6XWB>#8r- z{*#O66+U|UO?}u5pNUMs)6FQ!(V?dp)+(%%9i z1x5-GNNWLqP3Xpxh%Q7A;xj}a;%kJ|cMI_?!o}@4eV!SWlKFgPW_n6U5ScMOe}2+$ KO|G)LT=5?}?Pq2H delta 5159 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 diff --git a/firmware.packed.bin b/firmware.packed.bin index bad1731c34b55eb0667f5bf6165dd8e30dee5be0..787e1eabc77f03a3cf80fd9f5229815d5b3c95db 100644 GIT binary patch delta 19799 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 JG>3bi{s$tab0`1+ diff --git a/frequencies.c b/frequencies.c index d2baa1a..665caae 100644 --- a/frequencies.c +++ b/frequencies.c @@ -118,8 +118,8 @@ FREQUENCY_Band_t FREQUENCY_GetBand(uint32_t Frequency) return BAND3_136MHz; if (Frequency >= 10800000) return BAND2_108MHz; -// if (Frequency >= 5000000) -// return BAND1_50MHz; + if (Frequency >= 5000000) + return BAND1_50MHz; // if (Frequency >= bx_min_Hz) return BAND1_50MHz; diff --git a/radio.c b/radio.c index f63dfb4..2ad0c99 100644 --- a/radio.c +++ b/radio.c @@ -357,6 +357,11 @@ void RADIO_ConfigureChannel(uint8_t VFO, uint32_t Arg) Frequency = pRadio->ConfigRX.Frequency; +#if 1 + // fix previously set incorrect band + Band = FREQUENCY_GetBand(Frequency); +#endif + if (Frequency < LowerLimitFrequencyBandTable[Band]) Frequency = LowerLimitFrequencyBandTable[Band]; else @@ -481,13 +486,21 @@ void RADIO_ApplyOffset(VFO_Info_t *pInfo) break; } - // limit to 50MHz to 600MHz - if (Frequency < 5000000) - Frequency = 5000000; - else - if (Frequency > 60000000) - Frequency = 60000000; - + #if 0 + // limit to 50MHz to 600MHz + if (Frequency < 5000000) + Frequency = 5000000; + else + if (Frequency > 60000000) + Frequency = 60000000; + #else + if (Frequency < LowerLimitFrequencyBandTable[0]) + Frequency = LowerLimitFrequencyBandTable[0]; + else + if (Frequency > UpperLimitFrequencyBandTable[ARRAY_SIZE(UpperLimitFrequencyBandTable) - 1]) + Frequency = UpperLimitFrequencyBandTable[ARRAY_SIZE(UpperLimitFrequencyBandTable) - 1]; + #endif + pInfo->ConfigTX.Frequency = Frequency; } @@ -577,7 +590,7 @@ void RADIO_SetupRegisters(bool bSwitchToFunction0) BK4819_ToggleGpioOut(BK4819_GPIO6_PIN2, true); - // AF Rx Gain and DAC + // AF RX Gain and DAC BK4819_WriteRegister(BK4819_REG_48, 0xB3A8); // 1011 00 111010 1000 InterruptMask = BK4819_REG_3F_SQUELCH_FOUND | BK4819_REG_3F_SQUELCH_LOST;