STM32-(46):USB总线与USB设备(STM32的USB模块特性)

STM32的USB模块特性

  • 遵循USB2.0全速设备标准
  • 支持双向8个端点,即8个IN端点和8个OUT端点
  • 硬件实现CRC自动生成/校验,NRZI编码/解码和bit-stuffing
  • 支持控制传输,中断传输,大容量传输和同步传输四种传输类型,并内置专为大容量传输和同步传输所设定的双缓存区
  • 支持USB挂起/唤醒
    在这里插入图片描述
  • 串行接口引擎(SIE):该模块包括的功能有:帧头同步域的识别,位填充,CRC的产生和校验,PID的验证/产生,和握手分组处理等。它与USB收发器交互,利用分组缓冲接口提供的虚拟缓冲区存储局部数据。它也根据USB事件,和类似于传输结束或一个包正确接收等和端点相关时间生成信号,例如 帧首(Start of Frame),USB复位,数据错误等等,这些信号用来产生中断。
  • 定时器:此模块为任何要求帧首同步的其他部分产生帧锁时钟脉冲,并且在USB线上无数据传输的时间超过3ms时,就判定为一USB全局挂起事件。
  • 分组缓冲器接口:此模块管理那些勇于发送和接收的临时本地内存单元。它根据SIE的要求分配合适的缓冲区,并定位到端点寄存器所指向的存储区地址。它在每个字节传输后,自动递增地址,直到数据分组传输结束。它记录传输的字节数并防止缓冲区溢出。
  • 端点相关寄存器:每个端点都有一个与之相关的寄存器,用于描述端点类型和当前状态。对于单向和单缓冲端点,一个寄存器就可以用于实现两个不同的端点。一共8个寄存器,可以用于实现最多16个单向/单缓冲的端点或者7个双缓冲的端点或者这些端点的组合。例如,可以同时实现4个双缓冲端点和8个单缓冲/单向端点。
  • 控制寄存器:这些寄存器包含整个USB模块的状态信息,用来触发诸如恢复,低功耗等USB事件。
  • 中断寄存器:这些寄存器包含中断屏蔽信息和中断事件的记录信息。配置和访问这些寄存器可以获取中断源,中断状态等信息,并能清楚待处理中断的状态标志。

实现一个USB设备的步骤

1.根据应用选择合适的USB类实现
2.根据所选择的USB类协议,完成各个描述符(包括设备描述符、配置描述符、接口描述符、端点描述符和字符描述符)
3.根据描述符,初始化端点数目,分配各端点所需使用的Packet Buffer
4.初始化所使用的的端点,配置端点的传输类型,方向,Packet Buffer地址,和初始状态
5.在需要发送或接收数据的时候,使能端点
6.在该端点的中断回调函数中,处理数据,如果需要则使能下一次传输

STM32的USB类

  1. 音频类(Audio)
  2. 通信类-虚拟串口类(CDC)
  3. 设备固件升级类(DFU)
  4. 人机接口类(HID)
  5. 大容量存储设备类(Mass Storage)
  6. 智能卡接口设备类(CCID)
  7. 图像类(Image)
  8. IrDA桥接设备类(IrDA Bridge)
  9. 监视设备类(Monitor)
  10. 个人保健设备类(Personal Health Care)
  11. 电源设备类(Power Device)
  12. 物理接口设备类(Physical Interface)
  13. 打印设备类(Printer)
  14. 视频类(Video)
  15. 测试测量类(Test & Measurement)

USB的设备端

在这里插入图片描述
接口:接口用于描述特定的功能,每个接口都有一个端点集,用于实现 接口功能。
端点:通信频率 、带宽、端点号、错误处理、最大包长度、传输类型、方向。

在这里插入图片描述

Packet Buffer 的设置

每个端点对应于两个分组缓冲区(一般一个用于发送,另一个用于接收)。这些缓冲区可以位于整个分组存储区的任意位置,因为它们的地址和长度都定义在缓冲区描述表中,而缓冲区描述表也同样位于分组缓冲区中,其地址由寄存器确定。

在这里插入图片描述

STM32 的 USB 库函数

stm32f10x_it.c:该文件中包含USB中断服务程序,由于USB中断由很多情况,这里的中断服务程序只是调用usb_Istr.c文件中的USB_Istr函数,由USB_Istr函数再做轮询处理。
usb_istr.c:该文件中只有一个函数,即USB中断的USB_Istr函数,该函数对各类引起USB中断的事件作轮询处理。

usb_prop.c:该文件用于实现相关设备的USB协议,例如初始化、SETUP包、IN包、OUT包等等。
usb_pwr.c:该文件中包含梳理上电、调电、挂起和和恢复时间的函数。
hw_config.c:改文件中包含系统配置的函数。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

内容概要:本文档是详尽的 Android SDK 中文帮助文档,介绍了 Android SDK 的核心概念、组件、开发环境搭建、基础开发流程及常用工具使用指南。首先解释了 Android SDK 的定义及其核心价值,即提供标准化开发环境,使开发者能高效构建、测试、优化 Android 应用。接着详细列出了 SDK 的核心组件,包括 Android Studio、SDK Tools、Platform Tools、Build Tools、Android 平台版本和系统镜像。随后,文档提供了详细的环境搭建步骤,适用于 Windows、macOS 和 Linux 系统,并介绍了基础开发流程,以“Hello World”为例展示了从创建项目到运行应用的全过程。此外,还深入讲解了 ADB、AVD Manager 和 SDK Manager 等核心工具的功能和使用方法。最后,文档涵盖了调试与优化工具(如 Logcat、Profiler 和 Layout Inspector)、关键开发技巧(如多版本 SDK 兼容、Jetpack 库的使用和资源文件管理)以及常见问题的解决方案。 适合人群:具有初步编程知识,希望深入了解 Android 应用开发的开发者,尤其是新手开发者和有一定经验但需要系统化学习 Android SDK 的技术人员。 使用场景及目标:①帮助开发者快速搭建 Android 开发环境;②指导开发者完成基础应用开发,理解核心工具的使用;③提高开发效率,掌握调试与优化技巧;④解决常见开发过程中遇到的问题。 阅读建议:此文档内容全面且实用,建议读者按照章节顺序逐步学习,结合实际开发项目进行练习,尤其要注意动手实践环境搭建和基础开发流程,同时参考提供的扩展学习资源,进一步提升开发技能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值