ESP32 TTGO LoRa endPacket() 发送消息时挂起/冻结

问题描述 投票:0回答:1

我正在使用带有 LoRa 模块 (SX1276) 的 ESP32 TTGO T-Display,并遇到

LoRa.endPacket()
功能无限期挂起的问题。

硬件:

  • TTGO T-Display ESP32 带 LoRa
  • 使用 Arduino IDE 2.x
  • LoRa库版本:0.8.0

代码:

// Minimal reproducible example
#include <SPI.h>
#include <LoRa.h>

#define LORA_SCK     5
#define LORA_MISO    19
#define LORA_MOSI    27
#define LORA_CS      18
#define LORA_RST     23
#define LORA_IRQ     26
#define LORA_FREQ    868E6

void setup() {
    Serial.begin(115200);
    SPI.begin(LORA_SCK, LORA_MISO, LORA_MOSI, LORA_CS);
    LoRa.setPins(LORA_CS, LORA_RST, LORA_IRQ);

    if (!LoRa.begin(LORA_FREQ)) {
        Serial.println("LoRa failed!");
        while (1);
    }
    
    LoRa.setTxPower(14);
    LoRa.setSpreadingFactor(7);
    LoRa.setSignalBandwidth(125E3);
}

void loop() {
    if (!LoRa.beginPacket()) {
        Serial.println("Begin failed");
        return;
    }
    
    LoRa.print("TEST");
    bool success = LoRa.endPacket(); // <-- Hangs here
    
    Serial.println(success ? "OK" : "FAIL");
    delay(1000);
}

我尝试过的:

在 endPacket() 周围添加了超时逻辑。 将 TX 功率从 20 减少到 14。 设置最小扩频因子 (7)。 验证所有引脚连接。 尝试了阻塞和非阻塞模式。 代码正确初始化(打印“LoRa init successed”),但在尝试发送第一个数据包时挂起。尝试发送后,串行监视器未显示任何输出。

问题: 可能导致

LoRa.endPacket()
挂起的原因是什么?如何解决此问题?

c++ arduino esp32 lora
1个回答
0
投票

delay(1000);
可能是问题所在。您接连发送了太多消息。 LoRa 的设计目的不是为了在电波中发送垃圾邮件。

© www.soinside.com 2019 - 2024. All rights reserved.