9 years, 1 month ago.

my_nrf24l01.readable(1) is not working ? Data pipeline issues.

Hello, I would to thankyou to make this library. I am using your sample code and its working fine on my KL25z . But when i change the settings for using it for other pipelines the nrf is not working. Here is the code !

  1. include "mbed.h"
  2. include "nRF24L01P.h"

Serial pc(USBTX, USBRX); tx, rx

nRF24L01P my_nrf24l01p(PTD2,PTD3, PTC5, PTD0, PTD5, PTA13); mosi, miso, sck, csn, ce, irq

DigitalOut myled1(LED1); red led DigitalOut myled2(LED2); green led DigitalOut myled3(LED3); Blue led char r='\0';

int main() {

  1. define TRANSFER_SIZE 1

char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; int txDataCnt = 0; int rxDataCnt = 0;

my_nrf24l01p.powerUp(); my_nrf24l01p.setTxAddress(0xC2C2C2C2C2,5); my_nrf24l01p.setRxAddress(0xC2C2C2C2C2,5,1);

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

}

Toggle LED1 (to help debug Host -> nRF24L01+ communication) myled1 = !myled1; }

If we've received anything in the nRF24L01... if ( my_nrf24l01p.readable(1) ) {

...read the data into the receive buffer rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) ); my_nrf24l01p.write (NRF24L01P_PIPE_P0 , rxData , rxDataCnt );

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; }

} }

Question relating to:

Test program for the Nordic Semi nRF24L01+ Transceiver Module (http://www.sparkfun.com/products/691), talking to another module connected to SparkFun\'s Nordic Serial Interface Board (http://www.sparkfun.com/products/9019). Nordic, nRF24L01, nRF24L01+, Semi, wireless
Be the first to answer this question.