在开发板上调试代码,开发板上的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就能够正常通信。
上一篇:STM32L1xx的库函数有个Bug(stm32l1xx_gpio.c)
下一篇:STM32F4xx固件库搭建后编译出错的一种解决办法
推荐阅读最新更新时间:2024-03-16 16:20
设计资源 培训 开发板 精华推荐
- 芯(E)币兑换Nucleo扩展板:让你的Nucleo变身成pyboard
- 3月26日上午10:00直播:开拓IoT社会 尼吉康的新蓄电装置
- 你吐槽 我送书
- #micropython大作战#多种参与姿势,大家一起来玩micropython!
- 有奖直播【Keysight World Tech Day 2023分论坛——汽车自动驾驶与新能源】
- TE 《新趋势报告: 如何有效应对当下测试测量领域的挑战》下载最新趋势报告
- ADI有奖下载活动之11 ADI锂电池测试设备解决方案
- Microchip电源评估板促销,还有红包送!
- 医用/工业CT医疗影像探测器芯片应用与解决方案
- 更直观的了解5G?观看罗德与施瓦茨主题演讲,填问卷赢好礼!