You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32WLE5发送LoRa数据后写入Flash致后续收发故障求助

问题背景与现象
  • 硬件:STM32WLE5微控制器
  • 软件框架:STM CubeMX生成代码,基于LoRaWAN EndNode框架,使用FreeRTOS(CMSIS V2.0)
  • 正常功能:传感器读取、常规LoRa帧收发工作正常
  • 异常现象:发送LoRa帧并写入Flash后,后续的LoRa帧收发完全停止
问题核心细节

执行LmHandlerSend(&AppData_send, LmHandlerParams->IsTxConfirmed, true);后,返回状态为LORAMAC_HANDLER_COMPLIANCE_RUNNING,问题锁定在以下LoRaMAC代码片段的条件判断逻辑:

#if (defined(LORAMAC_VERSION) && (LORAMAC_VERSION == 0x01000300))
    if ((LmHandlerPackages[PACKAGE_ID_COMPLIANCE]->IsRunning() == true) &&
        (appData->Port != LmHandlerPackages[PACKAGE_ID_COMPLIANCE]->Port) &&
        (appData->Port != 0))
    {
        return LORAMAC_HANDLER_COMPLIANCE_RUNNING;
    }
#endif
Flash写入任务实现

创建了一个最高优先级的FreeRTOS独立任务负责Flash写入:

  • Flash存储地址:0x0803E000,页大小2KB
  • 任务代码如下:
/* USER CODE BEGIN Header_flashWriteTask */
/**
* @brief Function implementing the flashWrite thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_flashWriteTask */
void flashWriteTask(void *argument)
{
    __flash_read_write_t data_flash_write = {0};
    /* Infinite loop */
    for (;;)
    {
        osMessageQueueGet(flashWriteQueueHandle, &data_flash_write, 0, osWaitForever);
        // Check that the data size is a multiple of 8 (uint64_t)
        if (data_flash_write.numberofwords % 8 != 0)
        {
            data_flash_write.numberofwords += 8 - (data_flash_write.numberofwords % 8);
        }
        osKernelLock();
        FLASH_IF_StatusTypedef erase_flash_sts = FLASH_IF_Erase((void *)data_flash_write.StartPageAddress, data_flash_write.numberofwords);
        if (FLASH_IF_OK == erase_flash_sts)
        {
            FLASH_IF_Write((void *)data_flash_write.StartPageAddress, data_flash_write.Data, data_flash_write.numberofwords);
        }
        osKernelUnlock();
    }
}
疑问与求助

请问Flash写入与LoRa帧处理之间的冲突原因是什么?需要解决该问题的思路与建议。


内容的提问来源于stack exchange,提问作者Ignacio Islas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:13:12