完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
关于驱动
STM32 MCU有两种带USB功能的IP 驱动结构 目前,独立版USB驱动并不是支持所有的STM3的芯片,且ST已经不再维护独立版的USB库(被Cube系列取代),具体见驱动源码即可。驱动源码的结构还是比较简单的,主要包含驱动库源码、使用示例、其他实用程序、发行说明文档四大部分。 重点在Libraries目录中。其中的USB OTG是USB Device和USB Host 的基础。在实际使用,USB OTG是USB Device和USB Host 的底层驱动。(在一开始学习时,还以为每部分都可以独立使用!!)。 此外,从上图可看到这个USB库里还带了标准外设库源码。主要是因为之前还没有HAL库。而且ST在Cube系列中,重新实现了所有源码(包括USB驱动)即:HAL库。但是需要说明的是,以上USB库不仅仅可以和标准外设库连用,还可以和HAL库连用。 本文主要说明USB驱动,同目录下的标准库驱动(其他博文中有详细说明)不再多说。其他部分在实际移植过程中可作为参考,例如各种示例程序等,也不详细介绍。USB驱动的整个驱动库的架构如下图: USB OTG core USB OTG core,即:STM32芯片内嵌的USB OTG 控制器。 STM32F105/07xx器件内嵌了一个USB OTG FS内核,而STM32F2xx和STM32F4xx器件内嵌了一个USB OTG FS内核和一个HS内核。 见下图: 比较如下: USB芯片也分为Controller部分和PHY部分。Controller部分主要实现USB的协议和控制。内部逻辑主要有MAC层、CSR层和FIFO控制层,还有其他低功耗管理之类层次。MAC实现按USB协议进行数据包打包和解包,并把数据按照UTMI总线格式发送给PHY(USB3.0为PIPE)。CSR层进行寄存器控制,软件对USB芯片的控制就是通过CSR寄存器,这部分和CPU进行交互访问,主要作为Slave通过AXI或者AHB进行交互。FIFO控制层主要是和DDR进行数据交互,控制USB从DDR搬运数据的通道,主要作为Master通过AXI/AHB进行交互。PHY部分功能主要实现并转串的功能,把UTMI或者PIPE口的并行数据转换成串行数据,再通过差分数据线输出到芯片外部。 一般来说,如果u*** phy封装在芯片内,基本采用UTMI+的接口。不封装到芯片内的一般采用ULPI接口,这样可以降低pin的数量。 关于STM32芯片内嵌的OTG FS控制器、OTG HS控制器、OTG FS PHY具体见芯片手册。 USB OTG full speed core OTG_FS 是一款双角色设备(DRD) 控制器,同时支持从机功能和主机功能,完全符合USB 2.0 规范的On-The-Go 补充标准。此外,该控制器也可配置为“仅主机”模式或“仅从机”模式,完全符合USB 2.0 规范。在主机模式下,OTG_FS 支持全速(FS,12 Mb/s)和低速(LS,1.5 Mb/s)收发器,而从机模式下则仅支持全速(FS,12 Mb/s)收发器。OTG_FS 同时支持HNP 和SRP。主机模式下需要的唯一外部设备是提供VBUS的电荷泵。其硬件框图如下 OTG_FS支持HNP(主机协商协议)和SRP(会话请求协议)。 唯一需要的外部设备是Host模式下VBUS电源的电荷泵。 OTG_FS 接口的通用特性如下: 经USB-IF 认证,符合通用串行总线规范第2.0 版 模块内嵌的PHY 还完全支持定义在标准规范OTG 补充第1.3 版中的OTG 协议 支持A-B 器件识别(ID 线) 支持主机协商协议(HNP) 和会话请求协议(SRP) 允许主机关闭VBUS以在OTG 应用中节省电池电量 支持通过内部比较器对VBUS电平采取监控 支持主机到从机的角色动态切换 可通过软件配置为以下角色: 具有SRP 功能的USB FS 从机(B 器件) 具有SRP 功能的USB FS/LS 主机(A 器件) USB On-The-Go 全速双角色设备 支持FS SOF 和LS Keep-alive 令牌 SOF 脉冲可通过PAD 输出 SOF 脉冲从内部连接到定时器2 (TIM2) 可配置的帧周期 可配置的帧结束中断 具有省电功能,例如在USB 挂起期间停止系统、关闭数字模块时钟、对PHY 和DFIFO电源加以管理 具有采用高级FIFO 控制的1.25 KB 专用RAM 可将RAM 空间划分为不同FIFO,以便灵活有效地使用RAM 每个FIFO 可存储多个数据包 动态分配存储区 FIFO 大小可配置为非2 的幂次方值,以便连续使用存储单元 一帧之内可以无需要应用程序干预,以达到最大USB 带宽 OTG_FS 接口在主机模式下具有以下主要特性和要求: 通过外部电荷泵生成VBUS电压。 多达8 个主机通道(管道):每个通道都可以动态实现重新配置,可支持任何类型的USB 传输。 内置硬件调度器可: 在周期性硬件队列中存储多达8 个中断加同步传输请求 在非周期性硬件队列中存储多达8 个控制加批量传输请求 管理一个共享RX FIFO、一个周期性TX FIFO 和一个非周期性TX FIFO,以有效使用USB 数据RAM。 OTG_FS 接口在从机模式下具有以下特性: 1 个双向控制端点0 3 个IN 端点(EP),可配置为支持批量传输、中断传输或同步传输 3 个OUT 端点,可配置为支持批量传输、中断传输或同步传输 管理一个共享Rx FIFO 和一个Tx-OUT FIFO,以高效使用USB 数据RAM 管理多达4 个专用Tx-IN FIFO(分别用于每个使能的IN EP),降低应用程序负荷 支持软断开功能。 关于该部分的详细说明,参见芯片的参考手册第34节:USB on-the-go full-speed (OTG_FS) USB OTG high speed core OTG_HS 是一个双角色设备(DRD) 控制器,同时支持从机和主机功能,并且完全符合USB 2.0 规范的On-The-Go 补充标准。此外,该控制器也可配置为仅主机或仅从机控制器,完全符合USB 2.0 规范。在主机模式中,OTG_HS 支持高速(HS,480 Mbits/s)、全速(FS、12 Mbits/s)和低速(LS,1.5 Mbits/s)传输,而在从机模式中,仅支持高速(HS,480 Mbits/s)和全速(FS、12 Mbits/s)传输。OTG_HS 还支持HNP 和SRP。OTG 模式下需要的唯一外部设备是提供VBUS 的电荷泵。 USB DMA 不支持内部Flash寻址 OTG_HS支持HNP(主机协商协议)和SRP(会话请求协议)。 所需的唯一外部设备是OTG模式下VBUS电源的电荷泵。 OTG_HS 接口的通用特性如下: 经USB-IF 认证,符合通用串行总线规范2.0 版本 支持3 个PHY 接口 片上全速PHY 连接外部全速PHY 的I2 C 接口 连接外部高速PHY 的ULPI 接口 支持主机协商协议(HNP) 和会话请求协议(SRP) 在OTG 应用中允许主机关闭VBUS以节省功耗,而不需要外部组件 允许使用内部比较器来监视VBUS电平 支持主机和从机之间的动态角色切换 可通过软件配置为以下角色: 支持SRP 的USB HS/FS 从机(B 器件) 支持SRP 的USB HS/FS/LS 主机(A 器件) USB OTG FS 双角色设备 支持HS/FS SOF 以及低速(LS)“Keep-alive”令牌并具有如下功能: SOF 脉冲引脚输出功能 SOF 脉冲与定时器2 (TIM2) 的内部连接 可配置的帧周期 可配置的帧结束中断 模块内嵌DMA,并可软件配置AHB 的突发传输类型 具备省电功能,例如在USB 挂起期间停止系统时钟,关闭数字模块内部时钟域、PHY 和DFIFO 电源管理 具有包含高级FIFO 管理的专用4K 字节数据RAM: 可以将存储区配置为不同FIFO,以便灵活高效地使用RAM 每个FIFO 可包含多个数据包 动态地进行存储器分配 FIFO 大小可配置为2 的幂以外的值,以便连续使用存储区 一帧之内可以无需要应用程序干预,以达到最大USB 带宽 主机模式下的OTG_HS 接口特征如下: 需要外部电荷泵来生成VBUS 具有多达12 个主机通道(管道),每个通道可动态地进行重新配置,可支持任何类型的USB 传输 内置硬件调度器: 在周期性硬件队列中存储多达8 个中断加同步传输请求 在非周期性硬件队列中存储多达8 个控制加批量传输请求 管理一个共享RX FIFO、一个周期性TX FIFO 和一个非周期性TX FIFO,以有效使用USB 数据RAM 在主机模式下具备对SOF 帧周期进行动态调校的功能 OTG_HS 接口在从机模式下具有以下特性: 具有1 个双向控制端点0 具有5 个IN 端点(EP),可配置为支持批量、中断或同步传输 具有5 个OUT 端点,可配置为支持批量、中断或同步传输 管理一个共享Rx FIFO 和一个Tx-OUT FIFO,可高效使用USB 数据RAM 管理多达6 个专用Tx-IN FIFO(每个IN 配置的EP 使用一个)以降低应用程序负载 具备软断开功能 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1877 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1661 浏览 1 评论
1145 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
760 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1720 浏览 2 评论
1963浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
789浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
612浏览 3评论
629浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
590浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-12 00:18 , Processed in 0.861437 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号