Example based on UDAKZ example + OWEN EDWARDS example to test nRF24L01P with STM32F103C8T6 board

Dependencies:   mbed-STM32F103C8T6 mbed nRF24L01P

Fork of STM32F103C8T6_Hello by Zoltan Hudak

Files at this revision

API Documentation at this revision

Comitter:
cfb95
Date:
Fri Jul 29 14:45:55 2016 +0000
Parent:
7:accb2c83a007
Commit message:
Example based on HUDAKZ example + OWEN EDWARDS example to test nRF24L01P with STM32F103C8T6.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-STM32F103C8T6.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
nRF24L01P.lib Show annotated file Show diff for this revision Revisions of this file
diff -r accb2c83a007 -r c3006edbb507 main.cpp
--- a/main.cpp	Tue Jul 05 18:57:42 2016 +0000
+++ b/main.cpp	Fri Jul 29 14:45:55 2016 +0000
@@ -1,18 +1,92 @@
 #include "stm32f103c8t6.h"
 #include "mbed.h"
+#include "nRF24L01P.h"
+
+// The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
+//  "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
+//  only handles 4 byte transfers in the ATMega code.
+#define TRANSFER_SIZE   4
+
+
+#define LED2 PB_15
+
+#define CSN  PC_14
+#define CE   PC_15
+#define IRQ  PB_1
+
+#define LED_ON 0
+#define LED_OFF 1
 
 Serial      pc(PA_2, PA_3);
-DigitalOut  myled(LED1);
+DigitalOut  myled1(LED1);//tx activity
+DigitalOut  myled2(LED2);//rx activity
+
+
+nRF24L01P my_nrf24l01p(SPI_MOSI, SPI_MISO, SPI_SCK, CSN, CE, IRQ);    // mosi, miso, sck, csn, ce, irq
 
 int main() {
+    char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
+    int txDataCnt = 0;
+    int rxDataCnt = 0;
     confSysClock();     // Configuring system clock
-    while(1) {
-        // The on-board LED is connected, via a resistor, to +3.3V (not to GND). 
-        // So to turn the LED on or off we have to set it to 0 or 1 respectively
-        myled = 0;      // turn the LED on
-        wait(0.2);      // 200 ms
-        myled = 1;      // turn the LED off
-        wait(1.0);      // 1 sec
-        pc.printf("Blink\r\n");
+    pc.baud(115200);
+    myled1 = LED_OFF;      // turn the LED off
+    myled2 = LED_OFF;    
+    pc.printf("STM32+nRF24L01+ Test\r\n");
+    
+
+    my_nrf24l01p.powerUp();
+
+    // Display the (default) setup of the nRF24L01+ chip
+    pc.printf( "nRF24L01+ Frequency    : %d MHz\r\n",  my_nrf24l01p.getRfFrequency() );
+    pc.printf( "nRF24L01+ Output power : %d dBm\r\n",  my_nrf24l01p.getRfOutputPower() );
+    pc.printf( "nRF24L01+ Data Rate    : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
+    pc.printf( "nRF24L01+ TX Address   : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
+    pc.printf( "nRF24L01+ RX Address   : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
+
+    pc.printf( "Type keys to test transfers:\r\n  (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
+
+    my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
+
+    my_nrf24l01p.setReceiveMode();
+    my_nrf24l01p.enable();
+
+    while (1) {
+
+        // If we've received anything over the host serial link...
+        if ( pc.readable() ) {
+
+            // ...add it to the transmit buffer
+            txData[txDataCnt++] = pc.getc();
+
+            // If the transmit buffer is full
+            if ( txDataCnt >= sizeof( txData ) ) {
+
+                // Send the transmitbuffer via the nRF24L01+
+                my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
+
+                txDataCnt = 0;
+            }
+
+            // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
+            myled1 = !myled1;
+        }
+
+        // If we've received anything in the nRF24L01+...
+        if ( my_nrf24l01p.readable() ) {
+
+            // ...read the data into the receive buffer
+            rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
+
+            // Display the receive buffer contents via the host serial link
+            for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
+
+                pc.putc( rxData[i] );
+            }
+
+            // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
+            myled2 = !myled2;
+        }
     }
+
 }
diff -r accb2c83a007 -r c3006edbb507 mbed-STM32F103C8T6.lib
--- a/mbed-STM32F103C8T6.lib	Tue Jul 05 18:57:42 2016 +0000
+++ b/mbed-STM32F103C8T6.lib	Fri Jul 29 14:45:55 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/hudakz/code/mbed-STM32F103C8T6/#a92af4b1ffe1
+http://mbed.org/users/hudakz/code/mbed-STM32F103C8T6/#306609fe9dc8
diff -r accb2c83a007 -r c3006edbb507 mbed.bld
--- a/mbed.bld	Tue Jul 05 18:57:42 2016 +0000
+++ b/mbed.bld	Fri Jul 29 14:45:55 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/6c34061e7c34
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/f9eeca106725
\ No newline at end of file
diff -r accb2c83a007 -r c3006edbb507 nRF24L01P.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nRF24L01P.lib	Fri Jul 29 14:45:55 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Owen/code/nRF24L01P/#8ae48233b4e4