stm32f4全速usb虚拟串口vcp程序裁剪教程.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于 STM32_USB-Host-Device_Lib_V2.1.0 或 V2.2.0 官方 DEMO 例程的 STM32F4 全速 USB 虚拟串口 VCP 程序裁剪 教程 1. 概述 本文档是基于 STM32_USB-Host-Device_Lib_V2.1.0官方库中 Device下 STM32F4 全速 VCP裁剪的,主要是利用 STM32F4已有资源,代替 UART串口,用于和上位 机进行通信,理论最大通信速率是 64*19*8b/1ms=950kbps,这里的 64是 1个包 数据量 64个字节,19是一帧最大是 19个包,8是一个字节 8位,1ms是一帧的 时间,详见 USB2.0 英文协议。如果想开发更高速模式下的通信,可以考虑使用 高速模式下的 VCP通信,本文档也可以作为参考。 以下是列举的准备工作: 1下载 STM32_USB-Host-Device_Lib_V2.1.0官方库,同时去 ST官方下载 UM1021 关于本例程的说明文档。可以在 ST官方下载,找不到的也可以去 STMCU论坛搜 索。 2本文档的图片是基于 IAR6.4开发环境进行截图。 3下载 USB2.0英文协议。需要了解 USB的枚举,以及 USB的工作机制,对每次 发起通信都是由主机轮询开始的有清晰的认识,并重点看一下批量传输。有条件 的可以借用 USB480协议分析仪。 4阅读 STM32F4数据手册中关于 USB的一些寄存器的介绍。 2. 如何区分全速设备和高速设备 USB如何区分低速、全速和高速设备:对于全速和高速设备,上拉电阻是接在 D+ 上;而低速设备则是上拉电阻接在 D-上。 3. USB枚举过程 (1)USB主机检测到 USB设备插入后,对设备复位。 (2)USB主机对设备发送获取设备描述符的标准请求。 (3)设备收到该请求后,在数据过程将设备描述符返回给主机。 (4)主机在成功获取到一个数据包的设备描述符后并且确认无错误后,返回一 个 0长度的状态数据包给设备。 (5)主机再对设备复位一下,接下来进入到设置地址阶段。 (6)USB主机发出一个设置地址的请求,地址包含在建立包中。 (7)USB设备在收到地址后,返回 0长度的状态包。 (8)主机收到 0长度的状态包之后,返回一个 ACK。 (9)设备在收到这个 ACK之后,就可以启用新的地址了。 USB 一直进中断的原因:主机每 1ms 就给设备发送一个 sof,3ms 没反应主机就 挂起。所以一直进中断属于正常现象。 4. STM32F4的 USB的中断作用 STM32 的 USB 模块可以产生三种中断:USB 唤醒中断、USB 高优先级中断和 USB 低优先级中断,在 STM32 的参考手册中没有详细说明这三种中断对应哪些事件, 现说明如下: 1)USB唤醒中断:在中断向量表中的位置是 42。这个中断在 USB设备从暂停模 式唤醒时产生,唤醒事件由 USB_ISTR寄存器的 WKUP位标识。 2)USB 高优先级中断:在中断向量表中的位置是 19。这个中断仅由 USB 同步 (Isochronous)模式传输或双缓冲块(Bulk)传输模式下的正确传输事件产生,正 确传输事件由 USB_ISTR寄存器的 CTR位标识。 3)USB低优先级中断:在中断向量表中的位置是 20。这个中断由所有其它的 USB 事件产生,例如正确传输(不包括同步模式和双缓冲块模式)、USB复位等,事件 标志位在 USB_ISTR寄存器中。 在 STM32的 USB开发包的例子中包含了上述中断的处理,例如在 USB扬声器的例 子中,CTR_HP函数处理 USB高优先级中断;在所有例子中都有 USB_Istr()函数 处理 USB低优先级中断。 5. STM32F4的 USB虚拟串口 Demo的使用 1下载 STM32的官方例程:STM32_USB-Host-Device_Lib_V2.1.0 2开发板自己准备,要求 PA11,PA12连接 D+,D-,PA9是否连接 VBUS都可以 3打开例程: STM32_USB-Host-Device_Lib_V2.1.0\Project\USB_Device_Examples\VCP\EWAR M里的工程配置 cpu为 stm32F407IG, 4C/C++预定义: USE_STDPERIPH_DRIVER,STM32F4XX,USE_STM324xG_EVAL,USE_USB_OTG_FS 5打开 USB_conf.h 文件,把 #define VBUS_SENSING_ENABLED 封掉,如果我们 不用 VBUS(PA9)。 否则不用封掉。 6编译,下载,复位板子,并安装虚拟串口驱动(ST官网上有),上面的步骤完 成后,计算机中的虚拟串口出来。如果不

文档评论(0)

137****0427 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档