OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)

2024-02-06 00:12

本文主要是介绍OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前沿

1 ID引脚

1.1 ID引脚作为普通GPIO使用

1.2 ID引脚作为OTG引脚使用

2 VBUS引脚

2.1 VBUS引脚作为普通GPIO使用

2.2 VBUS引脚作为OTG引脚使用

3 SOF引脚

3.1 SOF引脚作为普通GPIO使用

3.2 SOF引脚作为OTG引脚使用


前沿

前面对OTG模块及OTG代码进行了简单的讲解,但是STM32F407 OTG模块除了USBDP、USBDM和ULPI引脚之外,还有ID、SOF、VBUS引脚,这些引脚既可以空闲出来作为其他GPIO使用,也可以通过这些引脚来控制OTG的状态,下面就讲讲如何使用ID、SOF、VBUS这些引脚。

这里只针对OTG FS模块Device进行讲解,OTG HS模块类似。

1 ID引脚

OTG ID引脚可以作为区分主机或者从机的标志,当ID引脚拉高或者悬空的时候,OTG被识别为设备模式,当ID引脚拉低的时候,OTG被识别为主机模式。

当然STM32F407 OTG模块也能把ID引脚空闲出来,使ID引脚可以作为普通的GPIO使用。

1.1 ID引脚作为普通GPIO使用

查看用户手册,OTG_FS_GUSBCFG寄存器的FDMOD位置1,OTG_ID引脚就可以用作普通的GPIO了。

反应到代码的处,如下图所示:

1.2 ID引脚作为OTG引脚使用

OTG_FS_GUSBCFG寄存器的FDMOD位清零,OTG_ID引脚必须用作OTG信号引脚,并且OTG_ID拉高或悬空,为设备模式,OTG_ID拉低,为主机模式

反应到代码处,需要修改代码如下:

1. 屏蔽代码“USB_OTG_SetCurrentMode(pdev, DEVICE_MODE)”

2. 修改ID引脚为AF功能

2 VBUS引脚

OTG VBUS引脚为USB供电引脚,USB模块要运行,VBUS引脚必须保持5V高电平供电,当然STM32F407 OTG模块支持内部VBUS供电,此时VBUS引脚可以作为普通GPIO使用。

2.1 VBUS引脚作为普通GPIO使用

查看用户手册,OTG_FS_GCCFG寄存器的NOVBUSSENS位置1,OTG_VBUS引脚就可以用作普通的GPIO了。

反应到代码的处,如下图所示:

2.2 VBUS引脚作为OTG引脚使用

 OTG_FS_GCCFG寄存器的NOVBUSSENS位清零,OTG_VBUS引脚必须用作OTG信号引脚,此时VBUS引脚需要外部5V供电。

反应到代码处,需要修改代码如下:

1. 打开宏定义《VBUS_SENSING_ENABLED》

2. 修改VBUS引脚为输入模式

3 SOF引脚

OTG_SOF引脚用于输出SOF信号的频率,全速设备输出1KHz频率(SOF为1ms),高速设备输出8KHz频率(SOF为125us)。

下图是使用逻辑分析仪抓取的OTG FS SOF输出信号的波形图。

3.1 SOF引脚作为普通GPIO使用

 查看用户手册,OTG_FS_GCCFG寄存器的SOFOUTEN位清零,OTG_SOF引脚就可以用作普通的GPIO了。

反应到代码的处,如下图所示:

3.2 SOF引脚作为OTG引脚使用

OTG_FS_GCCFG寄存器的SOFOUTEN位置1,OTG_SOF引脚就可以输出SOF频率。

反应到代码处,需要修改代码如下:

1. 打开宏定义《USB_OTG_FS_SOF_OUTPUT_ENABLED》

2. 修改SOF引脚为AF功能

实测发现,SOF脉冲输出不受OTG_FS_GCCFG寄存器的SOFOUTEN位影响,只要配置了PA8(OTG FS模块)的AF功能,SOF脉冲就能从相应的引脚输出

这篇关于OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682607

相关文章

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

在Dockerfile中copy和add的区别及说明

《在Dockerfile中copy和add的区别及说明》COPY和ADD都是Dockerfile中用于文件复制的命令,但COPY仅用于本地文件或目录的复制,不支持自动解压缩;而ADD除了复制本地文件或... 目录在dockerfile中,copy 和 add有什么区别?COPY 命令ADD 命令总结在Doc

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

解读Pandas和Polars的区别及说明

《解读Pandas和Polars的区别及说明》Pandas和Polars是Python中用于数据处理的两个库,Pandas适用于中小规模数据的快速原型开发和复杂数据操作,而Polars则专注于高效数据... 目录Pandas vs Polars 对比表使用场景对比Pandas 的使用场景Polars 的使用

Spring Boot Actuator使用说明

《SpringBootActuator使用说明》SpringBootActuator是一个用于监控和管理SpringBoot应用程序的强大工具,通过引入依赖并配置,可以启用默认的监控接口,... 目录项目里引入下面这个依赖使用场景总结说明:本文介绍Spring Boot Actuator的使用,关于Spri