完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我想知道是否有人让板载高速 PHY 在 STM32F730Z8 上工作?无论我尝试过什么,我都无法让它在 HS 上运行。我正在尝试实现一个 MSC 主机来读取 USB 记忆棒。它在 OTG FS 端口上工作没有问题,但是当我将 USB 连接器重新连接到 HS 引脚 (PB14/PB15) 时,到目前为止我尝试的任何事情都没有取得任何进展(现在已经 3 天了)。当连接记忆棒时,来自 stm32cubemx 的大多数基本设置根本不会有任何影响。我通过开关芯片实现了 VBUS 控制,并定义了输出 GPIO,以便 HAL 可以控制该引脚,这在 OTG FS 上运行良好。
我在地和 USB_OTG_HS_REXTPHYHS 引脚之间连接了一个 3k 电阻。USB 连接器获得正确的 5V。我唯一一次有不同的结果是当我明确添加 __HAL_RCC_OTGPHYC_CLK_ENABLE(); 在 HAL_HCD_MspInit() 函数中。添加这个之后,usb 句柄的 gState 最终显示尝试连接和枚举设备,但它只是一遍又一遍地在 HOST_DEV_ATTACHED 和 HOST_DEV_WAIT_FOR_ATTACHMENT 之间循环。只要记忆棒连接到端口,“is_connected”字段就会显示“1”,但“PortEnabled”字段会随着 gState 一直在 1 和 0 之间循环。在 USBH_Process 内部调试一段时间后(在 usbh_core.c 文件中),我可以清楚地看到 gState 如何在 HOST_IDLE、HOST_DEV_WAIT_FOR_ATTACHMENT、HOST_DEV_ATTACHED 和 HOST_ENUMERAtiON。它无法从“status = USBH_HandleEnum(phost);”返回 USBH_OK,不断返回 USBH_BUSY 状态并重复处理。我进一步研究了 USBH_HandleEnum(),在“案例 ENUM_IDLE”中,它试图从设备“ReqStatus = USBH_Get_DevDesc(phost, 8U);”获取描述符,它正在返回 USBH_BUSY。在 USBH_Get_DevDesc 中,USBH_GetDescriptor() 函数应该返回 USBH_CtlReq(),它一直返回 USBH_BUSY。感觉就像主机正在向设备发送命令以请求描述符,但根本没有得到任何响应,并且它一直在这个进程循环中循环。我进一步研究了 USBH_HandleEnum(),在“案例 ENUM_IDLE”中,它试图从设备“ReqStatus = USBH_Get_DevDesc(phost, 8U);”获取描述符,它正在返回 USBH_BUSY。在 USBH_Get_DevDesc 中,USBH_GetDescriptor() 函数应该返回 USBH_CtlReq(),它一直返回 USBH_BUSY。感觉就像主机正在向设备发送命令以请求描述符,但根本没有得到任何响应,并且它一直在这个进程循环中循环。我进一步研究了 USBH_HandleEnum(),在“案例 ENUM_IDLE”中,它试图从设备“ReqStatus = USBH_Get_DevDesc(phost, 8U);”获取描述符,它正在返回 USBH_BUSY。在 USBH_Get_DevDesc 中,USBH_GetDescriptor() 函数应该返回 USBH_CtlReq(),它一直返回 USBH_BUSY。感觉就像主机正在向设备发送命令以请求描述符,但根本没有得到任何响应,并且它一直在这个进程循环中循环。 我需要指出的是,这是一个定制电路板设计,在设计时并没有完全考虑到 USB HS,但是 D+ 和 D- 走线 (PB14/PB15) 非常短,我尝试在不同的位置焊接 USB 连接器点,最接近 stm32 的实际引脚,距离 stm32 引脚 0.2-0.3 英寸,结果相同,枚举尝试的行为没有变化。 我还尝试进行测试,反转 stm32 和 USB 连接器之间的 D- 和 D+ 信号,令我惊讶的是我得到了相同的结果.. 完全没有变化,gState 的相同交替并且没有任何枚举。 我也试过来回更改 USB 配置设置,所有可能的更改组合,但没有任何进展。 此外,作为一项额外的努力,我尝试将 STM32F723 发现的 USB 主机示例之一移植到我的芯片上。令人惊讶的是,结果相同 - 交替 gState 而不枚举任何内容,没有发送任何描述符。 这让我想到要么是 STM32F730Z8 芯片有一个有缺陷的 HS PHY(假设网上没有其他人在这个特定芯片上实现 HS USB。相信我,我确实花了 HOURS 在线查找,但我能找到的是不确定或不清楚,数据表和参考手册中的拼写错误),或者我真的需要设计一个带有阻抗匹配迹线的电路板。 我的一个问题是主机是否有可能甚至不枚举 PCB 上的 usb 记忆棒,其中 usb 连接器以不超过 0.3 英寸的距离焊接到 stm32 引脚(也尝试了 22 欧姆的串联电阻,结果相同), 或者它至少应该显示出一些生命迹象?我可以设计另一块板,但在此之前,我很想听听对 F730 芯片的板载高速 PHY 做过类似事情的人的一些想法。 |
|
相关推荐
1个回答
|
|
我终于解决了这个问题。这是两件事的结合。在我的定制板上,我使用了一个 8MHz 晶体来为 stm32 计时(具有所有正确的时钟配置),但是我今天发现在文件 stm32f7xx_ll_usb.c 中,在函数静态 HAL_StatusTypeDef USB_HS_PHYCInit 中(USB_OTG_GlobalTypeDef *USBx),有一个部分控制 PHY 频率选择。只有某些 HSE 频率有条件,它们是 12、12.5、16、24、25 和 32MHz。所以我尝试将晶体更改为 25MHz,重新配置时钟配置,它立即开始枚举记忆棒。显然这在任何地方都没有记录。
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2711 浏览 1 评论
3235 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1807 浏览 1 评论
3643 浏览 6 评论
6030 浏览 21 评论
1332浏览 4评论
206浏览 3评论
194浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
348浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
439浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:39 , Processed in 1.132335 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号