diff --git a/app/menu.c b/app/menu.c index 68e40fa..ae43fb4 100644 --- a/app/menu.c +++ b/app/menu.c @@ -51,7 +51,7 @@ #ifdef ENABLE_F_CAL_MENU void writeXtalFreqCal(const int32_t value, const bool update_eeprom) { - BK4819_WriteRegister(BK4819_REG_3B, 22656 + value); + BK4819_WriteRegister(0x3B, 22656 + value); if (update_eeprom) { diff --git a/driver/bk4819.c b/driver/bk4819.c index a60910f..3b1cabe 100644 --- a/driver/bk4819.c +++ b/driver/bk4819.c @@ -251,8 +251,28 @@ void BK4819_WriteU16(uint16_t Data) } } -void BK4819_DisableAGC() +void BK4819_DisableAGC(void) { + // REG_7E + // + // <15> 0 AGC Fix Mode. + // 1=Fix; 0=Auto. + // + // <14:12> 0b011 AGC Fix Index. + // 011=Max, then 010,001,000,111,110,101,100(min). + // + // <5:3> 0b101 DC Filter Band Width for Tx (MIC In). + // 000=Bypass DC filter; + // + // <2:0> 0b110 DC Filter Band Width for Rx (IF In). + // 000=Bypass DC filter; + // + BK4819_WriteRegister(0x7E, + (1u << 15) | // 0 AGC fix mode + (3u << 12) | // 3 AGC fix index + (5u << 3) | // 5 DC Filter band width for Tx (MIC In) + (6u << 0)); // 6 DC Filter band width for Rx (I.F In) + // REG_10 // // 0x0038 Rx AGC Gain Table[0]. (Index Max->Min is 3,2,1,0,-1) @@ -290,10 +310,7 @@ void BK4819_DisableAGC() // 2 = -21dB // 1 = -27dB // 0 = -33dB - - // undoes BK4819_EnableAGC reg write - //BK4819_WriteRegister(0x7E, (0u << 15)); - + // BK4819_WriteRegister(0x13, (3u << 8) | (2u << 5) | (3u << 3) | (6u << 0)); // 000000 11 101 11 110 BK4819_WriteRegister(0x12, 0x037B); // 000000 11 011 11 011 BK4819_WriteRegister(0x11, 0x027B); // 000000 10 011 11 011 @@ -305,7 +322,7 @@ void BK4819_DisableAGC() BK4819_WriteRegister(0x7B, 0x8420); } -void BK4819_EnableAGC() +void BK4819_EnableAGC(void) { // TODO: See if this attenuates overloading // signals as well as boosting weak ones @@ -327,6 +344,12 @@ void BK4819_EnableAGC() // default fix index too strong, set to min (011->100) //BK4819_WriteRegister(0x7E, (1u << 15) | (4u << 12) | (5u << 3) | (6u << 0)); + BK4819_WriteRegister(0x7E, + (0u << 15) | // 0 AGC fix mode + (3u << 12) | // 3 AGC fix index + (5u << 3) | // 5 DC Filter band width for Tx (MIC In) + (6u << 0)); // 6 DC Filter band width for Rx (I.F In) + BK4819_WriteRegister(0x13, (3u << 8) | (2u << 5) | (3u << 3) | (6u << 0)); // 000000 11 101 11 110 BK4819_WriteRegister(0x12, 0x037C); BK4819_WriteRegister(0x11, 0x027B); diff --git a/driver/bk4819.h b/driver/bk4819.h index 64bd21a..08f0443 100644 --- a/driver/bk4819.h +++ b/driver/bk4819.h @@ -67,8 +67,8 @@ void BK4819_WriteRegister(const uint8_t Register, uint16_t Data); void BK4819_WriteU8(uint8_t Data); void BK4819_WriteU16(uint16_t Data); -void BK4819_DisableAGC(); -void BK4819_EnableAGC(); +void BK4819_DisableAGC(void); +void BK4819_EnableAGC(void); void BK4819_set_GPIO_pin(bk4819_gpio_pin_t Pin, bool bSet); diff --git a/firmware.bin b/firmware.bin index 28b1233..4098cf9 100644 Binary files a/firmware.bin and b/firmware.bin differ diff --git a/firmware.packed.bin b/firmware.packed.bin index f02fbfc..a5de47e 100644 Binary files a/firmware.packed.bin and b/firmware.packed.bin differ