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.
Dependencies: nRF24L01P_Hello_World nRF24L01P
main.cpp@5:668dd9395ca5, 2021-04-16 (annotated)
- Committer:
- voltxd
- Date:
- Fri Apr 16 16:01:03 2021 +0000
- Revision:
- 5:668dd9395ca5
- Parent:
- 4:5caf9e1dc16c
ok;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |