**USB 发展到现在已经有 USB1.0/1.1/2.0/3.0 等多个版本。目前用的最多的就是 USB1.1 和
USB2.0,USB3.0 目前已经开始普及。STM32F103 自带的 USB 符合 USB2.0 规范。
标准 USB 共四根线组成,除 VCC/GND 外,另外为 D+,D-; 这两根数据线采用的是差分电压
的方式进行数据传输的。在 USB 主机上,D-和 D+都是接了 15K 的电阻到低的,所以在没有设
备接入的时候,D+、D-均是低电平。而在 USB 设备中,如果是高速设备,则会在 D+上接一个
1.5K 的电阻到 VCC,而如果是低速设备,则会在 D-上接一个 1.5K 的电阻到 VCC。这样当设
备接入主机的时候,
主机就可以判断是否有设备接入,
并能判断设备是高速设备还是低速设备。
接下来,我们简单介绍一下 STM32 的 USB 控制器。
STM32F103 的 MCU 自带 USB 从控制器,符合 USB 规范的通信连接; PC 主机和微控制器
之间的数据传输是通过共享一专用的数据缓冲区来完成的,该数据缓冲区能被 USB 外设直接访
问。这块专用数据缓冲区的大小由所使用的端点数目和每个端点最大的数据分组大小所决定,
每个端点最大可使用 512 字节缓冲区(专用的 512 字节,和 CAN 共用)
,最多可用于 16 个单
向或 8 个双向端点。USB 模块同 PC 主机通信,根据 USB 规范实现令牌分组的检测,数据发送
/接收的处理,和握手分组的处理。整个传输的格式由硬件完成,其中包括 CRC 的生成和校验。
每个端点都有一个缓冲区描述块,描述该端点使用的缓冲区地址、大小和需要传输的字节
数。当 USB 模块识别出一个有效的功能/端点的令牌分组时,(如果需要传输数据并且端点已配
置)随之发生相关的数据传输。USB 模块通过一个内部的 16 位寄存器实现端口与专用缓冲区的
数据交换。在所有的数据传输完成后,如果需要,则根据传输的方向,发送或接收适当的握手
分组。在数据传输结束时,USB 模块将触发与端点相关的中断,通过读状态寄存器和/或者利用
不同的中断来处理。
USB 的中断映射单元:将可能产生中断的 USB 事件映射到三个不同的 NVIC 请求线上:
1、USB 低优先级中断(通道 20):可由所有 USB 事件触发(正确传输,USB 复位等)。固件
在处理中断前应当首先确定中断源。
2、USB 高优先级中断(通道 19):仅能由同步和双缓冲批量传输的正确传输事件触发,目
的是保证最大的传输速率。
3、USB 唤醒中断(通道 42):由 USB 挂起模式的唤醒事件触发。**
USB
STM32 USB控制器解析
最新推荐文章于 2023-11-21 11:36:39 发布
本文介绍了USB的发展历程和技术规格,重点讲解了STM32F103微控制器中的USB从控制器特性及其工作原理。包括USB接口的电气特性、STM32 USB控制器的工作方式、数据缓冲区管理以及中断处理机制。
3597

被折叠的 条评论
为什么被折叠?



