自学内容网 自学内容网

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脉冲就能从相应的引脚输出


原文地址:https://blog.csdn.net/binhao002/article/details/135995182

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!