STM32 USB协议栈源码分析

STM32 USB协议栈源码分析

作者将狼才鲸
日期2025-12-10
  • CSDN阅读地址:STM32 USB协议栈源码分析

  • STM32 库下载网址:
    https://www.st.com.cn/zh/microcontrollers-microprocessors/stm32f7x0-value-line.html#tools-software
    https://www.st.com.cn/zh/embedded-software/stm32cubef7.html


USB硬件寄存器读写,并提供供USB协议栈操作的API接口:
	STM32 USB硬件模块,STM32Cube_FW_F7_V1.17.0_01\Drivers\STM32F7xx_HAL_Driver\Src\stm32f7xx_ll_usb.c
			core复位、高速PHY初始化、core初始化、设置设备速度、激活端点、端点开始传输、读写包、挂起、
			停止设备、设备连接、断开连接、读中断、清中断、激活令牌、复位端口、获取速度、获取当前帧、
			数据块切换、停止host、激活远端唤醒等;
	ue11 USB硬件模块:嵌入式:[mirrors_ultraembedded/cores](https://gitee.com/mirrors_ultraembedded/cores)
			初始化、复位、hub复位、hub设备检测、hub全速设备、hub使能、传输OUT包、传输IN包、定时器延时、当前时间、时间差;
			控制器初始化、复位设备、配置设备、枚举、找端点、清除挂起状态、发送读控制、发送写控制、批量传输写、
			批量传输读、等时传输;
	ue11 USB硬件模块:Linux:[mirrors_ultraembedded/cores](https://gitee.com/mirrors_ultraembedded/cores)
			开始、停止、CTRL(清除hub特性、设置hub特性、清除端点特性(端口使能、端口挂起、端口上电、端口复位)、hub描述符、
			hub状态、端口状态、端口特性(挂起、上电、复位))、设备检测定时器回调、hub描述符、hub状态、获取帧、
			失能端点、urb_dequeue、urb_enqueue、balance、中断处理、发送处理结果、完成请求、开始传输、开启中断、关闭中断、
			OUT包、IN包、状态包、令牌包、端口电源、hub使能、hub复位
STM32 USB协议栈:
	分为硬件HAL库、USB设备库、USB主机库、文件系统库;
	STM32Cube_FW_F7_V1.17.0\Middlewares\ST\STM32_USB_Host_Library\Core\Inc/Src  主机端USB协议栈核心代码
		usbh_conf_template.h  公用接口:打印输出级别控制、内存操作、默认配置(缓存大小、端点数等)。
			只是一个示例模板,最终以Projects\STM32756G_EVAL\Applications\FatFs\FatFs_USBDisk Keil工程里的usbh_conf.c为准!
		usbh_core.h  包含core文件夹里其它文件;应用层协议,协议栈主API:初始化、销毁、注册类、选择接口、
			寻找接口、获取激活的类、找到接口索引、判断端口使能、开始、停止、轮询、重新枚举;
			硬件寄存器相关API:初始化、销毁、开始、停止、连接、断开、获取速度类型、复位端口、获取下一个传输尺寸、
			驱动VBUS、打开管道、关闭管道、提交URB USB请求块、获取USB请求块状态、通知USB请求块改变、设置数据切换、
			获取数据切换、端口失能、端口使能、设置定时器、增加定时器、延时
		usbh_ctlreq.h  控制传输中的枚举、配置与控制:设备识别、配置、HID设备的报告请求、通用命令;
			控制请求,获取描述符,获取设备描述,获取字符串描述,设置配置,获取配置描述符,设置地址,
			设置接口,激活设备特定功能,控制设备特定功能,获取下个描述符
		usbh_def.h  基础宏操作:真假最大最小等;USB协议栈结构体与命令值;
		usbh_ioreq.h  功能:控制传输(发送令牌包,收发包)、批量传输(收发包)、中断传输(收发包)、等时传输(收发包)
		usbh_pipes.h  打开关闭申请释放管道;管道是USB主机与设备端点之间进行数据传输的逻辑通道模型。‌
	STM32Cube_FW_F7_V1.17.0_01\Middlewares\ST\STM32_USB_Host_Library\Class\MSC\Inc/Src
		usbh_msc.h  如果是接入U盘设备,则使用此文件夹内文件;USB大容量存储设备准备好、获取逻辑盘数量、单元准备好、
			获取逻辑盘信息、读、写,命令值,协议结构体;
	STM32Cube_FW_F7_V1.17.0_01\Middlewares\Third_Party\FatFs\src\drivers
		usbh_diskio_template.h、usbh_diskio_dma_template.h  只是一个模板,会用到usbh_core.h、usbh_msc.h
			具体实现在STM32Cube_FW_F7_V1.17.0_01\Projects\STM32756G_EVAL\Applications\FatFs\FatFs_USBDisk的Keil工程里面
	STM32Cube_FW_F7_V1.17.0\Projects\STM32756G_EVAL\Applications\FatFs\FatFs_USBDisk\Inc/Src  主机端USB协议栈USB模块硬件寄存器相关代码
		usbh_conf.h  公用接口:打印输出级别控制、内存操作、默认配置(缓存大小、端点数等);会被USB协议栈core里面调用
		usbh_diskio.h  让文件系统包含USB协议栈的头文件,注册文件系统中初始化、获取状态、读、写、ioctl的操作
		main.c  通过USB协议栈USBH_MSC_xx接口实现供文件系统使用的读写控制等接口,并注册进文件系统,
			调用USB协议栈接口初始化USB硬件,注册设备插拔时的回调函数,注册设备类型,开始运行,等待设备连接,
			连接成功后主动进行U盘读写操作;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值