Parsing the Semtech chip defaults for the SX1231h and figuring their values, it looks like Semtech went for a pretty wide RxBwAfc of 50KHz:
Packet Mode, FSK modulation scheme
[ActualBitrate] 4799.760bps = nominal bitrate of 4800bps
[regRXBW] B1010101
[theDccFreq] B10
[RxBw] 10416Hz
[RxBwMant] 24
[RxBwExp] 5
[regAFCBW] B10001011
[theDccFreqAfc] B100
[RxBwAfc] 50000Hz
[RxBwMantAfc] 20
[RxBwExpAfc] 3
[FDev] 5004Hz
[frequency-center] 915000000Hz
That's in contrast to the calculations in the posting directly above, which suggests that at 915Mhz (the worst case) Semtech might have gone as narrow as 10,416Hz + 18,300kHz = 28.716KHz (though in actuality, by rounding up, the next closest match in Table 14 would have been 31.3Khz). The 50Khz figure that Semtech actually settled on as its default for AFC bandwidth was much wider. Any theories as to why? I'm just trying to get as much insight as I can to best inform how to set AFC bandwidth when using non-default settings, and working backward from Semtech's defaults is another way to triangulate what Semtech thinks are good numbers.
Are you sure it's not the other way round?
Yup, I'm confident it's not the other way around. Using a Moteino outfitted with an RFM69HW and compiling the RFM69 library's Gateway example sketch (but, for simplicity's sake, with "#define ENABLE_ATC" commented out) using Arduino IDE 1.0.6, Felix's enhanced register dump is:
Address - HEX - BIN
1 - 10 - 10000
Controls the automatic Sequencer ( see section 4.2 )
SequencerOff : 0 -> Operating mode as selected with Mode bits in RegOpMode is automatically reached with the Sequencer
Enables Listen mode, should be enabled whilst in Standby mode:
ListenOn : 0 -> Off ( see section 4.3)
Aborts Listen mode when set together with ListenOn=0 See section 4.3.4 for details (Always reads 0.)
Transceiver's operating modes:
Mode : 001 -> Standby mode (STDBY)
2 - 0 - 0
Data Processing mode:
DataMode : 00 -> Packet mode
Modulation scheme:
Modulation Type : 00 -> FSK
Data shaping: in FSK:
ModulationShaping : 00 -> no shaping
3 - 2 - 10
4 - 40 - 1000000
Bit Rate (Chip Rate when Manchester encoding is enabled)
BitRate : 55555
5 - 3 - 11
6 - 33 - 110011
Frequency deviation
Fdev : 49959
7 - E4 - 11100100
8 - C0 - 11000000
9 - 0 - 0
RF Carrier frequency
FRF : 914472960
A - 41 - 1000001
RC calibration control & status
RcCalDone : 1 -> RC calibration is over
B - 40 - 1000000
Improved AFC routine for signals with modulation index lower than 2. Refer to section 3.4.16 for details
AfcLowBetaOn : 0 -> Standard AFC routine
C - 2 - 10
Reserved
D - 92 - 10010010
Resolution of Listen mode Idle time (calibrated RC osc):
ListenResolIdle : 10 -> 4.1 ms
Resolution of Listen mode Rx time (calibrated RC osc):
ListenResolRx : 01 -> 64 us
Criteria for packet acceptance in Listen mode:
ListenCriteria : 0 -> signal strength is above RssiThreshold
Action taken after acceptance of a packet in Listen mode:
ListenEnd : 01 -> chip stays in Rx mode until PayloadReady or Timeout interrupt occurs. It then goes to the mode defined by Mode. Listen mode stops and must be disabled (see section 4.3)
E - F5 - 11110101
F - 20 - 100000
10 - 24 - 100100
11 - 7F - 1111111
12 - 9 - 1001
13 - F - 1111
14 - 40 - 1000000
15 - B0 - 10110000
16 - 7B - 1111011
17 - 9B - 10011011
18 - 8 - 1000
19 - 42 - 1000010
1A - 8A - 10001010
1B - 40 - 1000000
1C - 80 - 10000000
1D - 6 - 110
1E - 10 - 10000
1F - 0 - 0
20 - 0 - 0
21 - 0 - 0
22 - 0 - 0
23 - 0 - 0
24 - CE - 11001110
25 - 40 - 1000000
26 - 7 - 111
27 - D8 - 11011000
28 - 0 - 0
29 - DC - 11011100
2A - 0 - 0
2B - 0 - 0
2C - 0 - 0
2D - 3 - 11
2E - 88 - 10001000
2F - 2D - 101101
30 - 64 - 1100100
31 - 0 - 0
32 - 0 - 0
33 - 0 - 0
34 - 0 - 0
35 - 0 - 0
36 - 0 - 0
37 - 90 - 10010000
38 - 42 - 1000010
39 - 0 - 0
3A - 0 - 0
3B - 0 - 0
3C - 8F - 10001111
3D - 13 - 10011
3E - 73 - 1110011
3F - 61 - 1100001
40 - 6D - 1101101
41 - 70 - 1110000
42 - 6C - 1101100
43 - 65 - 1100101
44 - 45 - 1000101
45 - 6E - 1101110
46 - 63 - 1100011
47 - 72 - 1110010
48 - 79 - 1111001
49 - 70 - 1110000
4A - 74 - 1110100
4B - 4B - 1001011
4C - 65 - 1100101
4D - 79 - 1111001
4E - 1 - 1
4F - 0 - 0
50 - 15 - 10101
51 - 85 - 10000101
52 - 88 - 10001000
53 - 8 - 1000
54 - 0 - 0
55 - 0 - 0
56 - 1 - 1
57 - 0 - 0
58 - 1B - 11011
59 - 9 - 1001
5A - 55 - 1010101
5B - 80 - 10000000
5C - 70 - 1110000
---------------------------------------------------------------------
Taking my own independent pass at the register data, I get:
Radio Configuration:
====================
Receiver-Mode(RX)
Packet Mode, FSK modulation scheme
RegDioMapping1=B1000000=0x40
RegDioMapping2=B111=0x7
[ActualBitrate] 55555.554bps
[theDccFreq] B10 (equals Semtech default)
[b][RxBw] 125000Hz[/b]
[RxBwMant] 16
[RxBwExp] 2
[b][FDev] 49987Hz[/b]
Beta=((2*FDev)/BitRate)=0.62
Fcutoff=4973.59Hz
Percentage=3.98%
Warning: low Beta. Setting DCC to 100b=1%.
Enabling AfcLowBetaOn.
Setting RX LO = 104Hz (which equals 12.5% of FDev)
[theDccFreqAfc] B100 (equals Semtech default)
[b][RxBwAfc] 100000Hz[/b]
[RxBwMantAfc] 20
[RxBwExpAfc] 2
[frequency-center] 915000000Hz
[regLNA] B1000
[LnaZin] B0 -> Input Impedance = 50 ohm (Warning: Semtech default is 200 ohm).
[LnaCurrentGain] B1 -> G1
[LnaGainSelect] B0 -> gain set by the internal AGC loop. Matches Semtech default.
[regAFCFEI] B10000
[FeiDone] B0 -> FEI is on-going (i.e. not finished). Matches Semtech default.
[b] [AfcDone] B1 -> AFC is finished (i.e. not on-going). [/b] Matches Semtech default.
[AfcAutoclearOn] B0 -> Invalid, because AfcAutoOn is not set.
[AfcAutoOn] B0 -> AFC is performed each time AfcStart is set (i.e. not each time Rx mode is entered).
^Matches Semtech default.
---------------------------------------------------------------------
This also confirms JoeLucid's earlier comment that the RFM69 library defaults to a mode where AFC is turned off. ??? Not only that, but I notice from the datasheet that even Semtech's default is for AFC to be turned off. Why is that?
[Edit1: So, the answer must be that the AFC is simply not needed at these higher bandwidths. At what point does it become needed/beneficial to turn on the AFC? Ideally, that might be done automatically, which means getting a grasp on what the threshhold conditions are that should trigger turning AFC on.]
[Edit2: Reviewing the results of the automatic review, I guess maybe in some sense the library settings actually do have low beta, though I'm not sure that it matters (?). I didn't expect to see that, and so it came as a surprise. The commentary about the ensuing automatic adjustments to compensate for low-beta is work in progress, so you can ignore that part, as I'm not sure it is applicable for an FDev this wide. ]