本帖最后由 qinyunti 于 2023-10-29 23:09 编辑
ecb30285cff5fd1aa31e55feff5d8a85
前言
本文我们来实现USB开发环境的搭建,实现USB通讯,为后面的UVC摄像头实现做准备。
USB模块
原理图部分
USB模块详见手册章节,
41 USB on-the-go full-speed/high-speed
(OTG_FS/OTG_HS)
支持全速和高速,高速时需要使用外接PHY,全速时使用内置PHY。
USB HID设备
以官方的Demo,HID为例进行USB开发的体验。
打开工程STM32Cube_FW_F7_V1.17.0\Projects\STM32F767ZI-Nucleo\Applications\USB_Device\HID_Standalone\MDK-ARM\Project.uvprojx
编译运行
CN13 MicroUSB接电脑,可以看到枚举的设备
PID &VID 分别是 0x5710 & 0x0483,代码中使用如下宏定义
按键USER可以看到鼠标左右移动。详见视频。
使用UsbTreeView查看描述符如下
使用bushound抓包如下
相关代码介绍
Core下面是usbd的驱动
Usbd_hid部分是HID设备类相关代码
Usbd_conf.c是PCD相关代码
Usbd_desc.c是描述符相关内容
初始化过程
USBD_Init->
USBD_RegisterClass->注册设备类
USBD_Start-> usb连接,对于全速即上拉DP的1.5K电阻。
USB基本是中断驱动的,大部分是在中断回调中处理即
OTG_FS_IRQHandler->HAL_PCD_IRQHandler,在中断中处理各种事件。
BSP_PB_Init
按键进入外部中断服务函数更新HID报告数据
HAL_GPIO_EXTI_Callback->USBD_HID_SendReport
总结
注意CBN13的USB接口为Micro USB-AB,方形口,和普通Micro USB弧形的不太一样,不过线可以通用注意方向,注意接触不好可以稍微压一下。