STM32F207 USB复合设备

最近一个项目需要用F207的USB做一个复合设备,目标是将MSC和VCP设备复合,MSC设备使用的是spiflash。

由于以前对usb的开发仅限于单一设备,所以这次先百度和google一下,但是找到的基本上都是F103的usb复合设备的开发经验(虽然库不一样,但还是有参考价值)。st的论坛里也有关于F207上的usb复合设备的讨论,但只有人说用其他usb库做成功了。看来只能自己先试试看了,这里使用的是“stm32_f105-07_f2_f4_usb-host-device_lib”里面提供的代码。

根据其他人的经验,做usb复合设备的过程,大致上就是将两个设备的描述符和代码融合在一起。不过做起来可是没有这么简单,我刚开始把两部分代码一下子融合在一起,各种问题和错误,什么描述符问题,usb响应问题,端点传输出错,调到最后结果不是认不到串口就是认不到U盘。想放弃的时候,就尝试了合并HID和MSC设备,没想到很容易就成功了,但最终需求还是要符合MSC和VCP,那就重新再来一次吧。一步一步来,修改一个地方就调试一下,这样很容易找到出错的地方。

第一步先从描述符开始。由于VCP用了两个interface,MSC用一个interface,在开发中尝试了三种描述符的写法,分别是:

1.不使用IAD描述符。

2.使用IAD描述符。

3.将VCP的interface改为一个再合并MSC的描述符。

最终还是采用了第三种描述符成功了。

第二步开始合并VCP和MSC的代码,主要的修改集中在usbd_msc_core.c文件(我是拿MSC的例程做的修改)。修改的函数包括:

USBD_MSC_Init():将usbd_cdc_Init ()的代码添加进来,注意去掉pbuf的相关内容。

USBD_MSC_DeInit():添加usbd_cdc_DeInit()的代码。

USBD_MSC_Setup():添加usbd_cdc_Setup()的代码,注意根据wIndex区分不同的class响应。

USBD_MSC_DataIn():添加usbd_cdc_DataIn ()的代码,注意根据epnum区分不同设备的数据。

USBD_MSC_DataOut():添加usbd_cdc_DataOut ()的代码,注意根据epnum区分不同设备的数据。

将VCP特有的函数添加进来。包括usbd_cdc_EP0_RxReady, usbd_cdc_SOF。

最后,其他文件的修改包括,usbd_conf.h中添加VCP设备的宏定义,usb_conf.h中修改每个FIFO SIZE(ST关于FIFO SIZE的注释还是不太明白)。

VCP的驱动用inf文件安装。

最后,看下效果。

如图, 左上是认出来的16MB的U盘。右上是VCP串口,自发自收模拟的GGA数据。下方式Bus Hound抓的device信息,注意看红框处。

STM32F207 USB复合设备相关推荐

  1. USB复合设备调试 STM32

    空间 STM32 USB复合设备调试过程, 复合设备一般要用到IAD(接口关联描述符),但是我在网上下载的几个例程都没有用到IAD,最后发现如 果USB复合设备只用到两个接口,即复合的两个功能(MSC ...

  2. STM32 USB复合设备,USB键盘+自定义HID设备

    上面是我的微信和QQ群,欢迎新朋友的加入. 最近研究USB复合设备 主要是把键盘和电脑音量控制两个东西给合并成一个设备 首先要知道的一点的是,不论是键盘.鼠标.或者这个标准的HID用户控制设备,本质都 ...

  3. STM32 USB复合设备(VCP虚拟串口+HID键盘)详解

    USB复合设备 介绍 USB复合设备与组合设备区别 USB描述符修改 修改CustomHID_Reset 修改CustomHID_Data_Setup 介绍 本次使用的是Keil 5+STM32F10 ...

  4. linux usb组合设备,USB复合设备的实现

    USB复合设备一般用Interface Association Descriptor(IAD)实现,就是在要合并的接口前加上IAD描述符. IAD描述符: typedef struct _USBInt ...

  5. [STM32F1]基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备

    序: 其实这样一个设备我们在ch32v103上实现过,但移植到STM32 HAL库上面,还是发现很多问题的,现在就移植过程给大家分享一下在基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备的实现 ...

  6. USB Compound Device,USB复合设备 ; USB Composite Device,USB组合设备【转】

    本文转载自:https://blog.csdn.net/autumn20080101/article/details/52776863 科普下USB复合设备和USB组合设备的区别. 关键字 Commu ...

  7. usb键码转linux键值,CH554串口接收数据转USB键值程序 CH559模拟USB复合设备,键鼠,支持类命令...

    /********************************** (C) COPYRIGHT ******************************* * File Name        ...

  8. USB复合设备(键盘鼠标U盘三合一)基于标准库

    键盘鼠标属于HID,U盘功能属于MSC.至于这些定义,这里不再过多介绍. 网上有很多的例程,但是大多是基于HAL库的,标准库的我也找了不少例子看,但是没有HID+MSC的例程.最后还是看了个官方的复合 ...

  9. usb复合设备 linux,使用STM32CubeMX编写USB复合设备

    其实很简单搞了好久,怪ST呗,既没做到可读性增强,又搞到复杂了.目的先做一个CDC+MSC复合,就像STLink V2-1一样. 首先生成一个CDC工程并测试. 再用同样方法生成MSC,但是不要覆盖当 ...

最新文章

  1. 树型权限管理插件:jQuery Tree Multiselect详细使用指南
  2. Ubuntu16.04下使用ufw保护docker容器
  3. 关于php 高并发解决的一点思路
  4. springboot集成Apollo分布式配置
  5. json 潜逃 结构体_JSON还原为结构体
  6. Crystal Reports Maximum Report Processing Jobs Limit
  7. ONNX系列二 --- 使用ONNX使Keras模型可移植
  8. Unity sendmessage发送多个参数
  9. kubernetes视频教程笔记 (33)-什么是 Helm
  10. c语言上机题库及答案,全国计算机二级C语言上机题库及答案
  11. 计算机考研复试——计算机前沿知识篇
  12. cdr多页面排版_cdr排版实例图文教程,教你CorelDRAW杂志内页排版方法
  13. 如何在ps添加箭头_照片一键自动添加烟雾特效!赠送PS动作插件 50张高清烟雾素材...
  14. 全息投影手机Alo将引领未来趋势!全息3d 网
  15. 贴图平移凹凸贴图偏移
  16. CVPR 2021 华南理工和微信的Transformer:UP-DETR无监督预训练检测器
  17. 半导体——本征半导体、杂质半导体、PN结
  18. 局域网arp攻击_MAC与IP不得不说的故事--深入ARP工作原理
  19. 《Asp.Net MVC 》复习题目
  20. 将网站上的信托计划净值数据写入excel,涉及dataframe排序,转换数据类型,列表填入dataframe,取小数点后四位的正则,dataframe生成excel

热门文章

  1. 2000年1月1日,到2020-07-18日,一共多少天?
  2. 分享166个ASP源码,总有一款适合您
  3. 【Vue实用功能】vue滑块组件验证
  4. 2018年人工智能发展回忆录:芯片热、价格战、争落地
  5. gx3脉冲设置_皇家墨尔本理工大学-MicroStrain 3DM-GX3-35用于无人机 - 激光雷达系统的研制及其在森林资源清查...
  6. OpenCV3.X 编译 ——libpng库问题相关解决方法
  7. 区间之和 (sdut oj)
  8. 小程序源码:百变头像框制作-多玩法安装简单
  9. Vue2-Vue开发环境搭建
  10. configure: error: Requested 'libcrypto = 1.1.0' but version of OpenSSL-libcrypto is 1.0.2g