nRF24L01+ BER app TX

Dependencies:   mbed nRF24L01P

Fork of nRF24L01P_Hello_World by Owen Edwards

Committer:
ttajmajer
Date:
Mon Nov 07 15:56:56 2016 +0000
Revision:
2:e72fd316e27a
nRF24L01+ BER app TX

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ttajmajer 2:e72fd316e27a 1 #include "mbed.h"
ttajmajer 2:e72fd316e27a 2 #include "nRF24L01P.h"
ttajmajer 2:e72fd316e27a 3
ttajmajer 2:e72fd316e27a 4
ttajmajer 2:e72fd316e27a 5 //***************************************************************************//
ttajmajer 2:e72fd316e27a 6 // !!! SETTINGS !!!
ttajmajer 2:e72fd316e27a 7
ttajmajer 2:e72fd316e27a 8 #define DATA_RATE NRF24L01P_DATARATE_250_KBPS
ttajmajer 2:e72fd316e27a 9 //#define DATA_RATE NRF24L01P_DATARATE_1_MBPS
ttajmajer 2:e72fd316e27a 10 //#define DATA_RATE NRF24L01P_DATARATE_2_MBPS
ttajmajer 2:e72fd316e27a 11
ttajmajer 2:e72fd316e27a 12 #define POWER NRF24L01P_TX_PWR_ZERO_DB
ttajmajer 2:e72fd316e27a 13 //#define POWER NRF24L01P_TX_PWR_MINUS_6_DB
ttajmajer 2:e72fd316e27a 14 //#define POWER NRF24L01P_TX_PWR_MINUS_12_DB
ttajmajer 2:e72fd316e27a 15 //#define POWER NRF24L01P_TX_PWR_MINUS_18_DB
ttajmajer 2:e72fd316e27a 16
ttajmajer 2:e72fd316e27a 17 #define CHANNEL 0 // 0 - 30
ttajmajer 2:e72fd316e27a 18
ttajmajer 2:e72fd316e27a 19 //***************************************************************************//
ttajmajer 2:e72fd316e27a 20
ttajmajer 2:e72fd316e27a 21
ttajmajer 2:e72fd316e27a 22 Serial pc(USBTX, USBRX); // tx, rx
ttajmajer 2:e72fd316e27a 23 nRF24L01P radio(PB_15, PB_14, PB_13, PB_12, PB_1, PB_2); // mosi, miso, sck, csn, ce, irq
ttajmajer 2:e72fd316e27a 24 DigitalOut led(LED1);
ttajmajer 2:e72fd316e27a 25 InterruptIn button(USER_BUTTON);
ttajmajer 2:e72fd316e27a 26
ttajmajer 2:e72fd316e27a 27 bool send_data = false;
ttajmajer 2:e72fd316e27a 28 long tx_packet_counter = 0;
ttajmajer 2:e72fd316e27a 29 long tx_bit_counter = 0;
ttajmajer 2:e72fd316e27a 30 bool status = false;
ttajmajer 2:e72fd316e27a 31
ttajmajer 2:e72fd316e27a 32
ttajmajer 2:e72fd316e27a 33 void tick_status(){
ttajmajer 2:e72fd316e27a 34 status = true;
ttajmajer 2:e72fd316e27a 35 }
ttajmajer 2:e72fd316e27a 36
ttajmajer 2:e72fd316e27a 37 void print_status(){
ttajmajer 2:e72fd316e27a 38 char buff[128];
ttajmajer 2:e72fd316e27a 39
ttajmajer 2:e72fd316e27a 40 sprintf(buff, "TX status: %d\r\n"
ttajmajer 2:e72fd316e27a 41 "TX packets num: %ld\r\n"
ttajmajer 2:e72fd316e27a 42 "TX bits num: %ld\r\n\r\n", send_data, tx_packet_counter, tx_bit_counter);
ttajmajer 2:e72fd316e27a 43
ttajmajer 2:e72fd316e27a 44 pc.write((const uint8_t *)buff, strlen(buff), 0, 0);
ttajmajer 2:e72fd316e27a 45 }
ttajmajer 2:e72fd316e27a 46
ttajmajer 2:e72fd316e27a 47 void onoff(){
ttajmajer 2:e72fd316e27a 48 if(send_data == false){
ttajmajer 2:e72fd316e27a 49 send_data = true;
ttajmajer 2:e72fd316e27a 50 led = 1;
ttajmajer 2:e72fd316e27a 51 } else {
ttajmajer 2:e72fd316e27a 52 send_data = false;
ttajmajer 2:e72fd316e27a 53 led = 0;
ttajmajer 2:e72fd316e27a 54 }
ttajmajer 2:e72fd316e27a 55 }
ttajmajer 2:e72fd316e27a 56
ttajmajer 2:e72fd316e27a 57 int main() {
ttajmajer 2:e72fd316e27a 58 #define TRANSFER_SIZE 32
ttajmajer 2:e72fd316e27a 59 #define CODE 0xAA
ttajmajer 2:e72fd316e27a 60 char txData[TRANSFER_SIZE];
ttajmajer 2:e72fd316e27a 61 Ticker status_ticker;
ttajmajer 2:e72fd316e27a 62
ttajmajer 2:e72fd316e27a 63
ttajmajer 2:e72fd316e27a 64 for(int i=0; i<TRANSFER_SIZE;i++){
ttajmajer 2:e72fd316e27a 65 txData[i] = CODE;
ttajmajer 2:e72fd316e27a 66 }
ttajmajer 2:e72fd316e27a 67
ttajmajer 2:e72fd316e27a 68 status_ticker.attach(&tick_status, 1.0);
ttajmajer 2:e72fd316e27a 69 button.rise(&onoff);
ttajmajer 2:e72fd316e27a 70 pc.baud(115200);
ttajmajer 2:e72fd316e27a 71
ttajmajer 2:e72fd316e27a 72 radio.powerDown();
ttajmajer 2:e72fd316e27a 73 radio.powerUp();
ttajmajer 2:e72fd316e27a 74
ttajmajer 2:e72fd316e27a 75 radio.setAirDataRate(DATA_RATE);
ttajmajer 2:e72fd316e27a 76 radio.setRfOutputPower(POWER);
ttajmajer 2:e72fd316e27a 77 radio.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY + 4 * CHANNEL);
ttajmajer 2:e72fd316e27a 78
ttajmajer 2:e72fd316e27a 79 radio.setTransferSize(TRANSFER_SIZE);
ttajmajer 2:e72fd316e27a 80 radio.setCrcWidth(NRF24L01P_CRC_NONE);
ttajmajer 2:e72fd316e27a 81
ttajmajer 2:e72fd316e27a 82 pc.printf( "=======================================\r\n");
ttajmajer 2:e72fd316e27a 83 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", radio.getRfFrequency() );
ttajmajer 2:e72fd316e27a 84 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", radio.getRfOutputPower() );
ttajmajer 2:e72fd316e27a 85 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", radio.getAirDataRate() );
ttajmajer 2:e72fd316e27a 86 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", radio.getTxAddress() );
ttajmajer 2:e72fd316e27a 87 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", radio.getRxAddress() );
ttajmajer 2:e72fd316e27a 88 pc.printf( "=======================================\r\n");
ttajmajer 2:e72fd316e27a 89
ttajmajer 2:e72fd316e27a 90
ttajmajer 2:e72fd316e27a 91 while(1){
ttajmajer 2:e72fd316e27a 92
ttajmajer 2:e72fd316e27a 93 if(send_data){
ttajmajer 2:e72fd316e27a 94 int tx_bytes;
ttajmajer 2:e72fd316e27a 95
ttajmajer 2:e72fd316e27a 96 tx_bytes = radio.write( NRF24L01P_PIPE_P0, txData, TRANSFER_SIZE);
ttajmajer 2:e72fd316e27a 97
ttajmajer 2:e72fd316e27a 98 if(tx_bytes < 0){
ttajmajer 2:e72fd316e27a 99 pc.printf("TX ERROR!\r\n");
ttajmajer 2:e72fd316e27a 100 } else{
ttajmajer 2:e72fd316e27a 101 tx_packet_counter += 1;
ttajmajer 2:e72fd316e27a 102 tx_bit_counter += tx_bytes * 8;
ttajmajer 2:e72fd316e27a 103 }
ttajmajer 2:e72fd316e27a 104 }
ttajmajer 2:e72fd316e27a 105
ttajmajer 2:e72fd316e27a 106 if(status){
ttajmajer 2:e72fd316e27a 107 print_status();
ttajmajer 2:e72fd316e27a 108 status = false;
ttajmajer 2:e72fd316e27a 109 }
ttajmajer 2:e72fd316e27a 110 }
ttajmajer 2:e72fd316e27a 111 }