STM32WL55 uart error with RF
- 8 replies
- 2501 views
Hi I am testing with STM32WL55CCU6.
When I use only uart1, uart1 works well.
but when I use uart1 and RF(LoRa) send, MCU does not work.
I coded that MCU transmit some message using uart to terminal per second.
MCU continues to work fine.
but I added some code that MCU transmit some data using LoRa to remote device per second.
A message is output to the terminal a few times, then no more output,
and the mcu does not work.
I think there are some problem between uart and RF.
Does your library 1.1.0 have some problem?
Below are some part of my code.
1. init
MX_GPIO_Init();
MX_I2C2_Init();
MX_SUBGHZ_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
MX_I2C3_Init();
MX_RTC_Init();
MX_TIM16_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim16);
MX_SubGHz_Phy_Init();
2. uart callback
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
if (huart->Instance == USART1) {
loadReceiveConsoleData(uart1_data);
HAL_UART_Receive_IT(&huart1, &uart1_data, 1);
}
else if(huart->Instance == USART2) {
HAL_UART_Receive_IT(&huart2, &uart2_data, 1);
}
}
3. rf init
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
Radio.SetChannel(RF_FREQUENCY);
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, true);
Radio.SetMaxPayloadLength(MODEM_LORA, MAX_APP_BUFFER_SIZE);
int random_delay = (Radio.Random()) >> 22; // 10bits random e.g. from 0 to 1023 ms
// starts reception
Radio.Rx(RX_TIMEOUT_VALUE + random_delay);
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_SubGHz_Phy_App_Process), UTIL_SEQ_RFU, RF_Process);
/* USER CODE END SubghzApp_Init_2 */
}
Can you resolve the problem??
I added all source
Please help me~~~~~
