[STM32F7] STM32F7 USB Host 驱动 4G 模组

[复制链接]
29|0
HomeKit 发表于 2026-7-26 23:54 | 显示全部楼层 |阅读模式
将 STM32F7 通过 USB 连接 Telit LE910 模组。目前可以通过 UART 和模组通信,但我想提升传输速率。
我打算使用 STM32 USB Host CDC 驱动程序实现通信。
设备枚举流程可以正常执行,日志信息如下:

```
No shield USBH library started.
Starting MSC Demo
Starting MSC Demo
USB Device Attached
PID: 1201h VID: 1bc7h
Address #1 assigned.
Manufacturer : Android
Product : Android
Serial Number : 0123456789ABCDEF
Enumeration done.
```
该设备仅包含 1 套配置描述符,已经成功激活默认配置。
日志提示没有注册能够匹配该设备类(0xff)的驱动。

在 Linux 系统上使用这款模组时,操作方式是:把 Telit 的 VID/PID(`1bc7:1201`)添加到 `/sys/bus/usb-serial/drivers`,然后让 ppp 调用这条 USB 串口通道。

按照我的理解,这说明 Linux 能够使用标准协议与模组交互,并且可以直接发送 AT 指令。
但模组接口类别字段为`0xff`,代表厂商自定义类型Vendor Specific。Linux 只需要加载 usb-serial 驱动就能工作。

问题是我该如何将模组 VID/PID 和 CDC 驱动绑定?看起来似乎只能修改`usbh_core.c`,但我认为这应该是一个比较常见的需求。

`USBH_Process(USBH_HandleTypeDef *phost)`内部有状态分支:

```
case HOST_CHECK_CLASS:
```

模组一共 7 个接口。我需要从中筛选出正确的接口与端点。但所有接口都不是标准 CDC 类型:
接口类别 / 子类 / 协议分别是:
`0xFF:0xFF`、`0x42:0x01`、`0xFF:0xFF`、`0x00:0x00`、`0x00:0x00`、`0x00:0x00`、`0x00:0x00`。
看样子我可能还需要修改`USBH_FindInterface`。

有没有人走过相同的路线,求经验?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

210

主题

210

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0