Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of nRF24L01P_Hello_World by
Revision 2:e72fd316e27a, committed 2016-11-07
- Comitter:
- ttajmajer
- Date:
- Mon Nov 07 15:56:56 2016 +0000
- Parent:
- 1:5be2682710c6
- Commit message:
- nRF24L01+ BER app TX
Changed in this revision
diff -r 5be2682710c6 -r e72fd316e27a main.cpp
--- a/main.cpp Wed Jan 19 23:53:19 2011 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-#include "mbed.h"
-#include "nRF24L01P.h"
-
-Serial pc(USBTX, USBRX); // tx, rx
-
-nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10); // 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;
-
- 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();
- 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+...
- 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;
- }
- }
-}
diff -r 5be2682710c6 -r e72fd316e27a main_tx.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main_tx.cpp Mon Nov 07 15:56:56 2016 +0000
@@ -0,0 +1,111 @@
+#include "mbed.h"
+#include "nRF24L01P.h"
+
+
+//***************************************************************************//
+// !!! SETTINGS !!!
+
+#define DATA_RATE NRF24L01P_DATARATE_250_KBPS
+//#define DATA_RATE NRF24L01P_DATARATE_1_MBPS
+//#define DATA_RATE NRF24L01P_DATARATE_2_MBPS
+
+#define POWER NRF24L01P_TX_PWR_ZERO_DB
+//#define POWER NRF24L01P_TX_PWR_MINUS_6_DB
+//#define POWER NRF24L01P_TX_PWR_MINUS_12_DB
+//#define POWER NRF24L01P_TX_PWR_MINUS_18_DB
+
+#define CHANNEL 0 // 0 - 30
+
+//***************************************************************************//
+
+
+Serial pc(USBTX, USBRX); // tx, rx
+nRF24L01P radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2); // mosi, miso, sck, csn, ce, irq
+DigitalOut led(LED1);
+InterruptIn button(USER_BUTTON);
+
+bool send_data = false;
+long tx_packet_counter = 0;
+long tx_bit_counter = 0;
+bool status = false;
+
+
+void tick_status(){
+ status = true;
+}
+
+void print_status(){
+ char buff[128];
+
+ sprintf(buff, "TX status: %d\r\n"
+ "TX packets num: %ld\r\n"
+ "TX bits num: %ld\r\n\r\n", send_data, tx_packet_counter, tx_bit_counter);
+
+ pc.write((const uint8_t *)buff, strlen(buff), 0, 0);
+}
+
+void onoff(){
+ if(send_data == false){
+ send_data = true;
+ led = 1;
+ } else {
+ send_data = false;
+ led = 0;
+ }
+}
+
+int main() {
+ #define TRANSFER_SIZE 32
+ #define CODE 0xAA
+ char txData[TRANSFER_SIZE];
+ Ticker status_ticker;
+
+
+ for(int i=0; i<TRANSFER_SIZE;i++){
+ txData[i] = CODE;
+ }
+
+ status_ticker.attach(&tick_status, 1.0);
+ button.rise(&onoff);
+ pc.baud(115200);
+
+ radio.powerDown();
+ radio.powerUp();
+
+ radio.setAirDataRate(DATA_RATE);
+ radio.setRfOutputPower(POWER);
+ radio.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY + 4 * CHANNEL);
+
+ radio.setTransferSize(TRANSFER_SIZE);
+ radio.setCrcWidth(NRF24L01P_CRC_NONE);
+
+ pc.printf( "=======================================\r\n");
+ pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() );
+ pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() );
+ pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() );
+ pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() );
+ pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", radio.getRxAddress() );
+ pc.printf( "=======================================\r\n");
+
+
+ while(1){
+
+ if(send_data){
+ int tx_bytes;
+
+ tx_bytes = radio.write( NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE);
+
+ if(tx_bytes < 0){
+ pc.printf("TX ERROR!\r\n");
+ } else{
+ tx_packet_counter += 1;
+ tx_bit_counter += tx_bytes * 8;
+ }
+ }
+
+ if(status){
+ print_status();
+ status = false;
+ }
+ }
+}
diff -r 5be2682710c6 -r e72fd316e27a mbed.bld --- a/mbed.bld Wed Jan 19 23:53:19 2011 +0000 +++ b/mbed.bld Mon Nov 07 15:56:56 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e +http://mbed.org/users/mbed_official/code/mbed/builds/abea610beb85 \ No newline at end of file
