ML307R 插到 ESP32 的 USBH_CDC 示例中

当你把 ML307R 插到 ESP32 的 USBH_CDC 示例中,却一直卡在 “Network disconnected” 或频繁重连,很可能是以下几点原因之一,建议按“硬件 → USB 协议 → AT 驱动 → 网络配置”四个层面来逐步排查:


1. 硬件接线 与 电源 检查

  1. USB 线与接口

    • 确保你的 ML307R 板载 USB D+/D– 正确连到 ESP32 的对应引脚(默认示例中是 GPIO18/19,或按 usb_host_install 时指定的管脚)。
    • 用示波器或万用表测量 D+/D– 拉高电阻确保有 1.5 kΩ 的上拉(USB 全速设备需 1.5 kΩ)。
  2. 电源

    • ML307R 峰值发射电流可达 300 mA 左右,且还要驱动 USB PHY,务必保证 5 V→3.3 V DCDC 能提供至少 500 mA。
    • 如果电压跌落,会导致模块复位或 USB 断连。

2. USB 枚举 与 协议

  1. VID/PID 与 接口号

    • 在日志里你看到

      esp-modem: Model: User Defined
      esp-modem: Modem itf 3
      

      这说明框架并没有识别到 ML307R 的“预定义” VID/PID。ESP 模块内部有一张 predefined modem list,需要把 ML307R 的 VID/PID、接口号(interface) 和端点(endpoint) 加进去。

    • 取出 ML307R 板上的 VID/PID(用 lsusb 或 Wireshark 抓 USB),然后在 components/esp_modem/src/predefined/modem_list.c 中新增类似:

      {
          .vendor_id = 0x2E8A,      // 示例 VID,替换为你的实际值
          .product_id = 0x0001,     // 示例 PID
          .ifc = 3,                 // 从日志或抓包确认
          .notif_ep = 0x8A,         // Notification endpoint
          .in_ep = 0x82,
          .out_ep = 0x01,
          .type = ESP_MODEM_DCE_CDC_ACM,
          .has_dsr = false,
      },
      
    • 重编译并 flash 后,日志里就能看到 Model: ML307R 而不再是 User Defined,后续 AT 驱动才能正确加载。

  2. USB 速度

    • ML307R 默认是 USB Full-Speed (12 Mbps),ESP32 USBH 需配置为全速模式:在 iot_usb_host_config_t 里确保 phy_mode = USB_PHY_FS

3. AT 驱动层面

  1. 查看 AT 命令交互

    • 打开更详细的日志:

      esp_modem_set_log_level(ESP_MODEM_LOG_VERBOSE);
      

      这样可以看到每条 AT 命令及应答,确认是否 ATOKAT+CREG?AT+CGATT?AT+CGDCONT? 等都返回正常。

  2. 重置 & DTR/RTS

    • ML307R 有时需要通过 DTR 或 RTS 来触发出厂固件的 USB 复位。示例默认把 DTR 绑到 ESP32 的 GPIO12。
    • 确认 config.dte_use_dtr = true; config.dte_dtr_level = 0; config.dte_rts_level = 0; 与硬件一致,否则模块可能一直在复位环。

4. 网络 & SIM 配置

  1. SIM 卡状态

    • 日志显示 SIM Card Ready,但 Signal quality: rssi=26, ber=99(位错误率99%)表示无线信号非常差。请:

      • 换一张已知正常的 SIM 卡,或把天线插紧。
      • 在天线外加 SMA 天线,确保至少 RSSI > 10dBm 且 BER < 1%。
  2. APN 与 PDP 激活

    • 默认示例里 APN 可能是空串或 “internet”,但你运营商的 APN 不同。务必在 esp_modem_dce_set_sim_apn(dce, "你的APN", "user", "pwd") 或者在启动时:

      esp_modem_config_t config = ESP_MODEM_DEFAULT_CONFIG();
      config.dte_sim_apn = "CMNET";  // 比如中国移动
      
    • 然后看 AT+CGDCONT?AT+CGACT? 确认 PDP 已激活。

  3. 运营商网络注册

    • AT+CREG?AT+CGREG? 确认已注册到网络(返回状态 1 或 5)。

    • 如果长期注册失败,可尝试手动锁网:

      AT+COPS=1,2,"46000"   // 锁定到中国移动
      

在这里插入图片描述

快速排查步骤汇总

  1. 硬件:检查 USB 线、上拉、供电。
  2. USB 枚举:抓包确认 VID/PID/接口/端点,加到预定义列表并编译。
  3. AT 层:打开 VERBOSE 日志,看命令/应答;确认 DTR/RTS 复位逻辑。
  4. SIM & 网络:天线/SIM 检查,正确配置 APN,手动 AT 命令确认网络注册。

按上面四个层面逐步排除,就能锁定到底是硬件接线、USB 协议不匹配、驱动识别不到模块,还是网络/APN 配置问题。祝顺利调通!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值