From 4708de371d3b2f03b4a26b96e634e23ad2ef8374 Mon Sep 17 00:00:00 2001 From: filmak Date: Wed, 30 Jul 2025 16:11:37 +0200 Subject: [PATCH 1/7] temporary changes to radio code for cortexlab experiments --- sdk/bsp/radio.c | 2 +- sdk/bsp/scm3c_hw_interface.c | 7 +++++-- sdk/samples/radio_example_rx/main.c | 2 +- sdk/samples/radio_example_tx/main.c | 22 +++++++++++++--------- 4 files changed, 20 insertions(+), 13 deletions(-) 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..077b3ef 100644 --- a/sdk/bsp/scm3c_hw_interface.c +++ b/sdk/bsp/scm3c_hw_interface.c @@ -1048,13 +1048,16 @@ void initialize_mote() { set_asc_bit(t); } -#if defined(MODULE_RADIO) +//#if defined(MODULE_RADIO) // Init RX radio_init_rx_MF(); // Init TX radio_init_tx(); -#endif +//#endif + + // activate divider + radio_init_divider(2000); // Set initial IF ADC clock frequency set_IF_clock_frequency(scm3c_hw_interface_vars.IF_coarse, diff --git a/sdk/samples/radio_example_rx/main.c b/sdk/samples/radio_example_rx/main.c index c643da6..8eeba6a 100644 --- a/sdk/samples/radio_example_rx/main.c +++ b/sdk/samples/radio_example_rx/main.c @@ -15,7 +15,7 @@ int main(void) { LC_FREQCHANGE(0,0,0); - radio_txEnable(); + radio_rxEnable(); uint32_t g_tx_counter = 0; while (1) { diff --git a/sdk/samples/radio_example_tx/main.c b/sdk/samples/radio_example_tx/main.c index 7d5c4a6..7dace11 100644 --- a/sdk/samples/radio_example_tx/main.c +++ b/sdk/samples/radio_example_tx/main.c @@ -20,17 +20,21 @@ uint8_t packet[TX_PACKET_LEN] = {0}; int main(void) { radio_init(); - LC_FREQCHANGE(0,0,0); - radio_setEndFrameTxCb(tx_endframe_callback); - radio_loadPacket(packet, TX_PACKET_LEN + 2); - radio_txEnable(); - busy_wait_cycles(NUM_CYCLES_BETWEEN_PACKET); - radio_txNow(); + LC_FREQCHANGE(31,31,31); + //radio_setEndFrameTxCb(tx_endframe_callback); + //radio_loadPacket(packet, TX_PACKET_LEN + 2); + //radio_txEnable(); + //radio_txNow(); + + //busy_wait_cycles(NUM_CYCLES_BETWEEN_PACKET); + + radio_rxEnable(); + radio_rxNow(); - uint32_t g_tx_counter = 0; + //uint32_t g_tx_counter = 0; while (1) { - printf("Hello World! %lu\n", g_tx_counter++); - busy_wait_cycles(NUM_CYCLES_BETWEEN_TX); + //printf("Hello World! %lu\n", g_tx_counter++); + //busy_wait_cycles(NUM_CYCLES_BETWEEN_TX); } } From 3c242441e8bda626e15f856fe8124b0e262c3fd2 Mon Sep 17 00:00:00 2001 From: filmak Date: Wed, 30 Jul 2025 16:21:53 +0200 Subject: [PATCH 2/7] radio TX - remove radio TX code sweep, it was used previously for debugging --- sdk/samples/radio_example_rx/main.c | 39 +++++++++++++++++++++++------ sdk/samples/radio_example_tx/main.c | 27 ++++++++++---------- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/sdk/samples/radio_example_rx/main.c b/sdk/samples/radio_example_rx/main.c index 8eeba6a..f33a564 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) +uint8_t packet[125] = {0}; +uint8_t packet_len = 125; +int8_t rxpk_rssi = 0; +uint8_t rxpk_lqi = 0; + +void rx_endframe_callback(uint32_t timestamp); int main(void) { - LC_FREQCHANGE(0,0,0); + 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 7dace11..2456b41 100644 --- a/sdk/samples/radio_example_tx/main.c +++ b/sdk/samples/radio_example_tx/main.c @@ -7,6 +7,7 @@ #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. @@ -15,23 +16,23 @@ #define TX_PACKET_LEN (64UL) void tx_endframe_callback(uint32_t timestamp); - uint8_t packet[TX_PACKET_LEN] = {0}; int main(void) { +uint8_t fine_code = 0; +uint8_t mid_code = 0; + +int main(void) { + + printf("Radio Transmitter Example\n"); radio_init(); - LC_FREQCHANGE(31,31,31); - //radio_setEndFrameTxCb(tx_endframe_callback); - //radio_loadPacket(packet, TX_PACKET_LEN + 2); - //radio_txEnable(); - //radio_txNow(); - - //busy_wait_cycles(NUM_CYCLES_BETWEEN_PACKET); - - radio_rxEnable(); - radio_rxNow(); - - //uint32_t g_tx_counter = 0; + LC_FREQCHANGE(0,0,0); + radio_setEndFrameTxCb(tx_endframe_callback); + radio_loadPacket(packet, TX_PACKET_LEN + 2); + radio_txEnable(); + busy_wait_cycles(NUM_CYCLES_BETWEEN_PACKET); + radio_txNow(); + while (1) { //printf("Hello World! %lu\n", g_tx_counter++); //busy_wait_cycles(NUM_CYCLES_BETWEEN_TX); From c2dfa500bdcb4fb6e40a83a6d3daf927a581322a Mon Sep 17 00:00:00 2001 From: filmak Date: Wed, 7 May 2025 08:31:08 -0700 Subject: [PATCH 3/7] radio tx - remove frequency sweep to make the radio sample code simpler --- sdk/samples/radio_example_tx/main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/samples/radio_example_tx/main.c b/sdk/samples/radio_example_tx/main.c index 2456b41..bf2e16c 100644 --- a/sdk/samples/radio_example_tx/main.c +++ b/sdk/samples/radio_example_tx/main.c @@ -12,13 +12,12 @@ // 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}; -int main(void) { uint8_t fine_code = 0; uint8_t mid_code = 0; From 285a0a17186bd0fb98ba862bfff248fa39b00910 Mon Sep 17 00:00:00 2001 From: filmak Date: Tue, 27 May 2025 11:39:36 -0400 Subject: [PATCH 4/7] radio samples make all global variables and functions in main static --- sdk/samples/radio_example_rx/main.c | 10 +++++----- sdk/samples/radio_example_tx/main.c | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sdk/samples/radio_example_rx/main.c b/sdk/samples/radio_example_rx/main.c index f33a564..6d6ec89 100644 --- a/sdk/samples/radio_example_rx/main.c +++ b/sdk/samples/radio_example_rx/main.c @@ -9,12 +9,12 @@ #include "scm3c_hw_interface.h" #include "scum.h" -uint8_t packet[125] = {0}; -uint8_t packet_len = 125; -int8_t rxpk_rssi = 0; -uint8_t rxpk_lqi = 0; +static uint8_t packet[125] = {0}; +static uint8_t packet_len = 125; +static int8_t rxpk_rssi = 0; +static uint8_t rxpk_lqi = 0; -void rx_endframe_callback(uint32_t timestamp); +static void rx_endframe_callback(uint32_t timestamp); int main(void) { diff --git a/sdk/samples/radio_example_tx/main.c b/sdk/samples/radio_example_tx/main.c index bf2e16c..e7d2c63 100644 --- a/sdk/samples/radio_example_tx/main.c +++ b/sdk/samples/radio_example_tx/main.c @@ -15,11 +15,11 @@ #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}; -uint8_t fine_code = 0; -uint8_t mid_code = 0; +static uint8_t fine_code = 0; +static uint8_t mid_code = 0; int main(void) { From 3b2dca1020fec62ea772b65b3aa661bfc7d144c7 Mon Sep 17 00:00:00 2001 From: filmak Date: Wed, 30 Jul 2025 16:33:26 +0200 Subject: [PATCH 5/7] radio tx - remove unused variable declarations --- sdk/samples/radio_example_tx/main.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/sdk/samples/radio_example_tx/main.c b/sdk/samples/radio_example_tx/main.c index e7d2c63..ea6bf93 100644 --- a/sdk/samples/radio_example_tx/main.c +++ b/sdk/samples/radio_example_tx/main.c @@ -18,9 +18,6 @@ static void tx_endframe_callback(uint32_t timestamp); static uint8_t packet[TX_PACKET_LEN] = {0}; -static uint8_t fine_code = 0; -static uint8_t mid_code = 0; - int main(void) { printf("Radio Transmitter Example\n"); From 13e77a11b01399880f74361165be8f767a397fc8 Mon Sep 17 00:00:00 2001 From: filmak Date: Fri, 1 Aug 2025 13:38:19 +0200 Subject: [PATCH 6/7] hw interface: revert changes to radio initialization with precompiler condition --- sdk/bsp/scm3c_hw_interface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/bsp/scm3c_hw_interface.c b/sdk/bsp/scm3c_hw_interface.c index 077b3ef..1fc8468 100644 --- a/sdk/bsp/scm3c_hw_interface.c +++ b/sdk/bsp/scm3c_hw_interface.c @@ -1048,13 +1048,13 @@ void initialize_mote() { set_asc_bit(t); } -//#if defined(MODULE_RADIO) +#if defined(MODULE_RADIO) // Init RX radio_init_rx_MF(); // Init TX radio_init_tx(); -//#endif +#endif // activate divider radio_init_divider(2000); From 8d44982f567f8055a702f5e2d553921be1b6da7a Mon Sep 17 00:00:00 2001 From: filmak Date: Fri, 1 Aug 2025 13:43:19 +0200 Subject: [PATCH 7/7] radio_tx main loop: add WFE to main --- sdk/samples/radio_example_tx/main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/samples/radio_example_tx/main.c b/sdk/samples/radio_example_tx/main.c index ea6bf93..a2f83eb 100644 --- a/sdk/samples/radio_example_tx/main.c +++ b/sdk/samples/radio_example_tx/main.c @@ -30,8 +30,7 @@ int main(void) { radio_txNow(); while (1) { - //printf("Hello World! %lu\n", g_tx_counter++); - //busy_wait_cycles(NUM_CYCLES_BETWEEN_TX); + __WFE(); } }