diff --git a/sa_core.c b/sa_core.c index b7e3b85..06bd919 100644 --- a/sa_core.c +++ b/sa_core.c @@ -1236,8 +1236,8 @@ void update_rbw(void) // calculate the actual_rbw and the vbwSteps (# actual_rbw_x10 = 6000; #endif #ifdef __SI4463__ - if (actual_rbw_x10 < 11) - actual_rbw_x10 = 11; + if (actual_rbw_x10 < 1) + actual_rbw_x10 = 1; if (actual_rbw_x10 > 8500) actual_rbw_x10 = 8500; #endif diff --git a/si4432.c b/si4432.c index 05180de..655eb9b 100644 --- a/si4432.c +++ b/si4432.c @@ -1510,6 +1510,36 @@ static uint16_t getADC(uint8_t adc_en, uint8_t adc_cfg, uint8_t part) } +// -------------- 0.2 kHz ---------------------------- + +#undef RF_MODEM_TX_RAMP_DELAY_8_1 +#undef RF_MODEM_CHFLT_RX1_CHFLT_COE13_7_0_12_1 +#undef RF_MODEM_CHFLT_RX1_CHFLT_COE1_7_0_12_1 +#undef RF_MODEM_CHFLT_RX2_CHFLT_COE7_7_0_12_1 + +#define RF_MODEM_TX_RAMP_DELAY_12_1 0x11, 0x20, 0x0C, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xF0, 0x10, 0x74, 0xE8, 0x00, 0xA9 +// #define RF_MODEM_TX_RAMP_DELAY_8_1 0x11, 0x20, 0x08, 0x18, 0x01, 0x00, 0x08, 0x03, 0x80, 0x00, 0xF0, 0x11 +#define RF_MODEM_CHFLT_RX1_CHFLT_COE13_7_0_12_1 0x11, 0x21, 0x0C, 0x00, 0x0C, 0x01, 0xE4, 0xB9, 0x86, 0x55, 0x2B, 0x0B, 0xF8, 0xEF, 0xEF, 0xF2 +//#define RF_MODEM_CHFLT_RX1_CHFLT_COE13_7_0_12_1 0x11, 0x21, 0x0C, 0x00, 0xC6, 0xC1, 0xB2, 0x9C, 0x80, 0x63, 0x47, 0x2F, 0x1B, 0x0E, 0x05, 0x00 +#define RF_MODEM_CHFLT_RX1_CHFLT_COE1_7_0_12_1 0x11, 0x21, 0x0C, 0x0C, 0xF8, 0xFC, 0x05, 0x00, 0xFF, 0x0F, 0x0C, 0x01, 0xE4, 0xB9, 0x86, 0x55 +//#define RF_MODEM_CHFLT_RX1_CHFLT_COE1_7_0_12_1 0x11, 0x21, 0x0C, 0x0C, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x0F, 0xC6, 0xC1, 0xB2, 0x9C, 0x80, 0x63 +#define RF_MODEM_CHFLT_RX2_CHFLT_COE7_7_0_12_1 0x11, 0x21, 0x0C, 0x18, 0x2B, 0x0B, 0xF8, 0xEF, 0xEF, 0xF2, 0xF8, 0xFC, 0x05, 0x00, 0xFF, 0x0F +//#define RF_MODEM_CHFLT_RX2_CHFLT_COE7_7_0_12_1 0x11, 0x21, 0x0C, 0x18, 0x47, 0x2F, 0x1B, 0x0E, 0x05, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x0F + +#define RF_MODEM_RAW_SEARCH2_2_1 0x11, 0x20, 0x02, 0x50, 0x94, 0x0A + +#define RF_GLOBAL_CONFIG_1_1 0x11, 0x00, 0x01, 0x03, 0x20 + +uint8_t SI4463_RBW_02kHz[] = +{ + 6, RF_MODEM_RAW_SEARCH2_2_1, \ + 5, RF_GLOBAL_CONFIG_1_1, \ + 0x0C, RF_MODEM_TX_RAMP_DELAY_12_1, \ + 0x10, RF_MODEM_CHFLT_RX1_CHFLT_COE13_7_0_12_1, \ + 0x10, RF_MODEM_CHFLT_RX1_CHFLT_COE1_7_0_12_1, \ + 0x10, RF_MODEM_CHFLT_RX2_CHFLT_COE7_7_0_12_1, \ + 0x00 +}; // -------------- 1kHz ---------------------------- #undef RF_MODEM_TX_RAMP_DELAY_8_1 @@ -1673,6 +1703,7 @@ typedef struct { static RBW_t RBW_choices[] = { // BW register corr freq + {SI4463_RBW_02kHz, 0,2}, {SI4463_RBW_1kHz, 0,10}, {SI4463_RBW_3kHz, 0,30}, {SI4463_RBW_10kHz, 0,100}, @@ -1684,18 +1715,18 @@ static RBW_t RBW_choices[] = static pureRSSI_t SI4463_RSSI_correction = float_TO_PURE_RSSI(-120); -uint16_t SI4463_force_RBW(int i) +uint16_t SI4463_force_RBW(int f) { setState(SI446X_STATE_TX_TUNE); my_microsecond_delay(200); - uint8_t *config = RBW_choices[i].reg; - for(uint16_t i=0;i