STM32F407 作為 USB OTG Host,掛載 USB WiFi 模組 (如 RTL8188EU、MT7601U),需枚舉裝置、讀取 VID/PID、加載對應驅動並進行數據傳輸。
STM32F407
├── USB OTG FS/HS Controller (硬體)
├── USB Host Stack (Middleware)
│ ├── HCD (Host Controller Driver) - 硬體抽象
│ ├── Core Layer - 管道管理、事務排程
│ ├── Class Drivers
│ │ ├── MSC (大容量儲存)
│ │ ├── HID (鍵鼠)
│ │ ├── CDC (虛擬串口)
│ │ └── Vendor Specific (WiFi 模組通常無標準類別,需廠商驅動)
│ └── Application Layer - 枚舉回調、VID/PID 篩選、啟動驅動
└── RTOS (FreeRTOS/ThreadX) - 任務調度
USB_OTG_FS (或 HS) → Mode: Host_Only → 啟用 VBUS Sensing、SOF → 配置中斷優先級 → 生成代碼。
USBH_StatusTypeDef USBH_UserProcess(USBH_HandleTypeDef *phost, uint8_t id) {
switch (id) {
case HOST_USER_DEVICE_CONNECTED:
break;
case HOST_USER_CLASS_SELECTED: {
// 取得 VID/PID
uint16_t vid = phost->device.DevDesc.idVendor;
uint16_t pid = phost->device.DevDesc.idProduct;
if (vid == 0x0BDA && (pid == 0x8179 || pid == 0x8176)) { // RTL8188EU 例
// 登記為 WiFi 模組,啟動專用任務
xTaskCreate(wifi_task, "WiFi", 512, phost, 2, NULL);
}
break;
}
// ...
}
return USBH_OK;
}
STM32_USB_Host_Library 範例 (含 MSC、HID、CDC)。