当前位置: 首页 > ops >正文

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 配置问题。祝顺利调通!

http://www.xdnf.cn/news/6741.html

相关文章:

  • LocaleContextResolver实现多语言切换-笔记
  • c++ 类的语法3
  • 八股文--JUC(2)
  • 物联网技术在银行安全用电系统中的应用与实践研究
  • 【C++】15.并发支持库
  • C语言水仙花数
  • 通过python安装小智语音服务器端
  • 从实模式到保护模式
  • 基于LTE帧结构参数的F-OFDM仿真
  • 刻录光盘--和炸铁路,tarjan
  • MGX:多智能体管理开发流程
  • 动态范围调整(SEF算法实现)
  • 在多个SpringBoot程序中./相对路径下隐患、文件覆盖问题
  • CSS- 2.1 实战之图文混排、表格、表单、学校官网一级导航栏
  • 基于51单片机和8X8点阵屏、矩阵按键的记忆类小游戏
  • C语言文件操作
  • 第八章 模板项目生成
  • Nextjs首屏加载速度性能从80分优化到98分
  • Qt控件:交互控件
  • PT2020 20触控I2C输出IC
  • 时频分析的应用—外部信号的显影和定点清除
  • 第三部分:内容安全(第十六章:网络型攻击防范技术、第十七章:反病毒、第十八章:入侵检测/防御系统(IDS/IPS))
  • 第J1周:ResNet-50算法实战与解析
  • C语言图案代码大全:从基础到高级
  • 院校机试刷题第四天:1911反转公约数、1702十六进制不进位加法
  • PR-2021
  • ADC深入——SNR、SFDR、ENOB等概念
  • 深入浅出拆分学习,图神经网络拆分学习,混合联邦学习
  • 网络攻防模拟:城市安全 “数字预演”
  • 14 C 语言浮点类型详解:类型精度、表示形式、字面量后缀、格式化输出、容差判断、存储机制