AX5043, How to make the AFC work in GMSK

Hello !

I am working with the AX5043 in GMSK and I am unable to make the AFC work properly.
I am working at a bitrate of 2400 bps, to be sure to lock on the carrier I have set a BW to the range of 3.6 kHz. Given the documentation, I have set the AFC to 1/4 of the BW in AX RadioLab, so it is set to +/- 0.9 kHz

From what I understand AX Radio Lab has set the outer AFC loop.

Now the thing is, it seems that the AFC is unable to lock to 0 Hz of offset. In order for me to lock on the incoming signal, I have to emit this signal at:

f_carrier + (around) max_AFC_offset Hz

If and only if this condition is valid, then the AX5043 fully receives the packet. But when I remove that offset in the incoming signal, the AFC loose tracks.

I tried that with several values of AFC ranges: +/- 1.8 kHz, +/- 0.9 kHz, +/- 0.5kHz.
Nothing changed, I always had to add the maximum AFC range as an offset to the carrier. TRKRFFREQ always display respectively, around +1800, around + 900 and around +500 when it is working.

The interesting part is that it is not working with a negative AFC position, like -1800 Hz, -900 Hz and -500 Hz, never.

I have seen another post in the forum that was in the same situation, but I was unable to make the AFC work properly even with the answers.

Thank in advance for your help


I am also struggling with GMSK settings and it seems that radiolab does not generate a proper configuration. In my old radiolab version 2.6c, MAXRFOFFSET is 0 which is quite weird. Do you have the same behaviour?
I would expect a MAXOFFSET value depending on TCXO/XO precision.

Hello !

I finally found how to make it work !
There is like an easter eggs in AxRadio-Lab. If you discover it you can generates the code for GMSK.

Here is the process:

  • In the main window of AXRadio-Lab, under the “Master (TX) Options”:
    • Tick TX periodic (LPOSC = MCU Internal RC)
    • Enter 1962 in the “every” field.
    • Type Enter on your keyboard.

This little trick displayed additional menus in the “Phy Configuration” window.
You will be able to select “MSK” in the modulation menu. The AFC’s value should be fixed and not editable. Just set your RX bandwidth. It should be at least 4 times the value of the AFC range.

The interesting part is that in this specific configuration (that is normally a specific type of FSK), is that, in contrary to FSK:

  • The AFC of the “RF frequency recovery loop” sometimes also called “outer loop” is disabled: FREQGAINC and D are set to 0x1F
  • The AFC of the “the baseband frequency recovery loop” sometimes also called “inner loop” is enabled: FREQGAINA and B are not set respectively to 0x0F and 0x1F
  • The FREQOFFSCORR bit of MAXRFOFFSET is set in a way that the frequency correction is set to the first loop (supposedly being the “outer loop”, that is in fact disabled)

Anyway, there is still a lot of things to discover on that transceiver, but the AFC is working properly.
Note that the AFC range is not very precise. In my tests for an AFC of 600 Hz, the effective range is more like 500-450 Hz.