找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3146|回复: 0
打印 上一主题 下一主题
收起左侧

STM32 USB 设备库使用说明

[复制链接]
跳转到指定楼层
楼主
ID:98618 发表于 2015-12-8 03:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本篇 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. 软件包:STSW-STM32121 (v4.0.0)

USB 设备库结构分析

中断处理响应所有的 USB 事件,如下图所示。



通过控制传输处理标准枚举+类相关枚举

控制传输由三个 stage 组成,如下图所示:


在控制传输的第一阶段(Setup stage)完成后,分析 Setup 数据包 8 字节命令,提供用户回调函数处理和应用所使用的类相关的控制命令


在控制传输的第二阶段(IN 方向的 Data stage),处理第一阶段准备好(确定了数据长度和数据起始地址)的待发送的数据;

或者在控制传输的最后阶段(IN 方向的 Status stage)完成后,提供用户接口做应用相关任务



在控制传输的第二阶段(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

触发 CTR 中断

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_Status_IN,即根据数据阶段得到的帧格式来配置 USART

【本文摘于ST MCU官网。供分享交流】

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表