STM32F205 的HS USB 做device使用是否要接PHY? |
stm32 USB的CDC类传输掉数据
STM32F207+LWIP的网络丢包问题! 【悬赏问答】
STM32F105 USB接收数据不断进入中断,出现“死机”现象
STM32F207+DP83848+RTL8019可不可以实现双网口设计
关于STM32CubeMX配置的USB例程电脑无法识别问题
STM32F407 USB-HS-OTG是否不外接PHY可以做虚拟串口?
深圳市旺宝电子STM32F207开发板例程集
如何做一个USB从机键盘用stm32f407
用STM32F4 Cube MX生成的USB Device C代码的BUG
USB Device + FatFS + SDIO 模拟U盘意外只读问题
使用demo修改的,在USB 的D+上加了一个上拉, 使用官方的HID demo修改,FS USB 接口可以识别,为啥HS接口无法识别,调试发现USB会发生复位中断,后面就没有任何中断了!代码如下:
hpcd.Instance = USB_OTG_HS;
hpcd.Init.dev_endpoints = 4;
hpcd.Init.use_dedicated_ep1 = 0;
hpcd.Init.ep0_mps = 0x40;
/* Be aware that enabling DMA mode will result in data being sent only by
multiple of 4 packet sizes. This is due to the fact that USB DMA does
not allow sending data from non word-aligned addresses.
For this specific application, it is advised to not enable this option
unless required. */
hpcd.Init.dma_enable = 0;
hpcd.Init.low_power_enable = 0;
//use inter phy!! 使用内部PHY
hpcd.Init.phy_itface = PCD_PHY_EMBEDDED;
hpcd.Init.Sof_enable = 0;
hpcd.Init.speed = PCD_SPEED_FULL;
hpcd.Init.vbus_sensing_enable = 0;
/* Link The driver to the stack */
hpcd.pData = pdev;
pdev->pData = &hpcd;
/* Initialize LL Driver */
HAL_PCD_Init(&hpcd);
HAL_PCDEx_SetRxFiFo(&hpcd, 0x80);
HAL_PCDEx_SetTxFiFo(&hpcd, 0, 0x40);
HAL_PCDEx_SetTxFiFo(&hpcd, 1, 0x80);
IO设置:
{
/* Configure USB H GPIOs */
__HAL_RCC_GPIOB_CLK_ENABLE();
/* Configure DM DP Pins */
GPIO_InitStruct.Pin = (GPIO_PIN_14 | GPIO_PIN_15);
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF10_OTG_HS;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* Enable USB HS Clocks */
__HAL_RCC_USB_OTG_HS_CLK_ENABLE();
//__HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE();
/* Set USBHS Interrupt priority */
HAL_NVIC_SetPriority(OTG_HS_IRQn, 5, 0);
/* Enable USBHS Interrupt */
HAL_NVIC_EnableIRQ(OTG_HS_IRQn);
if(hpcd->Init.low_power_enable == 1)
{
/* Enable EXTI Line 20 for USB wakeup*/
__HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG();
__HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE();
__HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_IT();
/* Set EXTI Wakeup Interrupt priority*/
HAL_NVIC_SetPriority(OTG_HS_WKUP_IRQn, 0, 0);
/* Enable EXTI Interrupt */
HAL_NVIC_EnableIRQ(OTG_HS_WKUP_IRQn);
}
}
其他的配置和FS一样的了。难道HS配置还有什么特别要注意的地方?
你好!
双USB做device时,有碰到过HS USB有的电脑无法识别的问题吗?我也和你是一样的使用方案,都可以做device,但是最近发现两种现象:
1,HS 插入XP 32bit 和WIN7 32bit 提示无法识别USB设备,换到FS USB接口可以正常识别,装好驱动后,换回HS端,就可以正常识别了: 2,HS 插入WIN7 64bit 电脑提示无法识别USB设备,换到FS USB接口可以正常识别,装好驱动后,换回HS端,也无法识别:
3,HS 插入WIN10 64bit 电脑可以直接识别,都没看到装驱动的过程。
请问,有没有碰到过类似的问题,可以给些建议吗?谢谢!
评分
查看全部评分
如果工作在HS模式就必须外加PHY, FS模式就可以用内置的PHY.
评分
查看全部评分
#define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)((uint32_t)USBx + USB_OTG_IN_ENDPOINT_BASE + (i)*USB_OTG_EP_REG_SIZE))
#define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)((uint32_t)USBx + USB_OTG_OUT_ENDPOINT_BASE + (i)*USB_OTG_EP_REG_SIZE))
USBx都没定义怎么就编译通过了呢?想不通?
#define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)((uint32_t)USBx + USB_OTG_OUT_ENDPOINT_BASE + (i)*USB_OTG_EP_REG_SIZE))
这些宏,用之前必须定义USBx这变量!!!
STM23F2xx官方demo有问题,经修改后,使用fs做键盘已经成功,还差HS!暂时还没调通。