[应用相关] USB 设备库使用说明

[复制链接]
1813|13
 楼主| LEDyyds 发表于 2021-11-12 17:00 | 显示全部楼层 |阅读模式
前言
本篇 LAT 从控制传输的角度解析了运行在“USB FS IP” 这款 USB 模块上的全速 USB 设备库的结构和用法  

 楼主| LEDyyds 发表于 2021-11-12 17:00 | 显示全部楼层
背景: 不同的 USB 模块和其对应软件包
STM32 MCU 根据系列不同, 所集成的 USB IP 有所不同。 本文是针对“USB FS IP” 这个 USB 模块在其编
号为 STSW-STM32121 的全速 USB 设备库的一个介绍。
USB FS IP
1. 集成于 STM32F1(除 F105/107) 、 STM32L1、 STM32F3
2. 只支持全速(FS) 下的 USB 设备角色
3. 软件包: STSW-STM32121 (v4.0.0)
 楼主| LEDyyds 发表于 2021-11-12 17:01 | 显示全部楼层
USB 设备库结构分析
中断处理响应所有的 USB 事件,如下图所示。
60084618e2d407bd73.png
 楼主| LEDyyds 发表于 2021-11-12 17:02 | 显示全部楼层
通过控制传输处理标准枚举+类相关枚举
控制传输由三个 stage 组成,如下图所示:
60419618e2d7ee430e.png
在控制传输的第一阶段(Setup stage) 完成后, 分析 Setup 数据包 8 字节命令, 提供用户回调函数处理和应用所使用的类相
关的控制命令
30320618e2d93d32ae.png
在控制传输的第二阶段(IN 方向的 Data stage) ,处理第一阶段准备好(确定了数据长度和数据起始地址)的待发送的数据;
或者
在控制传输的最后阶段(IN 方向的 Status stage) 完成后, 提供用户接口做应用相关任务
 楼主| LEDyyds 发表于 2021-11-12 17:03 | 显示全部楼层
10827618e2da932663.png
27747618e2db116fcb.png
在控制传输的第二阶段(OUT 方向的 Data stage) ,接收数据;或者
在控制传输的最后阶段(OUT 方向的 Status stage) 完成后, 提供用户接口做应用相关任务
18561618e2dbe58e00.png
73945618e2dca45c43.png
 楼主| LEDyyds 发表于 2021-11-12 17:05 | 显示全部楼层
结合真实枚举过程的传输来看几个实际的例子
举例 1: MSC 类的 Get_Max_Lun()
684618e2defce190.png
触发 CTR 中断
Setup0_Proecess –>MSC_Data_setup --> DataStageIn 即 UserToPMABufferCopy
52807618e2e02d2f70.png
触发 CTR 中断
In0_Process --> DataStageIn --> 数据已经发完 CS = WAIT_STATUS_OUT
88189618e2e1333a87.png
触发 CTR 中断
Out0_Process -->XXX_Status_Out,这里是空函数
 楼主| LEDyyds 发表于 2021-11-12 17:06 | 显示全部楼层
举例 2: VCP 类的 Set_LineCoding()
Setup transaction(命令)
触发 CTR 中断
Setup0_Proecess –>VCP_Data_setup --> CS = OUT_DATA
Out transaction (设置串口数据帧格式)
触发 CTR 中断
Out0_Process --> DataStageOut --> 数据全部读完 CS = WAIT_STATU_IN
In transaction (取走 0 长度数据包)
触发 CTR 中断
In0_Process –>VCP_Status_IN,即根据数据阶段得到的帧格式来配置 USART
sadicy 发表于 2021-11-13 15:28 | 显示全部楼层
学习了,~内容很丰富
wowu 发表于 2021-12-6 19:57 | 显示全部楼层
这个是一个专用模块吗
xiaoqizi 发表于 2021-12-6 20:04 | 显示全部楼层
这是什么形式的命令啊
tpgf 发表于 2021-12-6 20:07 | 显示全部楼层
这个设备库可以用来开发什么呢
木木guainv 发表于 2021-12-6 20:10 | 显示全部楼层
可以从哪里下载这个库啊
guanjiaer 发表于 2021-12-6 20:13 | 显示全部楼层
usb模块之间都有什么区别呢
heimaojingzhang 发表于 2021-12-6 20:14 | 显示全部楼层
最大的区别是什么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

867

帖子

1

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