ST意法半导体
直播中

LL-LING宁

9年用户 1418经验值
擅长:电源/新能源
私信 关注
[问答]

怎么使用STM32F723的开发板测试HS的眼图?

请问怎么使用STM32F723的开发板测试HS的眼图,开发板程序包含USBD_HS_TESTMODE_ENABLE后按教程修改了USBD_LL_TestMode函数,结果文件显示USBx_DEVICE定义的USBx_BASE没有定义,应该怎么改呀

回帖(1)

张燕

2025-3-17 18:05:23

为了在STM32F723开发板上测试USB HS眼图并解决编译错误,请按照以下步骤操作:




1. 确认硬件和软件环境



  • 硬件:确保开发板的USB HS接口已正确连接(需确认是否使用外部PHY或内置HS PHY)。

  • 软件:使用STM32CubeMX生成USB HS工程,并安装最新HAL库(如STM32CubeF7)。




2. 关键代码修改


2.1 启用测试模式宏


usbd_conf.h 中启用测试模式:


#define USBD_HS_TESTMODE_ENABLE

2.2 修改底层驱动函数


usbd_ll_stm32f7.c 中修改 USBD_LL_TestMode 函数:


void USBD_LL_TestMode(USBD_HandleTypeDef *pdev, uint8_t test_mode) {
  USB_OTG_GlobalTypeDef *USBx = pdev->pData; // 获取USB实例

  // 进入测试模式
  switch(test_mode) {
    case TEST_J:
    case TEST_K:
    case TEST_SE0_NAK:
    case TEST_PACKET:
    case TEST_FORCE_ENABLE:
      USBx->GCCFG |= USB_OTG_GCCFG_VBDEN; // 使能眼图测试
      USBx->DCTL = (test_mode << 4);      // 设置测试模式
      break;
    default:
      break;
  }
}

2.3 解决编译错误



  • 错误原因:新版HAL库使用结构体指针(如USB_OTG_HS)替代旧版宏(如USBx_DEVICE)。

  • 修改方法

    • 将代码中所有 USBx_DEVICE 替换为 USBx->DEVICE

    • 若提示 USBx_BASE 未定义,直接使用寄存器结构体(如USB_OTG_HS->GCCFG)。





3. 配置时钟和引脚



  • 使用STM32CubeMX配置:

    • 启用USB_OTG_HS(选择内置PHY或外部ULPI PHY)。

    • 配置USB时钟为48 MHz(通过PLL或HSE)。

    • 检查DP/DM引脚分配(PA11/PA12或专用HS引脚)。





4. 验证测试模式



  1. 编译并下载程序到开发板。

  2. 通过USB分析仪(如Ellisys/Beagle)捕获眼图。

  3. 确保设备进入测试模式(PC端可能无法识别设备,此为正常现象)。




5. 常见问题



  • 未进入测试模式:检查DCTL寄存器配置及GCCFG.VBDEN是否使能。

  • 硬件连接问题:确保HS差分信号线(DP/DM)连接正确。

  • HAL库版本:使用CubeMX生成最新代码以避免兼容性问题。




通过以上步骤,应能正确配置STM32F723的USB HS测试模式并解决编译问题。若仍报错,请检查工程中是否遗漏USB相关头文件(如stm32f7xx_hal_hcd.h)。

举报

更多回帖

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