ST意法半导体
直播中

刘玉兰

7年用户 946经验值
私信 关注
[问答]

如何让USB CDC在库存Nucleo-H745zi-q板的CM4内核上运行呢

尝试让 USB CDC 在库存 Nucleo-H745zi-q 板的 CM4 内核上运行。USB_CoreReset() 等待软复位超时。任何帮助将不胜感激。
超时在 STM32h7xx_ll_usb.c 中,第 1456-1469 行:
  • /* Core Soft Reset */
  •   count = 0U;
  •   USBx->GRSTCTL |= USB_OTG_GRSTCTL_CSRST;
  •   do
  •   {
  •     count++;
  •     if (count > 200000U)
  •     {
  •       return HAL_tiMEOUT;
  •     }
  •   } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST);
USB时钟是RC48
使用 CubeMX V6.6.1、CubeIDE V1.10.1、固件 FW_H7 V1.10.0 构建的项目
我把USB从CM4核心移到CM7上,没有出现这个问题。


回帖(1)

朱佳婧

2022-12-6 14:30:28
如果您查看 usbd_desc.c/line 337:Get_SerialNum() 函数确实访问系统内存。不幸的是,CM4 无法访问该区域。
因此,要将设备 ID 用作序列号,您必须通过 CM7 读取它,将其保存在 RAM 中,稍后可用于 CM4。
您可以通过 -in Get_SerialNum()- 替换来测试它:
deviceserial0 = *(uint32_t *) DEVICE_ID1;
deviceserial1 = *(uint32_t *) DEVICE_ID2;
deviceserial2 = *(uint32_t *) DEVICE_ID3;
经过:
设备序列号 0 = 0xABCDEF12;
设备序列号 1 = 0x12345678;
设备序列号 2 = 0x12A3D459;
举报

更多回帖

发帖
×
20
完善资料,
赚取积分