cancel
Showing results for 
Search instead for 
Did you mean: 

NUCLEO L476RG with a nRF24L01+

Jan M
Associate
Posted on October 20, 2017 at 09:26

Hello,

i try to connect my NUCLEO L476RG with a nRF24L01+. For this i use the Lib from

https://os.mbed.com/users/Owen/code/nRF24L01P/

. I use mBed and tested my RF24 Dongles with a Arduino Nano before. It works perfect with them. My Code is the following:

The problem is a freeze at 

my_nrf24l01p.powerUp() and i don't understand this. The Registeraddresses be the same as the adresses in the Arduino Lib. I suspect that the connection over spi isn't working.

Have somebady a idea or a working project with a RF24 and a NUCLEO Board?

Thank you so much.

&sharpinclude 'mbed.h'

&sharpinclude 'nRF24L01P.h'

Serial pc(USBTX, USBRX,9600); // tx, rx

nRF24L01P my_nrf24l01p(D11, D12, D13, D10, D9, D7); // 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' (

https://community.st.com/external-link.jspa?url=http%3A%2F%2Fwww.sparkfun.com%2Fproducts%2F9019

)

// only handles 4 byte transfers in the ATMega code.

&sharpdefine TRANSFER_SIZE 4

char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];

int txDataCnt = 0;

int rxDataCnt = 0;

pc.printf('Setup');

my_nrf24l01p.powerUp();

// 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 );

my_nrf24l01p.setReceiveMode();

pc.printf('Receive');

my_nrf24l01p.enable();

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+...

pc.printf('while');

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;

}

}

}

#spi #owen-edwards #nucleo-476 #nrf24l01
0 REPLIES 0