AX5043 & STM32 Res

good afternoon, help me set up the registers to accept the format packet (AAAAAAAAAA 91D3 00 01 02 03 04 05 06 07 08 09). This packet turned out to be successfully transmitted from AX5043, and successfully received by transceivers of another manufacturer (RFM66, CC 1120), but to receive the packet on AX5043 does not work out in any way. To begin with, I want at least without coding in its raw form, then I think I’ll figure it out myself. I want to receive using packet ready interrupts in FIFO. The radio parameters used are THDATARATE = 19200 b / s. DEV = 6400Hz. MOD = MSK. I plan on these chips (AX5043) mass production> 100,000 per month. I also plan to test this chip on modulation, I hope to get a better range than in the CC1120 and RFM66. It depends on your help whether we will use this chip at home or not.
My name is Alexander, I am a developer at Ajax Systems.
Below is the code with the help of which a successful packet transfer is made.

void Send_packet(uint8_t *buf, uint8_t len)

	// ********** Preamble  **********
	spi_write(AX5043_REG_FIFODATA,5);  //Preamble_len
	// ********** end Preamble  **********

	// **********  Sync  **********
	spi_write(AX5043_REG_FIFODATA, (AX5043_FIFOCMD_LEN_VAR | AX5043_FIFOCMD_DATA));   
	spi_write(AX5043_REG_FIFODATA, 3);  
	spi_write(AX5043_REG_FIFODATA, 0x38);
	spi_write(AX5043_REG_FIFODATA, 0x91);
	spi_write(AX5043_REG_FIFODATA, 0xD3);
	// **********  Sync  **********

	// **********  Data  **********
	spi_write(AX5043_REG_FIFODATA, (AX5043_FIFOCMD_LEN_VAR | AX5043_FIFOCMD_DATA));  
	spi_write(AX5043_REG_FIFODATA, len + 1);  
	spi_write(AX5043_REG_FIFODATA, Flags);

			spi_write(AX5043_REG_FIFODATA, *buf++);
			len --;

	// ********** end Data  **********
    spi_write(AX5043_REG_PWRMODE, AX5043_PWRSTATE_FULL_TX);

	spi_write(AX5043_REG_FIFOSTAT, 4); // FIFO commit

	fTx_Ready = 0;

	while (fTx_Ready == 0);


Hi Alexander,
I assume you have purchased our full DVK comprised of DVK-BASE-2 + ADD5043. In this case you can quickly evaluate the full MASTER → SLAVE radiolink generating the project using our GUI tool AX-RadioLab.
A guide on how to use the GUI is available at .

For your specific application, you can:

  • in the PHY Configuration panel, insert the details for your physical layer ( THDATARATE = 19200 b / s. DEV = 6400Hz. MOD = MSK). (Note that MSK does not appear by default in the modulation drop down menu. To enable that in the GUI, insert ‘1962’ in the period field as shown below)
  • in the Frame Configuration panel you can use the built in “Raw, Pattern Match” framing mode to achieve the packet format you need. Set a PREAMBLE of 80 bits 0xAA, a 16 bit SYNCWORD of 0x91D3, disable the ‘len byte’ and ‘address matching’, insert your packet in DATA, and disable CRC.

AX-RadioLab will then generate two projects, one for the MASTER and one for the SLAVE, initializing each with the optimal registers settings. Finally, you will be able to flash both MASTER and SLAVE directly via the GUI and get your demo running, and/or open the source code in AX-CodeBlocks to analyze our radio driver and port it to your 3rd party MCU.

Regarding the range, our AX5043 has excellent selectivity that allows reaching market leading radio-link budgets. If even more range is needed, check out our AX5045: Ultra-Low Power Narrow-Band Sub GHz (60 - 1050 MHz) RF Transceiver with Integrated +23 dBm High Power Amplifier

Нет. Я не использую полнофункциональный DVK, а только ADD5043. и я его подключил к STM32.
Но Вас понял, будем покупать полный набор и что-то попытаться настроить. И потом копировать в свой проект.

Hi Alexander, someone from our sales will contact you soon and advice what best DVK you should use.
In the meantime, please find attached a RadioLab generated project with your settings. You can also open the project yourself in Ax-RadioLab (download it from here Software: AX5043).

Note that the AX5043 implements an MSK with h=0 therefore at 19.2kbps you will have a ±4.8kHz deviation. In the Frame Configuration I have added a CRC check to exclude false packets. Also with this project I am experiencing a 30% PER (at RSSI -85 dBm). The performance can be better by increasing the preamble and play with the RX BW. (2.3 MB)

Подскажите пожалуйста в документе
VCO Current Calibration for Optimal Synthesizer Phase Noise
есть запись что калибровку VCO необходимо производить при каждом изменении несущей частоты.
Вопрос: сколько нужно на это времени? так как мне нужно для минимального потребления переключится на 3-х частотах (868.5MHz, 872.5MHz, 880.2MHz) за 3 мс BR = 19200. Это возможно для чипа AX5043?

Can you please tell me in the document there is a note that VCO calibration should be done every time the carrier frequency is changed.
Question: how much time do I need for this? Because I need 3 frequencies (868.5MHz, 872.5MHz, 880.2MHz) to switch in 3ms BR = 19200 for minimal consumption. Is it possible for AX5043 chip?

