stm32 usb通信_「正点原子STM32Mini板资料连载」第三十八章 USB 虚拟串口实验

本文介绍如何在正点原子STM32Mini开发板上利用STM32的USB功能实现虚拟串口通信。内容包括USB简介、硬件设计、软件设计及下载验证过程,涉及STM32F103的USB从控制器、USB驱动库和虚拟串口的建立与测试。
摘要由CSDN通过智能技术生成

1)实验平台:正点原子STM32mini开发板
2)摘自《正点原子STM32 不完全手册(HAL 库版)关注官方微信号公众号,获取更多资料:正点原子

7850cb61946117667f7106e0dd69af44.png

第三十八章 USB 虚拟串口实验

STM32F103 系列芯片都自带了 USB,不过 STM32F103 的 USB 都只能用来做设备,而

不能用作主机。既便如此,对于一般应用来说已经足够了。本章,我们将向大家介绍如何在

ALIENTEK MiniSTM32 开发板上利用 STM32 自生的 USB 功能实现一个虚拟串口。本章分

为如下几个部分:

38.1 USB 简介

38.2 硬件设计

38.3 软件设计

38.4 下载验证

38.1 USB 简介

USB ,是英文 Universal Serial BUS(通用串行总线)的缩写,而其中文简称为“通串线,是

一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。

USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、

Microsoft 等多家公司联合提出的。

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 事件触发(正确传输,U

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值