5 years, 8 months ago.

nRF24L01P: Unknown getTxAddress width value 0

Hi, I'm a newbie user for nrf24l01 .

I'm try to use this library on NucleoF411 But, it show "nRF24L01P: Unknown getTxAddress width value 0" .

can anyone help me?

Thank you for your attention.

Question relating to:

2 Answers

5 years, 2 months ago.

Hello there. Maybe you already fixed this issue, or gave up, but im going to leave a reply in the hopes that it will benifit someone else.

Try comenting out both leds to see if it helps, it appears that in some board they are connected to spi; try using a diferent spi bus, or try to lower it's speed by half.

I'm not sure if this will help, but at least it will narrow the problem.

Greetings, Luis Assunção

Thanks, this solved the problem on my NUCLEO-F401RE and NUCLEO-F030R8

posted by Antonio Motisi 06 Jul 2017

This solved my issue on the 411. This is the kind of bug that makes me rage about firmware, what a dumb problem...

posted by Lucian Copeland 18 Mar 2019
3 years, 3 months ago.


I'm using NUCLEO F091RC, already comment the LED1 and LED2 on the example of https://developer.mbed.org/users/Owen/code/nRF24L01P_Hello_World/ but the output still the same .

Modified code for NUCLEO

#include "mbed.h"
#include "nRF24L01P.h"

Serial pc(USBTX, USBRX); // tx, rx
nRF24L01P my_nrf24l01p(PB_5, PB_4, PB_3, PB_10, PA_10, PA_8); /// mosi, miso, sck, csn, ce, irq

//DigitalOut myled1(LED1);
//DigitalOut myled2(LED2);

int main() {

// The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
//  "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
//  only handles 4 byte transfers in the ATMega code.
#define TRANSFER_SIZE   4
    char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
    int txDataCnt = 0;
    int rxDataCnt = 0;

    // Display the (default) setup of the nRF24L01+ chip
    pc.printf( "nRF24L01+ Frequency    : %d MHz\r\n",  my_nrf24l01p.getRfFrequency() );
    pc.printf( "nRF24L01+ Output power : %d dBm\r\n",  my_nrf24l01p.getRfOutputPower() );
    pc.printf( "nRF24L01+ Data Rate    : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
    pc.printf( "nRF24L01+ TX Address   : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
    pc.printf( "nRF24L01+ RX Address   : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
    pc.printf( "Type keys to test transfers:\r\n  (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
    my_nrf24l01p.setTransferSize( TRANSFER_SIZE );

    while (1) {
        // If we've received anything over the host serial link...
        if ( pc.readable() ) {
            // ...add it to the transmit buffer
            txData[txDataCnt++] = pc.getc();
            // If the transmit buffer is full
            if ( txDataCnt >= sizeof( txData ) ) {
                // Send the transmitbuffer via the nRF24L01+
                my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
                txDataCnt = 0;
            // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
            //myled1 = !myled1;

        // If we've received anything in the nRF24L01+...
        if ( my_nrf24l01p.readable() ) {
            // ...read the data into the receive buffer
            rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
            // Display the receive buffer contents via the host serial link
            for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
                pc.putc( rxData[i] );
            // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
            //myled2 = !myled2;

And the serial output:

Serial Output

nRF24L01+ Frequency    : 2400 MHz
nRF24L01+ Output power : -18 dBm
nRF24L01+ Data Rate    : 1000 kbps
nRF24L01P: Unknown getTxAddress width value 0

can anyone help me?