ESP32-SE Lo-Fi内置天线LoRaWAN传输看门狗超时故障排查求助
我有一台ESP32-SE Lo-Fi设备,需要通过内置天线利用LoRaWAN协议将数据上传至第三方数据库。目前采用MCCI Arduino LoRaWAN Library编写了代码(已隐去AppEUI、DevEUI、APPKEY等敏感信息),但设备运行时频繁触发Core 1中断看门狗超时的Guru Meditation Error,无法正常完成数据上传流程。
代码片段
// 隐去AppEUI、DevEUI、APPKEY #include <Arduino.h> #include <lmic.h> #include <hal/hal.h> #include <SPI.h> // 敏感信息已移除 const u1_t PROGMEM APPEUI[8] = { /* 已隐去 */ }; const u1_t PROGMEM DEVEUI[8] = { /* 已隐去 */ }; const u1_t PROGMEM APPKEY[16] = { /* 已隐去 */ }; void os_getArtEui(u1_t* buf) { memcpy_P(buf, APPEUI, 8); } void os_getDevEui(u1_t* buf) { memcpy_P(buf, DEVEUI, 8); } void os_getDevKey(u1_t* buf) { memcpy_P(buf, APPKEY, 16); } static osjob_t sendjob; // 发送回调 void onEvent(ev_t ev) { switch(ev) { case EV_SCAN_TIMEOUT: Serial.println("EV_SCAN_TIMEOUT"); break; case EV_BEACON_FOUND: Serial.println("EV_BEACON_FOUND"); break; case EV_BEACON_MISSED: Serial.println("EV_BEACON_MISSED"); break; case EV_BEACON_TRACKED: Serial.println("EV_BEACON_TRACKED"); break; case EV_JOINING: Serial.println("EV_JOINING"); break; case EV_JOINED: Serial.println("EV_JOINED"); // 加入成功后调度发送任务 os_setCallback(&sendjob, sendData); break; case EV_JOIN_FAILED: Serial.println("EV_JOIN_FAILED"); break; case EV_REJOIN_FAILED: Serial.println("EV_REJOIN_FAILED"); break; case EV_TXCOMPLETE: Serial.println("EV_TXCOMPLETE"); // 再次调度发送任务 os_setCallback(&sendjob, sendData); break; case EV_LOST_TSYNC: Serial.println("EV_LOST_TSYNC"); break; case EV_RESET: Serial.println("EV_RESET"); break; case EV_RXCOMPLETE: Serial.println("EV_RXCOMPLETE"); break; case EV_LINK_DEAD: Serial.println("EV_LINK_DEAD"); break; case EV_LINK_ALIVE: Serial.println("EV_LINK_ALIVE"); break; default: Serial.print("Unknown event: "); Serial.println((unsigned int)ev); break; } } void sendData(osjob_t* j) { // 准备数据 uint8_t data[] = {0x01, 0x02, 0x03}; // 发送数据 LMIC_setTxData2(1, data, sizeof(data), 0); Serial.println("Data scheduled for transmission"); } void setup() { Serial.begin(115200); while(!Serial); // 初始化LMIC os_init(); LMIC_reset(); // 设置信道(根据区域调整,此处假设为EU868) LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); LMIC_setupChannel(1, 868300000, DR_RANGE_MAP(DR_SF12, DR_SF7B), BAND_CENTI); LMIC_setupChannel(2, 868500000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); LMIC_setupChannel(3, 867100000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); LMIC_setupChannel(4, 867300000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); LMIC_setupChannel(5, 867500000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); LMIC_setupChannel(6, 867700000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); LMIC_setupChannel(7, 867900000, DR_RANGE_MAP(DR_SF12, DR_SF7), BAND_CENTI); LMIC_setupChannel(8, 868800000, DR_RANGE_MAP(DR_FSK, DR_FSK), BAND_MILLI); // 禁用自适应数据速率 LMIC_setAdrMode(0); // 设置数据速率 LMIC_setDrTxpow(DR_SF7, 14); // 启动加入流程 LMIC_startJoining(); } void loop() { os_runloop_once(); }
错误日志
Guru Meditation Error: Core 1 panic'ed (Interrupt watchdog timeout on CPU1).
Core 1 register dump:
PC : 0x40084f6e PS : 0x00060030 A0 : 0x80083b3d A1 : 0x3ffb1f10
A2 : 0x00000000 A3 : 0x00000001 A4 : 0x00000001 A5 : 0x00000000
A6 : 0x00000000 A7 : 0x00000000 A8 : 0x80084f6e A9 : 0x3ffb1ee0
A10 : 0x00000000 A11 : 0x00000000 A12 : 0x00000001 A13 : 0x3ffb23c0
A14 : 0x00000000 A15 : 0x00000000 SAR : 0x00000010 EXCCAUSE: 0x00000006
EXCVADDR: 0x00000000 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0x00000000Backtrace: 0x40084f6e:0x3ffb1f10 0x40083b3a:0x3ffb1f30 0x40083d0d:0x3ffb1f50 0x400e2d7d:0x3ffb1f70 0x400d1336:0x3ffb1fa0 0x400d0485:0x3ffb1fc0 0x40083695:0x3ffb1fe0
硬件信息
使用的设备为ESP32-SE Lo-Fi,采用内置LoRa天线,已确认天线配置与设备官方参数匹配。
请求协助排查该看门狗超时错误的原因,并给出修复方案。
内容的提问来源于stack exchange,提问作者user24436260

