Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
9 years, 8 months 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 !
- include "mbed.h"
- 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() {
- 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; }
} }