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了。

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第1张图片

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

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第2张图片

1.2 ID引脚作为OTG引脚使用

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

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第3张图片

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

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

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第4张图片

2. 修改ID引脚为AF功能

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第5张图片

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了。

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第6张图片

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

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第7张图片

2.2 VBUS引脚作为OTG引脚使用

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

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第8张图片

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

1. 打开宏定义《VBUS_SENSING_ENABLED》

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第9张图片

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

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第10张图片

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了。

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第11张图片

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

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第12张图片

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第13张图片

3.2 SOF引脚作为OTG引脚使用

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

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第14张图片

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

1. 打开宏定义《USB_OTG_FS_SOF_OUTPUT_ENABLED》

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第15张图片

2. 修改SOF引脚为AF功能

OTG -- STM32F407 OTG ID/VBUS/SOF引脚说明(四)_第16张图片

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

你可能感兴趣的:(OTG,stm32,嵌入式硬件,单片机,usb)