返回资讯中心
外部精选
软件工程
#开发者实时流

开发者修复Elecrow ThinkNode M9的LR1110 LNA 25 dB增益Bug

来源标题:Fixing a 25 dB LR1110 LNA gain bug on the Elecrow ThinkNode M9 (WadaMesh)

开发者TinkeringDao在WadaMesh项目提交PR,修复Elecrow ThinkNode M9上LR1110的LNA增益异常问题,并附带多项硬件修正。该PR共6个提交,涉及充电器状态、20 MHz SD、LR1110校准、IMU手势以及指南针/GPS修复,目前仍处于待合并状态。

Hacker News 最新tinkeringdao2026/11/11 · 今天13 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

代码 问题 131 (131) 拉取请求 11 (11) 操作 项目 安全与质量 洞察 更多项目 thinknode_m9:充电器状态、20 MHz SD、LR1110 校准、IMU 手势以及指南针/GPS 修复 - #804 #804 开放中 TinkeringDao 希望将 6 个提交合并到 ALLFATHER-BV:main ALLFATHER-BV/wadamesh:main,来自 TinkeringDao:feat/thinknode-m9-hw-fixes TinkeringDao/wadamesh:feat/thinknode-m9-hw-fixes 复制头分支名称到剪贴板 对话 提交 6 (6) 检查 文件变更 开放中 thinknode_m9:充电器状态、20 MHz SD、LR1110 校准、IMU 手势以及指南针/GPS 修复 #804 TinkeringDao 希望将 6 个提交合并到 ALLFATHER-BV:main ALLFATHER-BV/wadamesh:main,来自 TinkeringDao:feat/thinknode-m9-hw-fixes TinkeringDao/wadamesh:feat/thinknode-m9-hw-fixes 复制头分支名称到剪贴板 对话 TinkeringDao 评论于 2026 年 11 月 4 日 复制链接 复制 Markdown 摘要 variants/thinknode_m9/ ├── M9Board.{h,cpp} # GPIO1 VBUS + GPIO8 DONE# 三态充电器、8x ADC2 滤波、CS 预停靠、400 kHz Wire ├── M9Compass.{h,cpp} # 冷唤醒时在读取 0x01..0x06 前轮询 DRDY,右手坐标系 atan2f(-by, bx) ├── M9Imu.{h,cpp} # 0x4D 复位完成轮询(约 15 ms),在 55 ms 唤醒稳定期内保留缓存样本 ├── M9Keyboard.cpp # 20 ms Wire1 超时、8 次错误后总线复位、GPIO46 PIN_KEY_LED 同步 └── target.cpp # setRegulatorDCDC() + 切换后 calibrate(0x3F) + calibrateImageRejection() src/ ├── DataStore.cpp # 当 _fs == &SD 时报告 SD 已用/总 KB;在 rx_boosted_gain 中包含 USE_LR1110 ├── MyMesh.cpp # USE_LR1110 rx_boosted_gain + 150..960 MHz 钳位 ├── main.cpp # M9 启动时 sdTryFastClock()(4 -> 20 MHz)、SPIFFS DRAM 工作缓冲区 + TWDT 保护 ├── helpers/ │ ├── HardwareRtcClock.cpp # 禁用 PCF8563 CLKOUT(0x0D = 0x00) │ ├── WadaNmeaLocationProvider.h # 在 reset() 时调用 _post_enable();在 stop() 时将 TX/RX/STANDBY 释放为 INPUT │ └── radiolib/ │ ├── CustomLR1110Wrapper.h # USE_LR1110、pollRxDone()、esp_random() 种子 │ └── LR11x0Reset.h # 在 lr11x0ResetAGC() 中恢复 TCXO + STDBY_XOSC + DCDC + 图像校准 └── ui-touch/UITask.cpp # M9 充电器状态、面朝下/拿起 IMU 手势、低电量关机、1 ms 空闲让出 ThinkNodeM9Board::isCharging()

  • (M9 上未实现)
  • if (digitalRead(PIN_USB_5V_SENSE) != HIGH) return 0;
  • return digitalRead(PIN_CHG_DONE) == LOW ? 2 : 1; // U6 LGS4056HDA-4.35 开漏 DONE# m9CompassRead() if (!s_awake) writeReg(kRegCtrl1, kCtrl1)
  • 轮询 kRegStatus (0x09) 最多 8x2 ms 直到 kStatDrdy readRegs(kRegData, b, 6)
  • deg = atan2f(by, bx) * 57.2957795f
  • deg = atan2f(-by, bx) * 57.2957795f m9ImuReadAccelG() if (!s_awake) writeReg(kRegCtrl1, kCtrl1); writeReg(kRegCtrl7, kCtrl7On) s_awake = true; s_wake_ms = now if ((now - s_wake_ms) < kWakeSettleMs)
  • return false
  • return s_have_sample ? cached(s_x, s_y, s_z) : false 证据 之前(ThinkNode M9 硬件上的原版 beta_101): E (1454) SPIFFS: mount failed, -10025 在首次启动时;CMD_GET_BATT_AND_STORAGE 返回 used_kb: 0, total_kb: 0。 MicroSD 保持在 4 MHz (SD_SPI_SAFE_HZ)。 get radio.rxgain 返回 Unknown command;set radio 2400.0,62.5,8,5 在 sub-GHz LR1110 上被接受。 没有 isCharging() 实现(GPIO1 / GPIO8 未使用);QMC6309 冷唤醒在 DRDY 断言前读取 0x01..0x06,并且东西方向反转(atan2f(by, bx))。 之后(在 ThinkNode M9 hw=0x03 fw=0x10、LR1110 hw=0x22 fw=3.3 上测试): 干净启动并连续 mesh 运行 3+ 小时(接收 104 个数据包,发送 30 个,0 个接收错误,-112 dBm 噪声底): [rtc] PCF8563 retained time adopted: 1793797117 M9 keyboard: controller on Wire1 (20/21) addr=0x6D (hw=0x03 fw=0x10) M9 GPS: enable pin active HIGH (keyboard at 0x6D) M9 compass: QMC6309 ok (id=0x90, 100 Hz, +/-32 G, OSR 8, LPF 4) M9 IMU: QMI8658 ok (id=0x05 rev=0x7C, accel 62.5 Hz +/-2 g) LR1110: hw=0x22 device=0x01 fw=3.3 wifi=2.1 gnss=0.0 errors=0x0000 [BOOT] SD clock 4000000 -> 20000000 Hz (read-verified) [BOOT] storage: SD /meshcomod CMD_GET_BATT_AND_STORAGE: {'battery_mv': 4332, 'storage_used_kb': 658016, 'storage_total_kb': 15259936}(100 次快速采样的 stdev = 0.39 mV)。 get radio.rxgain -> > on, set radio.rxgain on -> OK, set radio 2400.0,62.5,8,5 -> Error, invalid radio params。 主机测试套件(bash scripts/run-host-tests.sh,包括 test_m9_board 和 test_m9_keyboard):pass=49 fail=0 skip=3。 合并风险 门:双向 所有板级引脚/充电器/传感器更改都限定在 variants/thinknode_m9/ 和 #if defined(HAS_THINKNODE_M9) / #if defined(USE_LR1110) 保护内;sdTryFastClock() 在给定卡上读取验证失败时会自动回退到 4 MHz。 触及 ThinkNode_M9_companion_radio_touch 变体、LR1110 无线电包装器辅助函数,以及带后备保护的共享 GPS/RTC/存储辅助函数。 加载时出错。请重新加载此页面。 成功合并此拉取请求可能会关闭这些问题。 加载时出错。请重新加载此页面。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →