目录
前沿
1 STM32 OTG标准库的获取
2 设备模式代码匹配开发板
2.1 OTG FS全速代码修改
2.2 OTG HS代码修改
2.2.1 OTG HS外部高速PHY运行在高速模式代码修改
2.2.2 OTG HS外部高速PHY运行在全速模式代码修改
2.2.3 OTG HS内部全速PHY运行在全速模式代码修改
前沿
前面对STM32F407 OTG模块及ULPI接口进行了简单的讲解,现在针对ST提供的标准库进行简单讲解,主要针对标准库的获取和标准库的使用进行讲解,更多USB相关信息请查看:USB专栏
1 STM32 OTG标准库的获取
通过ST官网,ST OTG代码下载链接,获取OTG代码,按照要求填写邮箱即可下载。
下载之后,解压,打开《Project》目录,有以下的例程,分为设备模式例程、主机模式例程和主机/设备模式模式例程。
2 设备模式代码匹配开发板
我们这里只讲解设备模式下CDC类的代码,其它代码类似,想要了解更多关于USB相关的信息,建议读者查看博主的USB专栏。
2.1 OTG FS全速代码修改
1. 首先使用keil打开《VCP_Loopback》工程,因为我们是STM32F407的开发板,所以选择配置如下,选择《STM324xG-EVAL_USBD-FS》子工程(这里我们先选择全速设备,全速设备也就是OTG FS模块,使用PA11和PA12作为USB的通信引脚,不需要外接PHY):
2. 修改系统时钟源,打开《system_stm32f4xx.c》文件,修改《PLL_M》宏定义,改为8,再打开《stm32f4xx.h》文件,修改《HSE_VALUE》宏定义,改为8000000(因为博主使用的是8M的HSE)。
3. 下载程序,如果板子ok,需要保证PA9引脚有5V或3.3V电压,那么能够在设备管理器查看到COM设备。
2.2 OTG HS代码修改
OTG HS模块分为两种模式:
- 内部全速PHY模式
- 外部高速PHY模式
外部高速PHY又分为两种模式(外部高速PHY支持高速模式):
- 外部高速PHY运行在全速模式
- 外部高速PHY运行在高速模式
具体细节可以查看博主的前两篇文章,对这些接口有一个简单的讲解,也足够初学者进行学习了。
2.2.1 OTG HS外部高速PHY运行在高速模式代码修改
1. 选择《STM324xG-EVAL_USBD-HS》子工程,如下:
2. 按照OTG FS模式修改系统时钟源。
3. 下载程序,如果板子ok,需要通过ULPI接口外挂USB3318或者USB3300芯片,那么能够在设备管理器查看到COM设备,此设备是一个高速设备。
2.2.2 OTG HS外部高速PHY运行在全速模式代码修改
在《2.2.1 OTG HS外部高速PHY运行在高速模式代码修改》章节的基础上,只需要修改一个地方,就能实现外部高速PHY运行在全速模式,修改如下:
2.2.3 OTG HS内部全速PHY运行在全速模式代码修改
1. 选择《STM324xG-EVAL_USBD-HS》子工程,如下:
2. 按照OTG FS模式修改系统时钟源。
3. 把宏定义《USE_ULPI_PHY》改为《USE_EMBEDDED_PHY》,如下图所示:
4. 编译运行,此时不需要外接PHY,只是此时USB的信号引脚为PB14和PB15,并且PB13需要3.3V或者5V供电,那么能够在设备管理器查看到COM设备,此设备是一个全速设备。