Communication between 2 NRF24L01+ on STM32F4


I’ve ordered 4 NRF24L01+ from ebay china, to link devices. My current NET Micro Framework device is a STM32F4 running netmf 4.2. (

To simplify the development process for upcoming devices a little bit, I decided to connect an arduino mini pro via an USB/RS232 adapter as debug radio modem. Afters hours of reading, wire checking and cursing (It did not work),

On Arduino I used the RF24 driver from GitHub - nRF24/RF24: OSI Layer 2 driver for nRF24L01 on Arduino & Raspberry Pi/Linux Devices
On STM32F4 I used the NRF24L01+ driver from

I decided to go one step back, and connect 2 wireless modules with SPI1 and SPI2 on my STM32F4. So I have similar conditions for each wireless module.

I followed the Sample project and

  • created
  • configured (different spi bus, different IRQ, CE, CSN pins)
  • initialized (same address on slot 0)
  • enabled

one NRF24L01 object for each rf24. But nothing happened. None of the 4 eventhandlers got executed. The SPI pin configuration comes directly from the official stm32f4 documentation. For IRQ, CS end CE I took PIN A1-A3 for SPI1 and 3 other pins for SPI2. I can read out the addresses, so I think my wiring is correct ?!

Within the try & error process with the arduino I had 2 situations, where the arduino console told me, that multiple packages got successfully transmitted. That was minutes after restarting the arduino console. But I could not reproduce the situation.

The STM32F4 as well as the NRF24L01 are power supplied from a breadboard power connector which supplies 5v for the stm32f4 and 3.3v for the two rf24.

Any suggestions to prevent me from kicking the rf24 modules into trash? Maybe any diagnostic steps?

Thanks in advance

Welcome to the forum Christian

I just wanted to post the URLs here before you got to the 50 points you need. I don’t have any experience with these radios to know whether they are easy to get working, or whether this codebase you have is reliable - hopefully others wqho do will see your post

@ csteinmueller - Welcome to the forum!

You have mentioned a STM32F4 based NET Micro Framework device. Is it something that GHI made? Which one?
If not, do you have a link?

The problem is that NetMf uses Little Endian, but Arduino uses Big Endian. Here is the solution 433MHz / 2.4GHz communications with Netduino/Netduino Plus - General Discussion - Netduino Forums

You must reverse bytes in netmf driver…

It’s a netmf port made by Oberon I think. As I can’t link without reputation, you can google for netmf stm32 and visit the codeplex site of this porting project.

The issue of byte order between arduino and netmf is known to me and I considered it. To avoid these kind of problem I proceed to link both rf24 to 2 of the 3 SPI the stm32f4 has.

After checking the wiring and addresses inside the rf24 addresspipes again, I found that on SPI1 the address looses one bit on the first byte (0F turns into 0E) which leads to a general addressing problem.

After switching from SPI1 to SPI3 the rf24 delivered the correct address.

I put some breakpoints inside the netmf nrf24l01+ driver and found out, that the senders interrupt handler gets raised, but raises a TransmitFailed event.

Any suggestions how to investigate the rf24 to get a more informatic feedback what exactly went wrong?


Maybe this can help.
And this

These modules worked reasonable well for me on Arduino using the RF24 libraries, but can be a bit unpredictable. Probably the best suggestion I can give you is to put a fat tantalum cap across its power inputs. I made a big difference for me.

But in the meantime I discovered Ciseco’s radio modules ( and it did everything I needed and worked very reliably. They are a bit more expensive than the Nortic modules, but saves a lot headaches. What’s great about Ciseko’s products is that there are so many choices of form factors including a USB dongle type you plug into your PC to talk to your product.