This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Broadcast on nRF24L01

Hello!

I'm facing some problems when I try to broadcast a message from my receptor to the transmitters, I'm using 3 nRF24L01P. I read some things about setting the same address for both of transmitters to receive the same message, but after a broadcast stage my transmitter have to send ADC measures to the receptor, and for that is used the auto-acknoledgment.

For my receptor receive data from both transmitters I already set:

//RX_ADDR_P0 - configura endereço de recepção PIPE0
output_low(CSN);
spi_write(0x2A);
spi_write(0x75); // LSB
spi_write(0xC2);
spi_write(0xC2);
spi_write(0xC2);
spi_write(0xC2);
output_high(CSN);

//RX_ADDR_P1 - configura endereço de recepção PIPE1
output_low(CSN);
spi_write(0x2B);
spi_write(0xF1); // LSB
spi_write(0xB6);
spi_write(0xB5);
spi_write(0xB4);
spi_write(0xB3);
output_high(CSN);

And on transmitter number 0:

//RX_ADDR_P0 - configura endereço de recepção PIPE0
output_low(CSN);
spi_write(0x2A);
spi_write(0x75); // LSB
spi_write(0xC2);
spi_write(0xC2);
spi_write(0xC2);
spi_write(0xC2);
output_high(CSN);

//TX_ADDR - configura endereço de transmissão
output_low(CSN);
spi_write(0x30);
spi_write(0x75); // LSB
spi_write(0xC2);
spi_write(0xC2);
spi_write(0xC2);
spi_write(0xC2);
output_high(CSN);

For transmitter number 1:

 //RX_ADDR_P0 - configura endereço de recepção PIPE0
output_low(CSN);
spi_write(0x2A);
spi_write(0xF1); // LSB
spi_write(0xB6);
spi_write(0xB5);
spi_write(0xB4);
spi_write(0xB3);
output_high(CSN);

//TX_ADDR - configura endereço de transmissão 
output_low(CSN);
spi_write(0x30);
spi_write(0xF1); // LSB
spi_write(0xB6);
spi_write(0xB5);
spi_write(0xB4);
spi_write(0xB3);
output_high(CSN);

This configuration is already working, what means that the receiver is able to receive measures from both channels, of two differents transmitters.

The message that I need to send for the transmitters is received due to RS-232 communication.

I woul like some help with the adresses that I have to use.

Parents
  • Hi,

    I am not sure I understand what you are asking for. You say your configuration is already working? If you want to use the auto ack with payload feature you should look at chapter 7.4.1 Auto acknowledgement in the product specification. Remember that the ack payload has to be placed in the tx buffer before you receive the packet you want to ack.

Reply
  • Hi,

    I am not sure I understand what you are asking for. You say your configuration is already working? If you want to use the auto ack with payload feature you should look at chapter 7.4.1 Auto acknowledgement in the product specification. Remember that the ack payload has to be placed in the tx buffer before you receive the packet you want to ack.

Children
  • Hi run_ar, 

    Actually isn't working, even with two transceivers. I want to know how to broadcast the message, send it to all the transceivers. I was wondering that maybe exists a more practical way, because I'm also developing the library and need to know how to change the address of the modules to send it.

    I read in some places to use the same address for all the transceivers to reach them all at the time by the tranceptor, when I tried this just one fo them could gets the message.

    So, in the general way I'm looking for a way to send to all the transceivers the same message, is that possible? Or I do have to change the address every time I want to send it to a different module?

  • If you want to send data as ack payload you need to have different addresses for the different devices. you will then have to add the payload to the tx fifo for each device, make sure you watch the fifo status.

Related