RF24 main code

Dependencies:   RF24 mbed

Committer:
adam_z
Date:
Thu Jul 28 08:12:37 2016 +0000
Revision:
0:f92ca0fab66b
RF24L01 on platform of STM32F446RE(SPI2)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
adam_z 0:f92ca0fab66b 1
adam_z 0:f92ca0fab66b 2
adam_z 0:f92ca0fab66b 3 #include <mbed.h>
adam_z 0:f92ca0fab66b 4
adam_z 0:f92ca0fab66b 5 #include "nRF24L01.h"
adam_z 0:f92ca0fab66b 6 #include "RF24.h"
adam_z 0:f92ca0fab66b 7
adam_z 0:f92ca0fab66b 8
adam_z 0:f92ca0fab66b 9
adam_z 0:f92ca0fab66b 10
adam_z 0:f92ca0fab66b 11 //
adam_z 0:f92ca0fab66b 12 // Hardware configuration
adam_z 0:f92ca0fab66b 13 //
adam_z 0:f92ca0fab66b 14
adam_z 0:f92ca0fab66b 15
adam_z 0:f92ca0fab66b 16
adam_z 0:f92ca0fab66b 17
adam_z 0:f92ca0fab66b 18 /*
adam_z 0:f92ca0fab66b 19
adam_z 0:f92ca0fab66b 20
adam_z 0:f92ca0fab66b 21 _____
adam_z 0:f92ca0fab66b 22 |8|7| pi map with oscillator up front
adam_z 0:f92ca0fab66b 23 -----
adam_z 0:f92ca0fab66b 24 |6|5|
adam_z 0:f92ca0fab66b 25 -----
adam_z 0:f92ca0fab66b 26 |4|3|
adam_z 0:f92ca0fab66b 27 -----
adam_z 0:f92ca0fab66b 28 |2|1|
adam_z 0:f92ca0fab66b 29 -----
adam_z 0:f92ca0fab66b 30 PINOUTS
adam_z 0:f92ca0fab66b 31 http://docs.spark.io/#/firmware/communication-spi
adam_z 0:f92ca0fab66b 32 http://maniacbug.wordpress.com/2011/11/02/getting-started-rf24/
adam_z 0:f92ca0fab66b 33
adam_z 0:f92ca0fab66b 34 SPARK CORE SHIELD SHIELD NRF24L01+
adam_z 0:f92ca0fab66b 35 GND GND 1 (GND)
adam_z 0:f92ca0fab66b 36 3V3 (3.3V) 3.3V 2 (3V3)
adam_z 0:f92ca0fab66b 37 D6 (CSN) 9 (D6) 3 (CE)
adam_z 0:f92ca0fab66b 38 A2 (SS) 10 (SS) 4 (CSN)
adam_z 0:f92ca0fab66b 39 A3 (SCK) 13 (SCK) 5 (SCK)
adam_z 0:f92ca0fab66b 40 A5 (MOSI) 11 (MOSI) 6 (MOSI)
adam_z 0:f92ca0fab66b 41 A4 (MISO) 12 (MISO) 7 (MISO)
adam_z 0:f92ca0fab66b 42
adam_z 0:f92ca0fab66b 43 NOTE: Also place a 10-100uF cap across the power inputs of
adam_z 0:f92ca0fab66b 44 the NRF24L01+. I/O o fthe NRF24 is 5V tolerant, but
adam_z 0:f92ca0fab66b 45 do NOT connect more than 3.3V to pin 1!!!
adam_z 0:f92ca0fab66b 46 */
adam_z 0:f92ca0fab66b 47
adam_z 0:f92ca0fab66b 48 // Set up nRF24L01 radio on SPI bus, and pins 9 (D6) & 10 (A2) on the Shield Shield
adam_z 0:f92ca0fab66b 49 RF24 radio(PB_15, PB_14, PB_13, PB_1, PB_2);//*****MOSI MISO SCK CE CS******
adam_z 0:f92ca0fab66b 50
adam_z 0:f92ca0fab66b 51 const uint64_t send_pipe=0xB01DFACECEL;//These are just arbitrary 64bit numbers to use as pipe identifiers
adam_z 0:f92ca0fab66b 52 const uint64_t recv_pipe=0xDEADBEEFF1L;//They must be the same on both ends of the communciations
adam_z 0:f92ca0fab66b 53
adam_z 0:f92ca0fab66b 54 DigitalOut HLio(PB_12);
adam_z 0:f92ca0fab66b 55 Serial pc(SERIAL_TX, SERIAL_RX);
adam_z 0:f92ca0fab66b 56
adam_z 0:f92ca0fab66b 57
adam_z 0:f92ca0fab66b 58 int main()
adam_z 0:f92ca0fab66b 59 {
adam_z 0:f92ca0fab66b 60
adam_z 0:f92ca0fab66b 61 pc.baud(9600);//Set up comm with the IDE serial monitor
adam_z 0:f92ca0fab66b 62 pc.printf("Ready for commands");
adam_z 0:f92ca0fab66b 63 radio.begin();//Start up the radio object
adam_z 0:f92ca0fab66b 64 radio.setRetries(15,15);//This will improve reliability of the module if it encounters interference
adam_z 0:f92ca0fab66b 65 radio.setPALevel(RF24_PA_LOW);//This sets the power low. This will reduce the range. RF24_PA_MAX would increase the range
adam_z 0:f92ca0fab66b 66 radio.openWritingPipe(send_pipe);//Thses are the reverse of the transmit code.
adam_z 0:f92ca0fab66b 67 radio.openReadingPipe(1,recv_pipe);
adam_z 0:f92ca0fab66b 68 radio.startListening();//Give the module a kick
adam_z 0:f92ca0fab66b 69
adam_z 0:f92ca0fab66b 70 while(true) {
adam_z 0:f92ca0fab66b 71 unsigned long motor_code=0;
adam_z 0:f92ca0fab66b 72 HLio = 0;
adam_z 0:f92ca0fab66b 73
adam_z 0:f92ca0fab66b 74
adam_z 0:f92ca0fab66b 75 // pc.printf("%d\r\n",radio.available());
adam_z 0:f92ca0fab66b 76 if( radio.available()) { //Keep checking on each loop to see if any data has come in
adam_z 0:f92ca0fab66b 77 HLio = 1;
adam_z 0:f92ca0fab66b 78 while(radio.available()) { //Loop while there is incoming data. The packets are one unsigned long in total so it shoudl only loop once
adam_z 0:f92ca0fab66b 79 radio.read(&motor_code, sizeof(unsigned long));//Stuff the incoming packet into the motor_code variable
adam_z 0:f92ca0fab66b 80
adam_z 0:f92ca0fab66b 81 }
adam_z 0:f92ca0fab66b 82 HLio = 0;
adam_z 0:f92ca0fab66b 83 // radio.stopListening();//We have heard so now we will send an ack
adam_z 0:f92ca0fab66b 84 // radio.write(&motor_code, sizeof(unsigned long));//Turn the motor code around and send it back
adam_z 0:f92ca0fab66b 85 radio.startListening();//Go back to listening as this is what this mostly does
adam_z 0:f92ca0fab66b 86
adam_z 0:f92ca0fab66b 87 pc.printf("%d\r\n",motor_code);
adam_z 0:f92ca0fab66b 88
adam_z 0:f92ca0fab66b 89
adam_z 0:f92ca0fab66b 90 }
adam_z 0:f92ca0fab66b 91
adam_z 0:f92ca0fab66b 92 // wait_ms(10);
adam_z 0:f92ca0fab66b 93 }
adam_z 0:f92ca0fab66b 94
adam_z 0:f92ca0fab66b 95 }
adam_z 0:f92ca0fab66b 96
adam_z 0:f92ca0fab66b 97