本文主要是介绍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引脚说明(四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!