2017-10-20 12:26 AM
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 4char 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