Hello everyone,
I hope I post my issue on the right place, if not please move it where you consider better placed.
I am struggling since 3 days to setup the RFM69CW to receive data from an nRF905 chip.
The signal is known as being transmitted over 868.4MHz, GFSK with 100kbps bitrate (Manchester encoded), 50kHz deviation.
Unfortunately, preamble and sync words are not know.
That's why I tried to setup the RFM69 in
continuous mode with following data:
regWrite(REG_OPMODE, RF_OPMODE_SEQUENCER_ON | RF_OPMODE_LISTEN_OFF | RF_OPMODE_STANDBY); // standby
// modulation type
regWrite(REG_DATAMODUL, RF_DATAMODUL_DATAMODE_CONTINUOUS | RF_DATAMODUL_MODULATIONTYPE_FSK | RF_DATAMODUL_MODULATIONSHAPING_01); // GFSK, 0.5 shaping
// bitrate 100kbps, values taken from Table 9, chapter 3.3.2 of user manual
regWrite(REG_BITRATEMSB, RF_BITRATEMSB_100000);
regWrite(REG_BITRATELSB, RF_BITRATELSB_100000);
// deviation 50kHz
regWrite(REG_FDEVMSB, RF_FDEVMSB_50000);
regWrite(REG_FDEVLSB, RF_FDEVLSB_50000);
// carrier frequency
regWrite(REG_FRFMSB, RF_FRFMSB_868); // RF_FRFMSB_315, RF_FRFMSB_433, RF_FRFMSB_868, RF_FRFMSB_915
regWrite(REG_FRFMID, RF_FRFMID_868); // RF_FRFMID_315, RF_FRFMID_433, RF_FRFMID_868, RF_FRFMID_915
regWrite(REG_FRFLSB, RF_FRFLSB_868); // RF_FRFLSB_315, RF_FRFLSB_433, RF_FRFLSB_868, RF_FRFLSB_915
// reception gain
regWrite(REG_LNA, RF_LNA_ZIN_200 | RF_LNA_GAINSELECT_AUTO); //RF_LNA_GAINSELECT_MAXMINUS12);
// filter bandwidth 100kHz
regWrite(REG_RXBW, RF_RXBW_DCCFREQ_010 | RF_RXBW_MANT_20 | RF_RXBW_EXP_2); // (BitRate < 2 * RxBw)
regWrite(0x0B, 0x20); // AfcCtrl, afclowbetaon
// no sync detection
regWrite(REG_SYNCCONFIG, 0);
regWrite(REG_TESTDAGC, RF_DAGC_IMPROVED_LOWBETA0); // run DAGC continuously in RX mode for Fading Margin Improvement, recommended default for AfcLowBetaOn=0
Finally, I put it into receive mode.
If I set RSSI threshold to 0xE4, as suggested in the spec, then I get continuous garbage output on DIO2, even if nothing is sent from the host (nRF905).
If I set RSSI threshold to 166 (experimentally detected as being lowest value at which no garbage is output), then I get nothing at DIO2, even if the host sends data.
I am pretty sure that the host sends the data because my ventilation system recognize the signal and replies to it.
So, can anyone give me some hint what should I explore more?
Which registers should I try to setup, or which values am I maybe using incorrectly?
Any answer is appreciated.
Thank in advance.