![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
USB
文章平均质量分 73
embedded_w
这个作者很懒,什么都没留下…
展开
-
14、USBH HOST对接RTT系统(CDC+MSC)
文章目录USBH HOST对接RTT1.1 CDC设备实现1.1.1 CDC类实现思路1.1.2 CDC类驱动文件修改1.1.3 CDC类设备文件实现2.1 MSC类设备驱动实现2.1.1 MSC类设备实现思路2.1.2 MSC类设备实现USBH HOST对接RTT将USBH host注册到RTT中需要进行以下几步.实现设备驱动设备注册.1.1 CDC设备实现1.1.1 CDC类实现思路官方驱动修改思路.将CDC类中的状态机一直置为接收状态.接收完成后,通过USBH_CDC_Rece原创 2022-01-05 00:09:08 · 1438 阅读 · 7 评论 -
13、USBH composite类支持(CDC+MSC)
文章目录USBH composite类编写1.准备工作2.修改2.1.接口修改2.2. 类API修改2.2.1 cdc类修改2.2.2 msc类修改2.3 copmosite类源文件添加2.3 修改应用接口、备注USBH composite类编写ST的USBH库支持复合设备,但是需要用户针对复合设备编写自定义符合类处理函数.1.准备工作明确复合设备是哪几个类构成,以CDC+MSC为例.使用CUBEMX生成USBH支持ALL CLASS的工程.2.修改2.1.接口修改打开usbh_conf,h原创 2022-01-05 00:08:10 · 1193 阅读 · 0 评论 -
12、HOST 数据结构
HOST 数据结构HOST库里面有很多数据类型,其中最重要的如下所示.类型名功能USBH_HandleTypeDef管理主机库HCD_HandleTypeDef管理硬件属性USBH_ClassTypeDef管理类处理方法12.1、USBH_HandleTypeDef管理主机库各种状态的结构体.成员变量及描述在官方文档中都有,如下所示.一般情况下,针对MCU的HOST开发都是一个主机对应一个设备居多,我也是这种情况,所以重点关注device、gstate即原创 2021-08-12 23:43:53 · 501 阅读 · 0 评论 -
11、ST USB HOST概述
ST USB HOST最近搞开发,有个需求是需要模块支持USB复合设备(MSC+CDC),于是在RTT和ST的USB HOST库里选择了ST的,原因很简单,RTT目前的HOST库版本过于混乱,且不支持CDC类.因为以前看过ST DEVICE的源码和主要逻辑,所以这次上手很快.这几篇笔记记录下前段时间开发过程中对ST HOST库的理解.11.1、HOST库参考资料UM1720用户手册(HOST)USB CDC类手册(官方文档)USB MSC类手册(官方文档)11.2、HOST库简介环境:原创 2021-08-12 22:59:09 · 817 阅读 · 6 评论 -
10、STM32HAL_USB_DEVICE库软件流程
USB_DEVICE库里面关于USB所有的处理流程都在中断里面.包括类接口,用户接口全部都是在中断函数里面进行的.在上节中也有提到过,ISTR寄存器,这个寄存器包含了USB所有的中断标志位,一共有8个,USBD库里的中断函数也有对应的8个处理.如图所示,...原创 2020-09-02 15:45:44 · 1673 阅读 · 0 评论 -
9、STM32HAL_USB_DEVICE库硬件相关
本节内容和用户层代码没有关系,涉及到的编码工作都由ST官方库做完了.1、STM32_USB硬件模块简介在STM32F10X参考手册里面有如下两段话.除了对USB硬件模块有了一个最基本的说明外,其实就是说,USB的ACK包的发送和ACK包的处理,令牌包分组的检测,数据的发送和接收,包括USB里面的CRC校验,全部都由硬件自动做完了.软件层面可以不用关心了.而且针对个别传输量大且需要速度块的应用提供了双缓冲区进行提速.USB模块的寄存器主要分为三大类,在手册里面也说了.2..原创 2020-09-01 19:11:22 · 1235 阅读 · 3 评论 -
8、STM32HAL_USB_DEVICE库数据结构
目录1、重要的状态类型1.1、USBD_StatusTypeDef2.1、 EP0 Statue2、设备内核结构体3、USB驱动结构体4、类方法结构体USBD_ClassTypeDef5、类特有的数据结构6、类的用户方法结构体以CDC类举例,首先看一张图.1、重要的状态类型1.1、USBD_StatusTypeDef几乎所有库函数都会返回类型为 USBD_StatusTypeDef 的状态,应用应该始终检查返回的状态。定义如下.typedef enu原创 2020-08-30 19:51:34 · 1760 阅读 · 1 评论 -
7、STM32HAL_USB_DEVICE库概述
1、USB库简介环境:CUBEMX 5.6.1STM32Cube MCU Package for STM32F1 Series 1.8.0STM32F1xx HAL Driver version number V1.1.4STM32官方提供了两套USB的库,一套用于HOST,一套用于DEVICE,且提供了一些参考资料,如下.UM1720用户手册(HOST) UM1734用户手册(DEVICE)在这里,我只使用了DEVICE,所以笔记也只有DEVICE库的一些个人理解.2、原创 2020-08-30 00:22:20 · 3154 阅读 · 2 评论 -
6、USB枚举
7.1 USB枚举USB的概念实在是太多了,只挑了一些重要的作为笔记还有这么多概念,实在是心态爆炸.USB枚举,每个USB设备上电都会经历的一段过程,其实就是USB的初始化,只有初始化完成了,其他USB主机才能知道你到底是做啥的,至于怎么去做,做的好不好那就是枚举成功之后的事情了.7.1.1 枚举流程枚举流程在USB2.0协议规范里面的9.1.2小节有提到过,如下所示。When a USB device is attached to or removed from the USB, the ho原创 2020-08-29 01:01:11 · 570 阅读 · 0 评论 -
5、标准的USB请求
4、USB Device Requests所有的USB设备都会响应来自于主机默认控制管道的请求的,这些请求是使用控制传输发送的,请求和请求的参数在Setup packet包含,每个Setup packet都有8个字节.着重说一下wIndex和wLength,前面两个根据上表可以很容易理解.wIndex当bmRequestType的Recipient字段为接口或端点时,wIndex域用来表明是哪一个接口或端结。图9-2显示了用于指定端点时的wIndex格式。Direction位(bit7原创 2020-08-28 17:22:40 · 530 阅读 · 0 评论 -
4、USB的几种状态
4、USB状态4.1 USB可见状态连接USB设备可以与USB连接或分离。当USB设备与USB分离时,它的状态不是由本规范定义的。此规范仅在设备被附加后处理所需的操作和属性上电USB设备上电后处于这个状态,分为两种情况,如果来自于外部电源,协议里叫做self-powered,如果来自于HUB,叫做bus-powered.默认状态在设备通电后,它必须不响应任何总线事务,直到它从总线收到重置。在接受复位后,设备然后是可寻址的默认地址。地址所有的USB设备在加电复位原创 2020-08-28 16:26:43 · 3480 阅读 · 0 评论 -
3、描述符
3.1、USB描述符USB设备描述自身属性的参数叫做描述符.在枚举阶段会使用到,主机根据描述符做出对应的操作.USB2.0共有如下类型的描述符原创 2020-08-28 15:28:43 · 318 阅读 · 0 评论 -
2、USB传输类型
2、USB传输类型上次说了USB有四种传输类型,这次对具体的传输做一个分析。2.1、USB控制传输这个是所有的USB设备都会用到的传输了,在枚举过程中使用的就是控制传输。控制传输分为三个过程。其中,每一个过程都是Transaction.用一次枚举过程中的数据来举例.2.1.1、建立过程首先上面说过,每个Transaction都由2-3个包组成.分别是令牌包,数据包,应答包.在建立过程中,令牌包使用的是SETUP包.且数据包在该过程中只能使用DATA0包,设备只能使用ACK应答(出错不应答).如原创 2020-08-24 17:55:08 · 294 阅读 · 0 评论 -
1、USB传输、传输事务、包
USB传输分类控制传输是每个USB设备都会用到的一种传输,在枚举过程中主机和端点0交互所使用的传输方式。大容量数据传输常见的例子便是U盘(CDC其中的两个端点也使用了bulk传输)同步传输,常用于音视频灯USB应用中断传输,常用于键鼠在ST的官方培训手册里对这个描述已经很清楚了。USB分包机制主要是看这个分包机制,这里面的大体的路数是一样的,但是具体到每个都会有些细微的不同。协议...原创 2020-08-24 16:08:07 · 1256 阅读 · 0 评论