diff --git a/sdk/bsp/radio.c b/sdk/bsp/radio.c index ed948f4..0b20f33 100644 --- a/sdk/bsp/radio.c +++ b/sdk/bsp/radio.c @@ -28,7 +28,7 @@ signed short cdr_tau_history[11] = {0}; //=========================== definition ====================================== -// #define DIV_ON +#define DIV_ON #define MAXLENGTH_TRX_BUFFER 128 // 1B length, 125B data, 2B CRC #define NUM_CHANNELS 16 diff --git a/sdk/bsp/scm3c_hw_interface.c b/sdk/bsp/scm3c_hw_interface.c index 6cb5d7f..1fc8468 100644 --- a/sdk/bsp/scm3c_hw_interface.c +++ b/sdk/bsp/scm3c_hw_interface.c @@ -1056,6 +1056,9 @@ void initialize_mote() { radio_init_tx(); #endif + // activate divider + radio_init_divider(2000); + // Set initial IF ADC clock frequency set_IF_clock_frequency(scm3c_hw_interface_vars.IF_coarse, scm3c_hw_interface_vars.IF_fine, 0); diff --git a/sdk/samples/radio_example_rx/main.c b/sdk/samples/radio_example_rx/main.c index c643da6..6d6ec89 100644 --- a/sdk/samples/radio_example_rx/main.c +++ b/sdk/samples/radio_example_rx/main.c @@ -7,19 +7,44 @@ #include "radio.h" #include "rftimer.h" #include "scm3c_hw_interface.h" +#include "scum.h" -// Number of for loop cycles between Hello World messages. -// 700000 for loop cycles roughly correspond to 1 second. -#define NUM_CYCLES_BETWEEN_TX (1000000UL) +static uint8_t packet[125] = {0}; +static uint8_t packet_len = 125; +static int8_t rxpk_rssi = 0; +static uint8_t rxpk_lqi = 0; + +static void rx_endframe_callback(uint32_t timestamp); int main(void) { - LC_FREQCHANGE(0,0,0); - radio_txEnable(); + printf("Radio Receiver Example\n"); + + radio_init(); + LC_FREQCHANGE(0,20,15); + radio_setEndFrameRxCb(rx_endframe_callback); + radio_rxEnable(); + radio_rxNow(); - uint32_t g_tx_counter = 0; while (1) { - printf("Hello World! %lu\n", g_tx_counter++); - busy_wait_cycles(NUM_CYCLES_BETWEEN_TX); + __WFE(); + } +} + +void rx_endframe_callback(uint32_t timestamp) { + + radio_getReceivedFrame( &(packet[0]), + &packet_len, + sizeof(packet), + &rxpk_rssi, + &rxpk_lqi ); + + for (uint8_t i = 0; i < packet_len - 2; i++) { + printf("%d ", packet[i]); } + printf("\n"); + + radio_rxEnable(); + radio_rxNow(); + } diff --git a/sdk/samples/radio_example_tx/main.c b/sdk/samples/radio_example_tx/main.c index 7d5c4a6..a2f83eb 100644 --- a/sdk/samples/radio_example_tx/main.c +++ b/sdk/samples/radio_example_tx/main.c @@ -7,18 +7,20 @@ #include "radio.h" #include "rftimer.h" #include "scm3c_hw_interface.h" +#include "scum.h" // Number of for loop cycles between Hello World messages. // 700000 for loop cycles roughly correspond to 1 second. #define NUM_CYCLES_BETWEEN_TX (1000000UL) -#define NUM_CYCLES_BETWEEN_PACKET (100UL) +#define NUM_CYCLES_BETWEEN_PACKET (1000UL) #define TX_PACKET_LEN (64UL) -void tx_endframe_callback(uint32_t timestamp); - -uint8_t packet[TX_PACKET_LEN] = {0}; +static void tx_endframe_callback(uint32_t timestamp); +static uint8_t packet[TX_PACKET_LEN] = {0}; int main(void) { + + printf("Radio Transmitter Example\n"); radio_init(); LC_FREQCHANGE(0,0,0); radio_setEndFrameTxCb(tx_endframe_callback); @@ -27,10 +29,8 @@ int main(void) { busy_wait_cycles(NUM_CYCLES_BETWEEN_PACKET); radio_txNow(); - uint32_t g_tx_counter = 0; while (1) { - printf("Hello World! %lu\n", g_tx_counter++); - busy_wait_cycles(NUM_CYCLES_BETWEEN_TX); + __WFE(); } }