RobOmega - PSL RoboCup / Mbed OS nRF24L01P_L432KC_CarteBlanche

Dependencies:   nRF24L01P_Hello_World nRF24L01P

Committer:
voltxd
Date:
Fri Apr 16 16:01:03 2021 +0000
Revision:
5:668dd9395ca5
Parent:
4:5caf9e1dc16c
ok;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
voltxd 3:f8b9397e9272 1 #include "main.h"
Owen 0:a51a6e7da590 2 #include "mbed.h"
Owen 0:a51a6e7da590 3 #include "nRF24L01P.h"
voltxd 5:668dd9395ca5 4 #include "circularBuffer.h"
Owen 0:a51a6e7da590 5
voltxd 5:668dd9395ca5 6 UnbufferedSerial pc(USBTX, USBRX, 115200); // tx, rx, baudrate
Owen 0:a51a6e7da590 7
voltxd 3:f8b9397e9272 8 nRF24L01P my_nrf24l01p(SPI3_MOSI, SPI3_MISO, SPI3_SCLK, CSN, CE, IRQ); // mosi, miso, sck, csn, ce, irq
Owen 0:a51a6e7da590 9
voltxd 3:f8b9397e9272 10 DigitalOut myled1(D4);
voltxd 3:f8b9397e9272 11 DigitalOut myled2(D5);
Owen 0:a51a6e7da590 12
voltxd 5:668dd9395ca5 13 char sendFlag = 0;
voltxd 5:668dd9395ca5 14
voltxd 3:f8b9397e9272 15 int main()
voltxd 3:f8b9397e9272 16 {
voltxd 5:668dd9395ca5 17 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
voltxd 5:668dd9395ca5 18 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
voltxd 5:668dd9395ca5 19 // only handles 4 byte transfers in the ATMega code.
voltxd 5:668dd9395ca5 20 char txData[TRANSFERT_SIZE];
voltxd 3:f8b9397e9272 21
voltxd 5:668dd9395ca5 22 //Interruption sur réception Port Série
voltxd 5:668dd9395ca5 23 pc.attach(&usbRxInterrupt, SerialBase::RxIrq);
voltxd 5:668dd9395ca5 24
voltxd 5:668dd9395ca5 25
Owen 0:a51a6e7da590 26 my_nrf24l01p.powerUp();
voltxd 3:f8b9397e9272 27
voltxd 5:668dd9395ca5 28 //Configuration nRF24101P
voltxd 3:f8b9397e9272 29 my_nrf24l01p.setRfFrequency(NRF24L01P_MIN_RF_FREQUENCY);
voltxd 3:f8b9397e9272 30 my_nrf24l01p.setAirDataRate(NRF24L01P_DATARATE_2_MBPS);
voltxd 5:668dd9395ca5 31 my_nrf24l01p.setRfOutputPower(-6);
voltxd 5:668dd9395ca5 32 my_nrf24l01p.setTxAddress(0xFFA);
voltxd 5:668dd9395ca5 33 my_nrf24l01p.setRxAddress(0xFFE);
voltxd 5:668dd9395ca5 34 my_nrf24l01p.setTransferSize(TRANSFERT_SIZE);
voltxd 5:668dd9395ca5 35 my_nrf24l01p.setTransmitMode();
voltxd 5:668dd9395ca5 36
Owen 0:a51a6e7da590 37 my_nrf24l01p.enable();
voltxd 5:668dd9395ca5 38
voltxd 5:668dd9395ca5 39
voltxd 5:668dd9395ca5 40 //Infinite Loop
voltxd 3:f8b9397e9272 41 while (1)
voltxd 3:f8b9397e9272 42 {
voltxd 5:668dd9395ca5 43 // Si une trame est prête (4 octets)
voltxd 5:668dd9395ca5 44 if (sendFlag)
voltxd 3:f8b9397e9272 45 {
voltxd 5:668dd9395ca5 46 sendFlag = 0;
voltxd 5:668dd9395ca5 47 int i;
voltxd 5:668dd9395ca5 48
voltxd 5:668dd9395ca5 49 //On récupère la trame du buffer
voltxd 5:668dd9395ca5 50 for (i = 0; i < TRANSFERT_SIZE; i++)
voltxd 5:668dd9395ca5 51 txData[i] = cbTxGetOne();
voltxd 5:668dd9395ca5 52
voltxd 5:668dd9395ca5 53 // Send the transmitbuffer via the nRF24L01+
voltxd 5:668dd9395ca5 54 my_nrf24l01p.write(NRF24L01P_PIPE_P0, txData, TRANSFERT_SIZE);
voltxd 5:668dd9395ca5 55
Owen 0:a51a6e7da590 56 // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
Owen 0:a51a6e7da590 57 myled1 = !myled1;
Owen 0:a51a6e7da590 58 }
voltxd 5:668dd9395ca5 59 }
voltxd 5:668dd9395ca5 60 }
voltxd 5:668dd9395ca5 61
voltxd 5:668dd9395ca5 62 void usbRxInterrupt()
voltxd 5:668dd9395ca5 63 {
voltxd 5:668dd9395ca5 64 //On a reçu un octet, on le récupère et on le met dans le buffer
voltxd 5:668dd9395ca5 65 char c;
voltxd 5:668dd9395ca5 66 if(pc.read(&c, 1))
voltxd 5:668dd9395ca5 67 {
voltxd 5:668dd9395ca5 68 cbTxAddOne(c);
voltxd 5:668dd9395ca5 69 //S'il y a 4 octets dans le buffer, on peut les envoyer (passage du flag à 1)
voltxd 5:668dd9395ca5 70 if (cbTxGetDataSize() >= 4)
voltxd 5:668dd9395ca5 71 sendFlag = 1;
Owen 0:a51a6e7da590 72 }
voltxd 3:f8b9397e9272 73 }