Анализ данных передачи данных LoRa STM32WLE5JCC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Анализ данных передачи данных LoRa STM32WLE5JC

Сообщение Anonymous »

У меня есть программа, которая отправляет данные между двумя устройствами WIO E5 Mini, но я не знаю, как извлечь фактические данные из пакетов. Я использую LoRa и промежуточное программное обеспечение subghz phy.

Код: Выделить всё

#include "platform.h"
#include "sys_app.h"
#include "subghz_phy_app.h"
#include "radio.h"

/* USER CODE BEGIN Includes */
//[JT]
#include "utilities_def.h"
#include "stm32_seq.h"
#include "stm32_timer.h"
#include "main.h"
#include "stdio.h"
/* USER CODE END Includes */

/* External variables ---------------------------------------------------------*/
/* USER CODE BEGIN EV */
//[JT]
#define RECEIVER
//#define TRANSMITTER
#define BUFFER_SIZE     10
extern UART_HandleTypeDef huart2;
/* USER CODE END EV */

/* Private typedef -----------------------------------------------------------*/

/* USER CODE BEGIN PTD */
/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define TRANSMIT_PERIOD_MS 2000  /* set Tx period of timer to 2 seconds */     //[JT]
/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/
/* Radio events function pointer */
static RadioEvents_t RadioEvents;
/* USER CODE BEGIN PV */
uint16_t BufferSize = BUFFER_SIZE;   //[JT]
uint8_t Buffer[BUFFER_SIZE];         //[JT]
/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
/*!
* @brief Function to be executed on Radio Tx Done event
*/
static void OnTxDone(void);

/**
* @brief Function to be executed on Radio Rx Done event
* @param  payload ptr of buffer received
* @param  size buffer size
* @param  rssi
* @param  LoraSnr_FskCfo
*/
static void OnRxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t LoraSnr_FskCfo);

/**
* @brief Function executed on Radio Tx Timeout event
*/
static void OnTxTimeout(void);

/**
* @brief Function executed on Radio Rx Timeout event
*/
static void OnRxTimeout(void);

/**
* @brief Function executed on Radio Rx Error event
*/
static void OnRxError(void);

/* USER CODE BEGIN PFP */
static void Rx_Process(void);  //[JT]
static void TransmitPacket(void);     //[JT]
/* USER CODE END PFP */

/* Exported functions ---------------------------------------------------------*/
void SubghzApp_Init(void)
{
/* USER CODE BEGIN SubghzApp_Init_1 */

/* USER CODE END SubghzApp_Init_1 */

/* Radio initialization */
RadioEvents.TxDone = OnTxDone;
RadioEvents.RxDone = OnRxDone;
RadioEvents.TxTimeout = OnTxTimeout;
RadioEvents.RxTimeout = OnRxTimeout;
RadioEvents.RxError = OnRxError;

Radio.Init(&RadioEvents);

/* USER CODE BEGIN SubghzApp_Init_2 */
//[JT]
//#ifdef TRANSMITTER
//  APP_LOG(TS_ON, VLEVEL_L, "******TRANSMITTER******\n\r");
////  Radio.SetTxConfig(MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
////                     LORA_SPREADING_FACTOR, LORA_CODINGRATE,
////                      LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
////                      true, 0, 0, LORA_IQ_INVERSION_ON, TX_TIMEOUT_VALUE);
//#endif
//#ifdef RECEIVER
//  APP_LOG(TS_ON, VLEVEL_L, "******RECEIVER******\n\r");
////  Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
////                    LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
////                    LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
////                    0, true, 0, 0, LORA_IQ_INVERSION_ON, true);
//#endif
Radio.SetTxConfig(MODEM_LORA, TX_OUTPUT_POWER, 0, LORA_BANDWIDTH,
LORA_SPREADING_FACTOR, LORA_CODINGRATE,
LORA_PREAMBLE_LENGTH, LORA_FIX_LENGTH_PAYLOAD_ON,
true, 0, 0, LORA_IQ_INVERSION_ON, TX_TIMEOUT_VALUE);
Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
0, true, 0, 0, LORA_IQ_INVERSION_ON, false);
Radio.SetMaxPayloadLength(MODEM_LORA, BUFFER_SIZE);
//Radio.SetChannel(RF_FREQUENCY);
Radio.SetChannel(914900000);
SUBGRF_SetDioIrqParams( IRQ_TX_DONE | IRQ_RX_TX_TIMEOUT | IRQ_RX_DONE,
IRQ_TX_DONE | IRQ_RX_TX_TIMEOUT,
IRQ_RX_DONE,
IRQ_RADIO_NONE );

//#ifdef TRANSMITTER
//  Buffer[0] = 'S';
//  Buffer[1] = 'T';
//  Buffer[2] = 'M';
//  Buffer[3] = '3';
//  Buffer[4] = '2';
//  Buffer[5] = 'W';
//  Buffer[6] = 'L';
//  Buffer[7] = '_';
//  Buffer[8] = 'T';
//  Buffer[9] = 'X';
//
//  /* Add delay between TX and RX =
//  time Busy_signal is ON in RX opening window */
//  HAL_Delay(Radio.GetWakeupTime() + TCXO_WORKAROUND_TIME_MARGIN);
//
//  UTIL_TIMER_Create(&timerTransmit, 0xFFFFFFFFU, UTIL_TIMER_ONESHOT, TransmitPacket, NULL);
//  UTIL_TIMER_SetPeriod(&timerTransmit, TRANSMIT_PERIOD_MS);
//  UTIL_TIMER_Start(&timerTransmit);  // start transmitting packets every 2s
//#endif
//
//#ifdef RECEIVER
//
//  UTIL_SEQ_RegTask((1 

Подробнее здесь: [url]https://stackoverflow.com/questions/78865359/analyse-data-from-lora-data-transfer-stm32wle5jc[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»