@@ -543,6 +543,19 @@ static void rf_set_channel_configuration_registers(void)
543543 rf_channel_multiplier++;
544544 }
545545 rf_write_register (CHSPACE, ch_space);
546+ /* Preamble is set for S2-LP as repetitions of 01 or 10 pair
547+ *
548+ * For datarate < 150kbps, using phyFskPreambleLength = 8 repetitions of 01010101
549+ * For datarate >= 150kbps and datarate < 300kbps, using phyFskPreambleLength = 12 repetitions of 01010101
550+ * For datarate >= 300kbps, using phyFskPreambleLength = 24 repetitions of 01010101
551+ */
552+ uint8_t preamble_len = 24 * 4 ;
553+ if (phy_subghz.datarate < 150000 ) {
554+ preamble_len = 8 * 4 ;
555+ } else if (phy_subghz.datarate < 300000 ) {
556+ preamble_len = 12 * 4 ;
557+ }
558+ rf_write_register (PCKTCTRL5, preamble_len);
546559}
547560
548561static void rf_init_registers (void )
@@ -557,7 +570,6 @@ static void rf_init_registers(void)
557570 rf_write_register_field (PCKTCTRL2, PCKT_FCS_TYPE_FIELD, PCKT_FCS_TYPE_4_OCTET);
558571 rf_write_register_field (PCKTCTRL3, PCKT_RXMODE_FIELD, PCKT_RXMODE_NORMAL);
559572 rf_write_register_field (PCKTCTRL3, PCKT_BYTE_SWAP_FIELD, PCKT_BYTE_SWAP_LSB);
560- rf_write_register (PCKTCTRL5, PCKT_PREAMBLE_LEN);
561573 rf_write_register_field (PCKTCTRL6, PCKT_SYNCLEN_FIELD, PCKT_SYNCLEN);
562574 rf_write_register_field (QI, PQI_TH_FIELD, PQI_TH);
563575 rf_write_register_field (QI, SQI_EN_FIELD, SQI_EN);
0 commit comments