1、 USB 设备库 使用说明 前言 本篇 LAT 从控制传输的角度解析了运行在 “ USB FS IP” 这款 USB 模块上的全速 USB 设备 库的结构和用法 。 背景 : 不同的 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. 软件包 :
2、 STSW-STM32121 ( v4.0.0) USB设备库结构分析 中断处理响应所有的 USB 事件 ,如下图所示 。 通过 控制传输 处理标准枚举 +类相关枚举 控制传输由三个 stage 组成,如下图所示: 在控制传输的 第一阶段( Setup stage) 完成后 , 分析 Setup 数据包 8 字节命令, 提供用户回调函数处理和应用所使用的类相关的控制命令 在控制传输的第 二 阶段( IN 方向的 Data stage) ,处理第一阶段 准备好(确定了数据长度和数据起始地址)的待发送的数据;或者 在控制传输的最后阶段( IN 方向的 Status stage) 完成后 , 提供用
3、户接口做应用相关任务 在控制传输的第 二 阶段( OUT 方向的 Data stage) ,接收数据;或者 在控制传输的最后阶段( OUT 方向的 Status stage) 完成后 , 提供用户接口做应用相关任务 结合 真实 枚举过程 的传输来看几个实际的例子 举例 1: MSC 类的 Get_Max_Lun() 触发 CTR 中断 Setup0_Proecess MSC_Data_setup DataStageIn 即 UserToPMABufferCopy 触发 CTR 中断 In0_Process DataStageIn 数据已经发完 CS = WAIT_STATUS_OUT 触发 C
4、TR 中断 Out0_Process XXX_Status_Out,这里是空函数 举例 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_Statu
5、s_IN,即 根据数据阶段得到的帧格式来配置 USART 重要通知 - 请仔细阅读 意法半导体公司及其子公司( “ST”)保留随时对 ST 产品和 / 或本文档进行变更、更正、增强、修改和改进的权利,恕不另行通知。买方在 订货之前应获取关于 ST 产品的最新信息。 ST 产品的销售依照订单确认时的相关 ST 销售条款。 买方自行负责对 ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。 ST 不对任何知识产权进行任何明示或默示的授权或许可。 转售的 ST 产品如有不同于此处提供的信息的规定,将导致 ST 针对该产品授予的任何保证失效。 ST 和 ST 徽标是 ST 的商标。所有其他产品或服务名称均为其各自所有者的财产。 本文档中的信息取代本文档所有早期版本中提供的信息。 2015 STMicroelectronics - 保留所有权利