STM32F401 USB VBUS 设置引起的一些问题
2018-12-20 来源:eefocus
在开发板上调试代码,开发板上的PA9是floating input 。 然后贴片的时候我们的板子应用了这个引脚并且设置为GPIO_MODE_OUTPUT_PP。
最后引起的问题是USB不能正常通信。
最后查看手册看到如下描述:
Note: When VBUS sensing feature is enabled, PA9 should be left at their default state (floating
input), not as alternate function. A typical 200 μA current consumption of the embedded
sensing block (current to voltage conversion to determine the different sessions) can be
observed on PA9 when the feature is enabled.
最后不得不修改代码如下:
USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev)
{
/* Init USB_IP */
if (pdev->id == DEVICE_FS) {
/* Link The driver to the stack */
hpcd_USB_OTG_FS.pData = pdev;
pdev->pData = &hpcd_USB_OTG_FS;
hpcd_USB_OTG_FS.Instance = USB_OTG_FS;
hpcd_USB_OTG_FS.Init.dev_endpoints = 4;
hpcd_USB_OTG_FS.Init.speed = PCD_SPEED_FULL;
hpcd_USB_OTG_FS.Init.dma_enable = DISABLE;
hpcd_USB_OTG_FS.Init.ep0_mps = DEP0CTL_MPS_64;
hpcd_USB_OTG_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
hpcd_USB_OTG_FS.Init.Sof_enable = DISABLE;
hpcd_USB_OTG_FS.Init.low_power_enable = DISABLE;
hpcd_USB_OTG_FS.Init.lpm_enable = DISABLE;
//hpcd_USB_OTG_FS.Init.vbus_sensing_enable = ENABLE;
hpcd_USB_OTG_FS.Init.use_dedicated_ep1 = DISABLE;
if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK)
{
Error_Handler();
}
HAL_PCDEx_SetRxFiFo(&hpcd_USB_OTG_FS, 0x80);
HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 0, 0x40);
HAL_PCDEx_SetTxFiFo(&hpcd_USB_OTG_FS, 1, 0x80);
}
return USBD_OK;
}
屏蔽标红部分,USB就能够正常通信。
- STM32F401 Nucleo开发板使用说明指南
- STM32F401+nRF24L01无线传输音频(对讲机原型)
- Keil MDK STM32系列(四) 基于抽象外设库HAL的STM32F401开发
- STM32F103和STM32F401的ADC多通道采集DMA输出
- STM32F401利用CubeMX实现按键中断翻转LED
- STM32F401 ILI9235液晶屏屏 2.8寸 驱动心得
- STM32F401 SDIO HAL driver初始化SD卡
- STM32F401 MCU集成Movea的SmartMotion技术
- ST为STM32F4高性能嵌入式开发生态系统注入活力
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计