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,因为在淘宝上只有这一款=  =。

STM32F407ZGUSB3300
USB_OTG_HS_ULPI_D0 DATA0
USB_OTG_HS_ULPI_D1DATA1
USB_OTG_HS_ULPI_D2DATA2
USB_OTG_HS_ULPI_D3DATA3
USB_OTG_HS_ULPI_D4DATA4
USB_OTG_HS_ULPI_D5DATA5
USB_OTG_HS_ULPI_D6DATA6
USB_OTG_HS_ULPI_D7DATA7
USB_OTG_HS_ULPI_STPSTP
USB_OTG_HS_ULPI_NXTNXT
USB_OTG_HS_ULPI_DIRDIR
USB_OTG_HS_ULPI_CKCLK
 RST
GNDGND
3.3V3.3V
 5V

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

配置STM32CubeMX:

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

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

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

在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);

 

  • 8
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值