From 06722a23d5eefdc6401f5b76aec139ac24e172d3 Mon Sep 17 00:00:00 2001 From: OneOfEleven Date: Mon, 18 Sep 2023 17:42:54 +0100 Subject: [PATCH] Delete old file --- app/app.c | 87 +++++++++++++++++++++++++++++++++++++++++----- driver/bk4819.c | 90 ++++++++++++++++++++++++++++++++++++++++++------ font5x7.png | Bin 27909 -> 0 bytes 3 files changed, 158 insertions(+), 19 deletions(-) delete mode 100644 font5x7.png diff --git a/app/app.c b/app/app.c index 62c855e..66e41e4 100644 --- a/app/app.c +++ b/app/app.c @@ -464,7 +464,7 @@ void APP_StartListening(FUNCTION_Type_t Function) // RX AF level // - // REG_48 <15:12> 11 ?????? + // REG_48 <15:12> 11 ??? // // REG_48 <11:10> 0 AF Rx Gain-1 // 0 = 0dB @@ -476,10 +476,9 @@ void APP_StartListening(FUNCTION_Type_t Function) // 63 = max // 0 = mute // - // REG_48 <3:0> 15 AF DAC Gain (after Gain-1 and Gain-2) + // REG_48 <3:0> 15 AF DAC Gain (after Gain-1 and Gain-2) approx 2dB/step // 15 = max // 0 = min - // approx 2dB/step // BK4819_WriteRegister(BK4819_REG_48, #if 0 @@ -496,9 +495,44 @@ void APP_StartListening(FUNCTION_Type_t Function) BK4819_WriteRegister(0x4B, BK4819_ReadRegister(0x4B) & ~(1u << 5)); // enable RX ALC - // help improve AM RX distorted audio by reducing the PGA gain (still bad with stronger signals + // help improve AM RX distorted audio by reducing the PGA gain (still very bad with stronge signals) // - // I think the proper solution is to set the RX AGC to limit the front end/I.F gain + // I think a solution is to dynamically change these values as the RSSI moves up/down ? + // without a detailed datasheet on the chip it's very difficult to fix things + // + // REG_10 <15:0> 0x0038 Rx AGC Gain Table[0]. (Index Max->Min is 3,2,1,0,-1) + // + // <9:8> = LNA Gain Short + // 3 = 0dB + // 2 = -11dB + // 1 = -16dB + // 0 = -19dB + // + // <7:5> = LNA Gain + // 7 = 0dB + // 6 = -2dB + // 5 = -4dB + // 4 = -6dB + // 3 = -9dB + // 2 = -14dB + // 1 = -19dB + // 0 = -24dB + // + // <4:3> = MIXER Gain + // 3 = 0dB + // 2 = -3dB + // 1 = -6dB + // 0 = -8dB + // + // <2:0> = PGA Gain + // 7 = 0dB + // 6 = -3dB + // 5 = -6dB + // 4 = -9dB + // 3 = -15dB + // 2 = -21dB + // 1 = -27dB + // 0 = -33dB // // LNA_SHORT .. 0dB // LNA ........ 14dB @@ -506,6 +540,10 @@ void APP_StartListening(FUNCTION_Type_t Function) // PGA ........ -15dB // LNA SHORT LNA MIXER PGA BK4819_WriteRegister(BK4819_REG_13, (3u << 8) | (2u << 5) | (3u << 3) | (3u << 0)); + //BK4819_WriteRegister(BK4819_REG_12, 0x037B); // 000000 11 011 11 011 + //BK4819_WriteRegister(BK4819_REG_11, 0x027B); // 000000 10 011 11 011 + //BK4819_WriteRegister(BK4819_REG_10, 0x007A); // 000000 00 011 11 010 + //BK4819_WriteRegister(BK4819_REG_14, 0x0019); // 000000 00 000 11 001 gNeverUsed = 0; } @@ -514,7 +552,7 @@ void APP_StartListening(FUNCTION_Type_t Function) // RX AF level // - // REG_48 <15:12> 11 ?????? + // REG_48 <15:12> 11 ??? // // REG_48 <11:10> 0 AF Rx Gain-1 // 0 = 0dB @@ -526,10 +564,9 @@ void APP_StartListening(FUNCTION_Type_t Function) // 63 = max // 0 = mute // - // REG_48 <3:0> 15 AF DAC Gain (after Gain-1 and Gain-2) + // REG_48 <3:0> 15 AF DAC Gain (after Gain-1 and Gain-2) approx 2dB/step // 15 = max // 0 = min - // approx 2dB/step // BK4819_WriteRegister(BK4819_REG_48, (11u << 12) | // ??? @@ -539,6 +576,40 @@ void APP_StartListening(FUNCTION_Type_t Function) BK4819_WriteRegister(0x4B, BK4819_ReadRegister(0x4B) | (1u << 5)); // disable RX ALC + // REG_10 <15:0> 0x0038 Rx AGC Gain Table[0]. (Index Max->Min is 3,2,1,0,-1) + // + // <9:8> = LNA Gain Short + // 3 = 0dB + // 2 = -11dB + // 1 = -16dB + // 0 = -19dB + // + // <7:5> = LNA Gain + // 7 = 0dB + // 6 = -2dB + // 5 = -4dB + // 4 = -6dB + // 3 = -9dB + // 2 = -14dB + // 1 = -19dB + // 0 = -24dB + // + // <4:3> = MIXER Gain + // 3 = 0dB + // 2 = -3dB + // 1 = -6dB + // 0 = -8dB + // + // <2:0> = PGA Gain + // 7 = 0dB + // 6 = -3dB + // 5 = -6dB + // 4 = -9dB + // 3 = -15dB + // 2 = -21dB + // 1 = -27dB + // 0 = -33dB + // // LNA_SHORT .. 0dB // LNA ........ 14dB // MIXER ...... 0dB diff --git a/driver/bk4819.c b/driver/bk4819.c index 00d2bee..9e2e83f 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -59,7 +59,7 @@ void BK4819_Init(void) // RX AF level // - // REG_48 <15:12> 11 ?????? + // REG_48 <15:12> 11 ??? // // REG_48 <11:10> 0 AF Rx Gain-1 // 0 = 0dB @@ -71,10 +71,9 @@ void BK4819_Init(void) // 63 = max // 0 = mute // - // REG_48 <3:0> 15 AF DAC Gain (after Gain-1 and Gain-2) + // REG_48 <3:0> 15 AF DAC Gain (after Gain-1 and Gain-2) approx 2dB/step // 15 = max // 0 = min - // approx 2dB/step // BK4819_WriteRegister(BK4819_REG_48, // 0xB3A8); // 1011 00 111010 1000 (11u << 12) | // ??? @@ -216,17 +215,51 @@ void BK4819_SetAGC(uint8_t Value) { if (Value == 0) { + // REG_10 <15:0> 0x0038 Rx AGC Gain Table[0]. (Index Max->Min is 3,2,1,0,-1) + // + // <9:8> = LNA Gain Short + // 3 = 0dB + // 2 = -11dB + // 1 = -16dB + // 0 = -19dB + // + // <7:5> = LNA Gain + // 7 = 0dB + // 6 = -2dB + // 5 = -4dB + // 4 = -6dB + // 3 = -9dB + // 2 = -14dB + // 1 = -19dB + // 0 = -24dB + // + // <4:3> = MIXER Gain + // 3 = 0dB + // 2 = -3dB + // 1 = -6dB + // 0 = -8dB + // + // <2:0> = PGA Gain + // 7 = 0dB + // 6 = -3dB + // 5 = -6dB + // 4 = -9dB + // 3 = -15dB + // 2 = -21dB + // 1 = -27dB + // 0 = -33dB + // // 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); // 000000 11 011 11 011 + BK4819_WriteRegister(BK4819_REG_11, 0x027B); // 000000 10 011 11 011 + BK4819_WriteRegister(BK4819_REG_10, 0x007A); // 000000 00 011 11 010 + BK4819_WriteRegister(BK4819_REG_14, 0x0019); // 000000 00 000 11 001 - BK4819_WriteRegister(BK4819_REG_12, 0x037B); - BK4819_WriteRegister(BK4819_REG_11, 0x027B); - BK4819_WriteRegister(BK4819_REG_10, 0x007A); - BK4819_WriteRegister(BK4819_REG_14, 0x0019); BK4819_WriteRegister(BK4819_REG_49, 0x2A38); BK4819_WriteRegister(BK4819_REG_7B, 0x8420); } @@ -235,19 +268,54 @@ void BK4819_SetAGC(uint8_t Value) { unsigned int i; + // REG_10 <15:0> 0x0038 Rx AGC Gain Table[0]. (Index Max->Min is 3,2,1,0,-1) + // + // <9:8> = LNA Gain Short + // 3 = 0dB + // 2 = -11dB + // 1 = -16dB + // 0 = -19dB + // + // <7:5> = LNA Gain + // 7 = 0dB + // 6 = -2dB + // 5 = -4dB + // 4 = -6dB + // 3 = -9dB + // 2 = -14dB + // 1 = -19dB + // 0 = -24dB + // + // <4:3> = MIXER Gain + // 3 = 0dB + // 2 = -3dB + // 1 = -6dB + // 0 = -8dB + // + // <2:0> = PGA Gain + // 7 = 0dB + // 6 = -3dB + // 5 = -6dB + // 4 = -9dB + // 3 = -15dB + // 2 = -21dB + // 1 = -27dB + // 0 = -33dB + // // 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); // 000000 11 011 11 100 + BK4819_WriteRegister(BK4819_REG_11, 0x027B); // 000000 10 011 11 011 + BK4819_WriteRegister(BK4819_REG_10, 0x007A); // 000000 00 011 11 010 + BK4819_WriteRegister(BK4819_REG_14, 0x0018); // 000000 00 000 11 000 - BK4819_WriteRegister(BK4819_REG_12, 0x037C); - BK4819_WriteRegister(BK4819_REG_11, 0x027B); - BK4819_WriteRegister(BK4819_REG_10, 0x007A); - BK4819_WriteRegister(BK4819_REG_14, 0x0018); BK4819_WriteRegister(BK4819_REG_49, 0x2A38); BK4819_WriteRegister(BK4819_REG_7B, 0x318C); + BK4819_WriteRegister(BK4819_REG_7C, 0x595E); BK4819_WriteRegister(BK4819_REG_20, 0x8DEF); diff --git a/font5x7.png b/font5x7.png deleted file mode 100644 index 8bb10c0d2cf4c75dd1a918ec33406da3231e3627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27909 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 k