STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)

使用STM32CubeMX配置HS USB。

由于STM32F407内部只有FS USB PHY(全速),若要实现HS USB则需要通过ULPI接口外接一个HS USB PHY,虽然在STM32CubeMX中配置HS USB时可以选用内置PHY,但是内置PHY只能达到FS USB(全速)的速度。

此处使用的是USB3300,因为在淘宝上只有这一款=  =。

STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)_第1张图片STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)_第2张图片

STM32F407ZG USB3300
USB_OTG_HS_ULPI_D0  DATA0
USB_OTG_HS_ULPI_D1 DATA1
USB_OTG_HS_ULPI_D2 DATA2
USB_OTG_HS_ULPI_D3 DATA3
USB_OTG_HS_ULPI_D4 DATA4
USB_OTG_HS_ULPI_D5 DATA5
USB_OTG_HS_ULPI_D6 DATA6
USB_OTG_HS_ULPI_D7 DATA7
USB_OTG_HS_ULPI_STP STP
USB_OTG_HS_ULPI_NXT NXT
USB_OTG_HS_ULPI_DIR DIR
USB_OTG_HS_ULPI_CK CLK
  RST
GND GND
3.3V 3.3V
  5V

之前买的一块USB3300调试过程中莫名其妙的就烧了,研究了一下微雪的那套板子的原理图之后,发现USB3300模块的5V是连到两个USB接口的VBus的,因为此处主要作为USB Device,所以不能再给5V供电。

配置STM32CubeMX:

都保持默认的就行,注意要改一下:

STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)_第3张图片

STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)_第4张图片

STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)_第5张图片

生成工程,编译,烧录,安装STM32虚拟串口驱动,一切顺利的话就可以在串口助手中看到一个虚拟串口。

而且选择的波特率无论是啥都能正常接收数据(不知道为什么)。

STM32CubeMX + STM32F407ZG + USB3300 高速USB实验(虚拟串口)_第6张图片

在main.c中添加:

需要包含usbd_cdc_if.h 以使用CDC_Transmit_HS(uint8_t* Buf, uint16_t Len);函数来设置数据起始地址和长度,随后USB中断将自动将数据拷贝到发送缓冲区,完成数据的发送。

/* USER CODE BEGIN Includes */

#include "usbd_cdc_if.h"

/* USER CODE END Includes */

  uint8_t data[1024];
  for(uint16_t i=0;i<1024;i++)
  {
    data[i]=i%10+0x30;
  }
  data[1023]='\n';
  CDC_Transmit_HS(data,1024);

 

你可能感兴趣的:(stm32)