STM32F207 USB复合设备
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复合设备相关推荐
- USB复合设备调试 STM32
空间 STM32 USB复合设备调试过程, 复合设备一般要用到IAD(接口关联描述符),但是我在网上下载的几个例程都没有用到IAD,最后发现如 果USB复合设备只用到两个接口,即复合的两个功能(MSC ...
- STM32 USB复合设备,USB键盘+自定义HID设备
上面是我的微信和QQ群,欢迎新朋友的加入. 最近研究USB复合设备 主要是把键盘和电脑音量控制两个东西给合并成一个设备 首先要知道的一点的是,不论是键盘.鼠标.或者这个标准的HID用户控制设备,本质都 ...
- STM32 USB复合设备(VCP虚拟串口+HID键盘)详解
USB复合设备 介绍 USB复合设备与组合设备区别 USB描述符修改 修改CustomHID_Reset 修改CustomHID_Data_Setup 介绍 本次使用的是Keil 5+STM32F10 ...
- linux usb组合设备,USB复合设备的实现
USB复合设备一般用Interface Association Descriptor(IAD)实现,就是在要合并的接口前加上IAD描述符. IAD描述符: typedef struct _USBInt ...
- [STM32F1]基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备
序: 其实这样一个设备我们在ch32v103上实现过,但移植到STM32 HAL库上面,还是发现很多问题的,现在就移植过程给大家分享一下在基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备的实现 ...
- USB Compound Device,USB复合设备 ; USB Composite Device,USB组合设备【转】
本文转载自:https://blog.csdn.net/autumn20080101/article/details/52776863 科普下USB复合设备和USB组合设备的区别. 关键字 Commu ...
- usb键码转linux键值,CH554串口接收数据转USB键值程序 CH559模拟USB复合设备,键鼠,支持类命令...
/********************************** (C) COPYRIGHT ******************************* * File Name ...
- USB复合设备(键盘鼠标U盘三合一)基于标准库
键盘鼠标属于HID,U盘功能属于MSC.至于这些定义,这里不再过多介绍. 网上有很多的例程,但是大多是基于HAL库的,标准库的我也找了不少例子看,但是没有HID+MSC的例程.最后还是看了个官方的复合 ...
- usb复合设备 linux,使用STM32CubeMX编写USB复合设备
其实很简单搞了好久,怪ST呗,既没做到可读性增强,又搞到复杂了.目的先做一个CDC+MSC复合,就像STLink V2-1一样. 首先生成一个CDC工程并测试. 再用同样方法生成MSC,但是不要覆盖当 ...
最新文章
- 树型权限管理插件:jQuery Tree Multiselect详细使用指南
- Ubuntu16.04下使用ufw保护docker容器
- 关于php 高并发解决的一点思路
- springboot集成Apollo分布式配置
- json 潜逃 结构体_JSON还原为结构体
- Crystal Reports Maximum Report Processing Jobs Limit
- ONNX系列二 --- 使用ONNX使Keras模型可移植
- Unity sendmessage发送多个参数
- kubernetes视频教程笔记 (33)-什么是 Helm
- c语言上机题库及答案,全国计算机二级C语言上机题库及答案
- 计算机考研复试——计算机前沿知识篇
- cdr多页面排版_cdr排版实例图文教程,教你CorelDRAW杂志内页排版方法
- 如何在ps添加箭头_照片一键自动添加烟雾特效!赠送PS动作插件 50张高清烟雾素材...
- 全息投影手机Alo将引领未来趋势!全息3d 网
- 贴图平移凹凸贴图偏移
- CVPR 2021 华南理工和微信的Transformer:UP-DETR无监督预训练检测器
- 半导体——本征半导体、杂质半导体、PN结
- 局域网arp攻击_MAC与IP不得不说的故事--深入ARP工作原理
- 《Asp.Net MVC 》复习题目
- 将网站上的信托计划净值数据写入excel,涉及dataframe排序,转换数据类型,列表填入dataframe,取小数点后四位的正则,dataframe生成excel
热门文章
- 2000年1月1日,到2020-07-18日,一共多少天?
- 分享166个ASP源码,总有一款适合您
- 【Vue实用功能】vue滑块组件验证
- 2018年人工智能发展回忆录:芯片热、价格战、争落地
- gx3脉冲设置_皇家墨尔本理工大学-MicroStrain 3DM-GX3-35用于无人机 - 激光雷达系统的研制及其在森林资源清查...
- OpenCV3.X 编译 ——libpng库问题相关解决方法
- 区间之和 (sdut oj)
- 小程序源码:百变头像框制作-多玩法安装简单
- Vue2-Vue开发环境搭建
- configure: error: Requested 'libcrypto = 1.1.0' but version of OpenSSL-libcrypto is 1.0.2g