LAN8742 是一种常用的 PHY 芯片,可以使用其提供的硬件复位功能来复位芯片。在 LAN8742 的数据手册中,有关硬件复位的详细信息可以在 “Power-on Reset and Hardware Reset” 一章中找到。
硬件复位通常通过将 PHY 芯片的 RESETB 引脚拉低一段时间来实现。具体而言,您可以将 RESETB 引脚连接到一个 GPIO 引脚,并在需要复位芯片时将该引脚拉低。为了确保复位有效,您需要在 RESETB 引脚上保持低电平至少 10us,然后将其拉高。
以下是一些可能有用的代码片段,演示如何使用 GPIO 引脚来复位 LAN8742 芯片:
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
/* 获取 GPIO 设备 */
struct rt_device *gpio_dev = rt_device_find("gpio0");
/* 配置 GPIO 引脚为输出模式 */
rt_pin_mode(PIN_ENET_RST, PIN_MODE_OUTPUT);
/* 将 RESETB 引脚拉低 */
rt_pin_write(PIN_ENET_RST, PIN_LOW);
/* 延时至少 10us */
rt_thread_mdelay(10);
/* 将 RESETB 引脚拉高 */
rt_pin_write(PIN_ENET_RST, PIN_HIGH);
这里假设 RESETB 引脚连接到了名为 “gpio0” 的 GPIO 设备上,并将其连接到了板子上的名为 “PIN_ENET_RST” 的引脚上。如果您的引脚不同,请相应地更改引脚名称。
请注意,硬件复位将删除 PHY 芯片中的所有寄存器设置,因此您需要重新配置 PHY 芯片以使其工作。在 RT-Thread 中,您可以使用 rt_hw_lan8742_init
函数初始化 LAN8742 PHY 芯片,并设置其速度、双工模式等参数。
【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~