Hello. The VCO calibration routine cited in the app note is not required for the radio operation. Its purpose is to optimize the phase noise generated by the PLL, by optimizing the VCO current (VCOI). As cited in the note, this calibration requires an external network connecting the radio`s ADC to the FILT pin, and should be done every time the temperature or VDD varies considerably, and when the carrier frequency is largely changed.
What must be done every time there is a frequency change is the PLL auto-ranging in order to lock the PLL onto a new frequency. For this purpose the AX5043 has two frequency registers FREQA and FREQB. The autoranging can be triggered on each frequency by setting the RNGSTART bit in PLLRANGINGA/B as shown in Figure 8 of
In your software, the best would be to autorange at each frequency once at the beginning, and then during operation quickly change from one channel to the other by already triggering auto-ranging from the known range that you previously calculated and stored in memory.
Changing across your three frequencies will be achievable.

Добрый день!
Мне удалось настроить прием и передачу с модуляцией PSK с различными скоростями, 19 Kb/s, 36 Kb/s, 60Kb/s. Дальность получилась замечательной!. Но я заметил проблему что на 1000 переданных пакетов я получаю только только 900-970. На модуляции GFSK такой проблемы нет TX = 1000 пакетов, RX = 1000 пакетов. Проверял так же на отладочном комплекте DVK comprised of DVK-BASE-2 + ADD5043 на нем воспроизводится та же проблема. Подскажите где искать проблему?. Отладочные платы соединены коаксиальным кабелем с аттенюатором. Уровень сигнала на стороне приема -62 dBm. Настройки которые я использовал в AX-RadioLab (2.3 МБ).

In your settings preamble len = 16; Try to increase it till 32 or better to 64. PSK modulation - for stable works takes a long preamble.

На практике проверено, длинна преамбулы для PSK очень критичный параметр. На скорости 4800 при длинне 16 отвал где то 10 процентов, при увеличении длинны до 32 процент отвала не превышает 1…2, Если поставить более 64 на 1000 пакетов ни одного пропущенного.

1 Like

Почему 16 ? если в настройках которые я вам отправил( [ указано 272 бита (34 байта). Все еще не понимаю в чем проблема.

After AX_RadioLab prepared files, open work folder “AX_Radio_Lab_output\config.c”
Scroll down and find “// physical layer” and next check parameter on screenshot
Also i recommend return default settings into SYNCLEN for 4 bytes, it’s will help decrease errors.

in my case default settings - work well with PSK (but i increase preambule into 36 symbols)

Проверьте параметр на скриншоте в конфигурационном файле, он у вас стоял 16 байт.
настройки синхрослова тоже лучше вернуть обратно как они стоят по умолчанию.

Добрый день !
Меня еще интересует может ли AX5043 работать с Antenna Diversity в режиме PSK. Потому что мне не удается это сделать. При переходе с FSK в PSK пин ANTSEL(21) перестает переключать антенну и значение регистра BGNDRSSI(0x41) принимает постоянное значение 0x80.

The Antenna Diversity feature does not depend on the selected modulation.

Make sure that DIVERSITY is set to 0x01 as only then the AX5043`s antenna diversity engine is switched on. By default this register is set to ‘0’ and simply selecting “ANTSEL config” will not be enough to enable the feature.

I have tested on my board and I can see ANTSEL toggling and BGNDRSSI being updated as expected regardless from the selected modulation.

Добрый день!. Я уже выяснил что сама модуляция не влияет на DIVERSITY. Но почему Вы не пишете и документация тоже этого не сообщает что такие регистры как TMGRXPREAMBLE1, TMGRXAGC,TMGRXRSSI,TMGRXCOARSEAGC, тоже влияют на правильную работу ANTDIVERSITY ?. И то как их правильно настраивать в документации не описано. Меня интересует банальный вопрос как мониторить сдвиг по частоте приемника и передатчика? Только не пишите что с помощью настроек ST RFOFFS и ST FOFFS, их я опробовал вдоль и в поперёк. Для начала не понятно отличие FREQOFFS от RFFREQOFFS. В каких случаях что использовать. Какую информацию несет FREQOFFS ? а какую RFFREQOFFS?. Я тестировал в режиме FSK 60 KB/s. установил биты ST RFOFFS и ST FOFFS и получил, по приходу пакета значение FREQOFFS всегда 0, а значение RFFREQOFFS всегда скачет от пакета к пакету ± 100 единиц. Как настроить стабильную работу не понятно нигде нету описания. И еще меня поразило то что команда ANTRSSI3 не имеет никакого отношения к пакету она всегда срабатывает но только не тогда когда пакет зашёл, хотя бит настройки стоит в настройках пакета PKTSTOREFLAGS. Ваша документация мягко говоря плохая, но я все еще надеюсь что чип делали другие люди и он окажется хорошим).

A post was split to a new topic: Receiver state machine on AX5043 (RADIOSTATE)

Good morning,
to complete your comment on the ANTDIVERSITY, please note that Figure 12 of the programming manual should have the following colored darker shadow that shows which stage is enabled only when DIVERSITY is enabled:

For the TRKRFFREQ please check this post FAQ: What is the TRKRFFREQ register for? - Connectivity / Sub-GHz - onsemi Community Forums

2 posts were split to a new topic: AX5043 scrambling/whitening sequence