JNP3_IOT_2016Z
/
JNP3_IOT_5_RADIO_BER_TX
nRF24L01+ BER app TX
Fork of nRF24L01P_Hello_World by
main_tx.cpp@2:e72fd316e27a, 2016-11-07 (annotated)
- Committer:
- ttajmajer
- Date:
- Mon Nov 07 15:56:56 2016 +0000
- Revision:
- 2:e72fd316e27a
nRF24L01+ BER app TX
Who changed what in which revision?
User | Revision | Line number | New 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 | } |