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:改文件中包含系统配置的函数。

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

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F4是一款由意法半导体(STMicroelectronics)推出的32位微控制器系列,它具有高性能、低功耗以及多种外设的特点。USB(Universal Serial Bus)是一种用于连接计算机与外部设备的通用串行总线,并且具有插拔方便、高速传输、支持热插拔等优点。4G模块是一种用于无线通信的模块,可以实现高速数据传输和互联网接入。 将STM32F4和USB 4G模块结合使用,可以实现在STM32F4微控制器上通过USB接口与4G网络进行通信。这种实现方式可以为STM32F4提供互联网接入功能和高速数据传输功能,使其更加智能化和便捷。通过与4G模块的组合,STM32F4可以实现远程监视、数据采集、远程控制等功能,并且可以适用于物联网、智能家居、工业自动化等领域。 在实际应用中,需要将USB 4G模块STM32F4进行硬件和软件的连接和配置。首先,需要通过相应的硬件接口将USB 4G模块STM32F4进行连接。其次,在STM32F4的软件开发中,需要使用相关的USB和4G通信协议,使STM32F4能够与USB 4G模块进行数据交换和通信。最后,根据具体的应用需求,可以通过编程实现相应的功能,如数据传输、连接管理、状态监测等。 总之,STM32F4和USB 4G模块的结合可以为STM32F4提供互联网接入和高速数据传输的能力,为各种应用场景提供更多的可能性。同时,开发者需要充分了解STM32F4和USB 4G模块的原理和使用方法,以便更好地进行相应的开发和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值