硬汉嵌入式论坛

 找回密码
 立即注册
查看: 913|回复: 6
收起左侧

[USB] 请教723的USB工作在USB-FS情况下用RL_USB不能工作,可能是什么问题?

[复制链接]

5

主题

20

回帖

35

积分

新手上路

积分
35
发表于 2023-2-1 10:46:20 | 显示全部楼层 |阅读模式
743有2个USB,一个USB FS  一个USB HS
723只有一个USB HS,但是可以配置工作在内部PHY,FS模式

723的板子,用ST Cube生成的ST 的USB例程是可以工作的,换成RL-USB就不能工作,请教可能是什么问题?
所有的初始化都对比过了,就是RL-USB初始化和连接后,没有任何反应
折腾了好长时间了,请问有没有人用 743/723的USB-HS,工作在FS下,用RL-USB成功的例子?
谢谢

代码已打包

723test3.rar

473.51 KB, 下载次数: 3

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2023-2-1 11:14:05 | 显示全部楼层
楼主使用的MDK版本,中间件版本,MDK的HAL库软件包版本,CMSIS软件包版本需要备注下,使用H7的RL-USB的,这个信息比较重要。
回复

使用道具 举报

5

主题

20

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2023-2-1 11:39:51 | 显示全部楼层
eric2013 发表于 2023-2-1 11:14
楼主使用的MDK版本,中间件版本,MDK的HAL库软件包版本,CMSIS软件包版本需要备注下,使用H7的RL-USB的,这 ...

谢谢回复。
MDK  5.34    CMSIS 5.9  中间件7.16  HAL 1.9
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2023-2-1 15:13:57 | 显示全部楼层
你的USB 48MHz时钟仅配置了这一点吗,时钟应该没有配置对

void HAL_PCD_MspInit(PCD_HandleTypeDef* pcdHandle)
{
  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
  if(pcdHandle->Instance==USB_OTG_HS)
  {
  /* USER CODE BEGIN USB_OTG_HS_MspInit 0 */

  /* USER CODE END USB_OTG_HS_MspInit 0 */

  /** Initializes the peripherals clock
  */
    PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB;
    PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
    {
      Error_Handler();
    }

  /** Enable USB Voltage detector
  */
    HAL_PWREx_EnableUSBVoltageDetector();

    /* Peripheral clock enable */
    __HAL_RCC_USB_OTG_HS_CLK_ENABLE();

    /* Peripheral interrupt init */
    HAL_NVIC_SetPriority(OTG_HS_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(OTG_HS_IRQn);
  /* USER CODE BEGIN USB_OTG_HS_MspInit 1 */

  /* USER CODE END USB_OTG_HS_MspInit 1 */
  }
}
回复

使用道具 举报

5

主题

20

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2023-2-1 23:10:10 | 显示全部楼层
eric2013 发表于 2023-2-1 15:13
你的USB 48MHz时钟仅配置了这一点吗,时钟应该没有配置对

void HAL_PCD_MspInit(PCD_HandleTypeDef* pcd ...

时钟配置和用ST STM32CubeMX生成的例程是一样的。
STM32CubeMX自己的USB库是可以
我再对比一下确认一下
回复

使用道具 举报

5

主题

20

回帖

35

积分

新手上路

积分
35
 楼主| 发表于 2023-4-9 09:41:22 | 显示全部楼层
找到原因了,是因为DFP的驱动文件USBD_STM32H7xx.c有问题, 自己的代码初始化USB HS后,采用的时内置的PHY,电路也是没有外置PHY。
USBD_Initialize时会调用USBD_PowerControl,在Power初始化的时候,默认是用外部的PHY  ULPI,速度也不对, 就出现了不工作的情况

错误的部分
#if (OTG_HS_DEVICE_USED == 1)
      if (usbd == &USBD_HS_Resources) {
        usbd->p_hpcd->Instance = USB_OTG_HS;
        usbd->p_hpcd->Init.dev_endpoints = USBD_HS_MAX_ENDPOINT_NUM;
        usbd->p_hpcd->Init.use_dedicated_ep1 = 0;
        usbd->p_hpcd->Init.ep0_mps = 0x40;
        usbd->p_hpcd->Init.low_power_enable = 0;
#if (OTG_HS_IN_FS == 1)
        usbd->p_hpcd->Init.phy_itface = PCD_PHY_EMBEDDED;
#else
        usbd->p_hpcd->Init.phy_itface = PCD_PHY_ULPI;
#endif


        usbd->p_hpcd->Init.Sof_enable = 0;
        usbd->p_hpcd->Init.speed = PCD_SPEED_HIGH;
        usbd->p_hpcd->Init.dma_enable = DISABLE;
        usbd->p_hpcd->Init.vbus_sensing_enable = 1;
        usbd->p_hpcd->Init.lpm_enable = 0;
        usbd->p_hpcd->pData = NULL;
      }
#endif


需要根据自己的实际电路进行更改
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2023-4-9 11:42:03 | 显示全部楼层
albert.hu 发表于 2023-4-9 09:41
找到原因了,是因为DFP的驱动文件USBD_STM32H7xx.c有问题, 自己的代码初始化USB HS后,采用的时内置的PHY ...

这个配置选项需要用户操作MDK RTE弹出STM32CubeMX里面正常设置选项,我这个例子是同时使用的H743/H750的HS + FS两个USB,其中HS用的内置PHY

基于STM32H7的RTX5+RL-USB+RL-FlashFS+RL-TCPnet+emWin6.x综合模板发布,含MDK AC5和AC6,升级至V1.1(2021-03-01)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=104012
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 13:38 , Processed in 0.280376 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表