STM32MP135裸机编程:使用软件触发硬件复位

0 参考资料

STM32MP13xx参考手册.pdf

1 使用寄存器实现软件复位

1.1 复位电路概述

在这里插入图片描述
重点关注下面标红的路线:
在这里插入图片描述
通过这条路线可以清楚看到,我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL(复位脉冲控制器)给NRST(硬件复位引脚)一个复位脉冲信号,从而让软件实现硬件复位。

1.2 RCC全局复位控制设置寄存器描述

在这里插入图片描述
通过设置RCC_MP_GRSTCSETR寄存器的bit0为1即可通过软件实现硬件复位。

<think>好的,我现在需要帮助用户查找关于STM32 USB PHY驱动的配置方法或教程。首先,我需要理解用户的问题。他们提到了STM32的USB PHY驱动配置,可能是在开发过程中遇到了相关问题,比如设备树配置、驱动加载或者硬件设置的问题。用户提供的参考引用中提到了STM32MP157的USB驱动配置,以及USBX和OTG相关的信息,我需要从这些信息中找到有用的部分。 首先,回顾引用内容。引用[1]提到在STM32MP157的设备树中配置usbh_ehci和usbh_ohci节点,并指出需要配置PHY控制器。这可能涉及到设备树中的PHY相关节点,比如usbphyc。引用[2]和[3]介绍了USBX和USB系统的基本结构,可能对理解USB驱动架构有帮助。引用[4]提到了OTG驱动代码的修改,特别是CDC类,这可能与PHY配置相关。 接下来,我需要整理出配置PHY驱动的步骤。根据引用[1],配置PHY控制器是必须的,这可能包括设备树中的phy属性、时钟配置、电源管理等。例如,在设备树中,USB控制器节点需要引用PHY节点,比如通过phys和phy-names属性。同时,时钟和复位引脚的配置也很重要,确保PHY正常工作。 另外,用户可能需要参考ST官方提供的文档或示例代码。比如STM32CubeMX工具可以生成初始化代码,包括PHY的配置。此外,Linux内核中的驱动程序如drivers/usb/host/ehci-platform.c和ohci-platform.c可能涉及PHY的初始化和控制。 还需要考虑用户的具体芯片型号,因为不同STM32系列(如F4、H7、MP1)的PHY配置可能有所不同。例如,某些型号可能内置PHY,而其他型号需要外部PHY芯片。因此,用户需要根据硬件设计选择合适的配置方法。 最后,总结步骤:检查设备树配置,配置时钟和电源,处理复位信号,使用STM32CubeMX生成代码,参考内核驱动源码,以及查阅ST官方文档。这些步骤应该能帮助用户完成USB PHY驱动的配置。</think>### STM32 USB PHY驱动配置方法 #### 1. **设备树(DTS)配置** - **PHY节点定义**:在STM32MP系列中,USB PHY控制器通常通过`usbphyc`节点定义。例如: ```dts usbphyc: usbphyc@5a006000 { compatible = "st,stm32mp1-usbphyc"; reg = <0x5a006000 0x1000>; clocks = <&amp;rcc USBPHY_K>; resets = <&amp;rcc USBPHY_R>; #phy-cells = <0>; }; ``` 此节点描述了PHY控制器的寄存器地址、时钟和复位信号[^1]。 - **USB控制器绑定PHY**:在USB主机或设备节点中,需通过`phys`和`phy-names`属性关联PHY。例如: ```dts usbh_ehci: usb@5800d000 { compatible = "generic-ehci"; reg = <0x5800d000 0x1000>; clocks = <&amp;rcc USBH>; phys = <&amp;usbphyc_port0>; phy-names = "usb"; }; ``` 此处`phys`指向`usbphyc_port0`(PHY的物理端口)。 #### 2. **时钟与电源配置** - **PHY时钟**:需在设备树中为PHY控制器配置正确的时钟源,例如`rcc USBPHY_K`。 - **USB控制器时钟**:确保USB主机/设备控制器的时钟(如`rcc USBH`)已启用。 - **电源管理**:部分STM32芯片需通过PWR寄存器控制USB电源(如`PWR_CR`的`USV`位)[^4]。 #### 3. **复位信号处理** - 在设备树中,PHY控制器和USB主机的复位信号需通过`resets`属性绑定,例如: ```dts resets = <&amp;rcc USBPHY_R>; ``` 驱动加载时会自动触发复位操作[^1]。 #### 4. **使用STM32CubeMX生成代码** - 对于非Linux系统(如裸机或RTOS),可通过STM32CubeMX工具配置PHY: 1. 在Pinout选项卡中启用USB OTG模块。 2. 在Middleware中选择USB库(如USB_DEVICE或USB_HOST)。 3. 生成代码后,检查`usb_otg.c`中的`HAL_PCD_MspInit`函数,确认PHY时钟和引脚初始化正确。 #### 5. **Linux内核驱动适配** - **PHY驱动源码**:Linux内核中PHY驱动通常位于`drivers/phy/st/phy-stm32-usbphyc.c`。 - **调试方法**:通过`dmesg`查看内核日志,确认是否成功探测到PHY(如`phy-stm32-usbphyc 5a006000.usbphyc: PHY registered`)[^1]。 #### 6. **硬件设计验证** - **外部PHY芯片**:若使用外部PHY(如USB3300),需确认硬件连接正确(如UTMI接口、时钟信号)。 - **内置PHY**:对于内置PHY的型号(如STM32F4),需在代码中启用`HAL_PCD_SetPhyType`设置PHY类型。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NW嵌入式开发

感谢您的支持,让我们一起进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值