基于ESP32驱动LAN8720以太网收发器

news2024/9/21 2:33:42

文章目录

  • 一、LAN8720A简介
  • 二、引脚说明
    • 芯片管脚配置
    • 示例演示

一、LAN8720A简介

  LAN8720A是低功耗的10/100M以太网PHY芯片,支持通过RMII接口和MAC层通信。它包含一个全双工10-BASE-T/100BASE-TX收发器,支持10Mbps和100Mbps操作。可以自动协商以自动确定最佳速度和双工操作模式。支持 HPAuto-MDIX 自动翻转功能,无需更换网线即可将连接更改为直连或交又连接。特性如下:

  1. 10/100M
  2. 支持RMII接口
  3. 支持全双工和半双工
  4. 使用外部25M晶振,LAN8720A内部集成 PLL可以将25M倍频到50MHz参考时钟给MAC层使用
  5. 支持自协商模式 支持HPAuto-MDIX自动翻转
  6. 支持SMI串行管理接口

LAN8720A内部框图:

LAN8720A系统框图:左边10/100M网络控制器。 右边的RJ45就是网口。 下边框图说明需要一个外部晶振。

二、引脚说明

引脚描述
TX1PHY收发器发送的两位数据第1位数据发送引脚
NC不连接
TX_EN数据发送使能指示TXD[1:0]上存在有效的发送数据,用于控制发送数据的使能
TX0PHY收发器发送的两位数据第0位数据发送引脚
RX0PHY收发器接收的两位数据第0位数据接收引脚
RX1PHY收发器接收的两位数据第1位数据接收引脚
nINT/RETCLK中断输出低有效/参考时钟信号輸出
CRS载波侦听/接收数据有效,用于指示是否检测到网络上的载波
MDIO串行管理接口的输入输出引脚,用于读写PHY寄存器
MDC串行管理接口的时钟引脚,用于同步数据传输
VCC3.3V

芯片管脚配置

PHY地址配置:PHYAD[0]引脚用于配置 SMI通信的 LAN8720A 地址,在芯片内部该引脚已经自带下拉电阻,默认认为 0(即外部悬空不接),在系统上电时会检测该引脚获取得到 LAN8720A的地址为 0 或者 1,并保存在特殊模式寄存器(R18)的 PHYAD位中,该寄存器的 PHYAD有 5个位,在需要超过 2个 LAN8720A 时可以通过软件设置不同 SMI通信地址。模块的硬件设计PHYAD[0]引脚默认上拉到高电平,即PHY address为1。

nINT/REFCLKO参考时钟配置:配置REF_CLK输入模式(nINT)和REF_CLK输出模式。配置模式决定了nINT/REFCLKO引脚的功能。nINTSEL配置带锁定在POR和nRST的上升沿。默认情况下,nINTSEL通过内部上拉电阻器配置为nINT模式。

当 nINTSEL引脚为低电平时,REF_CLK输出模式,设备会倍频到50MHz RMII REF_CLK,nINT中断不可用。REF_CLK输出模式允许使用低成本的25MHz晶体作为REF_CLK的参考。这种配置可能会降低系统成本。

当 nINTSEL引脚为高电平时,50MHz REF_CLK在XTAL1/CLKIN引脚上被驱动。即需要外部提供50MHz参考时钟给CLKIN引脚。

MODE[2:0]模式配置:选择网络通信速率和工作模式,可选10Mbps 或 100Mbps 通信速度,半双工或全双工工作模式。将MODE引脚都设置为1,让 LAN8720A 启动自适应功能,它会自动寻找最优工作方式。其中,复用引脚如下:

配置MODE[2:0] 引脚,支持以下几种模式:

REGOFF内部+1.2V稳压器配置:配置是否使用内部稳压器,当REGOFF引脚为高电平时选择外部+1.2V稳压器,通过VDDCR引脚输入+1.2V 电压提供。当REGOFF引脚为低电平时选择内部+1.2V稳压器。注意,由于REGOFF与 LED1 引脚复用,必须适当考虑LED的极性。模块的VDDCR引脚位置如下:

示例演示

  1. 引脚接线
ESP32LAN8720模块
GPIO21TX_EN
GPIO19TX0
GPIO22TX1
GPIO25RX0
GPIO26RX1
GPIO27CRS
GPIO23MDC
GPIO18MDIO
  1. 示例代码
#include <ETH.h> //引用以使用ETH
#include <WiFiUdp.h> 

#define ETH_ADDR        1
#define ETH_POWER_PIN  -1
#define ETH_MDC_PIN    23
#define ETH_MDIO_PIN   18
#define ETH_TYPE       ETH_PHY_LAN8720
#define ETH_CLK_MODE   ETH_CLOCK_GPIO17_OUT

WiFiUDP Udp;                      //创建UDP对象
unsigned int localUdpPort = 2333; //本地端口号

void setup()
{
  Serial.begin(115200);
  Serial.println();

  ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK_MODE); //启用ETH
  while(!((uint32_t)ETH.localIP())) //等待获取到IP
  {

  }
  Serial.println("Connected");
  Serial.print("IP Address:");
  Serial.println(ETH.localIP());

  Udp.begin(localUdpPort); //启用UDP监听以接收数据
}

void loop()
{
  int packetSize = Udp.parsePacket(); //获取当前队首数据包长度
  if (packetSize)                     //如果有数据可用
  {
    char buf[packetSize];
    Udp.read(buf, packetSize); //读取当前包数据

    Serial.println();
    Serial.print("Received: ");
    Serial.println(buf);
    Serial.print("From IP: ");
    Serial.println(Udp.remoteIP());
    Serial.print("From Port: ");
    Serial.println(Udp.remotePort());

    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); //准备发送数据
    Udp.print("Received: ");    //复制数据到发送缓存
    Udp.write((const uint8_t*)buf, packetSize); //复制数据到发送缓存
    Udp.endPacket();            //发送数据
  }
}
  1. 示例结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习与OpenCV:解锁计算机视觉的无限可能

在科技日新月异的今天&#xff0c;计算机视觉作为人工智能领域的一颗璀璨明珠&#xff0c;正以前所未有的速度改变着我们的生活与工作方式。而《深度学习》与OpenCV&#xff0c;作为这一领域的两大重要工具&#xff0c;更是为计算机视觉的入门与深入探索铺设了坚实的基石。本文…

Python集成学习和随机森林算法使用详解

概要 集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它通过将多个弱学习器的结果结合起来,形成一个强学习器,从而提升模型的准确性和稳健性。随机森林(Random Forest)是集成学习中一种非常流行且有效的算法,特别适用于分类和回归任务。本文将详细介绍Pyt…

【图论】Tarjan算法(强连通分量)

一、Tarjan算法简介 Tarjan算法是一种由美国计算机科学家罗伯特塔杨&#xff08;Robert Tarjan&#xff09;提出的求解有向图强连通分量的线性时间的算法。 二、强连通分量的概念 在有向图 G G G 中&#xff0c;如果任意两个不同的顶点相互可达&#xff0c;则称该有向图是强…

平价电容笔排行榜:2024开学季五大高人气电容笔测评推荐 !

随着开学季的到来&#xff0c;无纸化学习再次成为热议话题&#xff0c;而电容笔作为支持这一趋势的重要配件&#xff0c;自然也备受瞩目。面对市场上琳琅满目的品牌选择&#xff0c;找到最适合自己需求的那一款就成了一个不小的挑战。不用担心&#xff0c;作为一名资深的数码产…

基于FPGA的SD NAND Flash数据读写实现

1、存储芯片分类 目前市面上的存储芯片&#xff0c;大致可以将其分为3大类&#xff1a; ① EEPROM EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器&#xff0c;是一种掉电后数据不丢失的存储芯片。EEPROM 可以在电脑上或专用设备…

【初阶数据结构】复杂度

b站复杂度链接 另一个复杂度链接 复杂度笔记

利用大型语言模型协作提升甲状腺结节超声诊断的一致性和准确性| 文献速递-基于深度学习的癌症风险预测与疾病预后应用

Title 题目 Collaborative Enhancement of Consistency and Accuracy in US Diagnosis of Thyroid Nodules Using Large Language Models 利用大型语言模型协作提升甲状腺结节超声诊断的一致性和准确性 Background 背景 Large language models (LLMs) hold substantial …

git仓库删除某个历史提交

目录 问题情况1情况2 问题 如果我们在开发过程中&#xff0c;存在一些验证性的提交或者失误性的提交&#xff0c;那么这些提交我们不想要了&#xff0c;怎么办&#xff1f; 情况1 如果是想要删除某个commitid之后的所有提交 那么git reset 可以满足你 git reset --hard 你要…

2001-2023年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线等300+个关键词)

2001-2023年上市公司数字化转型年报词频统计&#xff08;吴非、赵宸宇、甄红线&#xff09; 1、时间&#xff1a;2001-2023年 2、来源&#xff1a;上市公司年报 3、参考文献&#xff1a;企业数字化转型与资本市场表现——来自股票流动性的经验证据&#xff08;吴非&#xff…

电脑浏览器打不开部分网页

电脑浏览器打不开部分网页 时间: 2024-08-25 问题描述: 电脑突然打不开部分网页 例如腾讯文档 夸克网盘 但其他网页能够正常打开 原因 可能为域名解析问题 更改DNS即可解决 解决办法 控制面板–> 网络和Internet—>网络连接—> WLAN----> 属性 —> Interne…

spring security怎么生成JWT返回前端,以及怎么自定义JWT认证过滤器

怎么生成JWT返回前端 1.先写一个类,里面含有jwt的生成解析验证过期时间的方法 package com.lzy.util;import io.jsonwebtoken.*; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.…

7-6 分段函数2

计算分段函数&#xff0c;测试数据分别是-1、5、12。 输入格式: 输入一个数。 输出格式: 直接输出保留6位小数的结果&#xff0c;没有其它任何附加字符&#xff0c;没有宽度控制。 输入样例: 11输出样例: 0.999912输入样例: 7输出样例: 8.000000 #include <stdio.h…

单片机裸机程序——程序架构

目 录 程序架构等同于思想体系一、前后台顺序法二、时间片轮询法 程序架构等同于思想体系 建一栋楼房&#xff0c;地基要先设计好&#xff0c;而不是马上砌砖&#xff0c;地基和布局都合理&#xff0c;房子就住得舒服&#xff0c;也不会闹心。 写一段程序也一样&#xff0c;程…

c++,python实现网络爬虫

前言&#xff1a; 社交网络中用户生成的海量数据&#xff0c;社交网络数据的多样性和复杂性 如何高效地从海量的数据中获取和处理我们需要的信息资源&#xff1f; 该微博爬虫能够从社交网络平台中地提取文本、图片和用户之间的转发关系&#xff0c;并将这些数据结构化存储到…

Python的Windows GUI自动化之Pywinauto(四)

引言&#xff1a; 我们上章节中打开了一个应用程序后&#xff0c;并打印了所有的控件信息&#xff0c;这些对于工具无法定位到的控件有很好的协助作用&#xff08;当然这个可以作为主要的查找控件的用法&#xff0c;也可以辅助使用&#xff0c;我一般是把这个作为辅助使用&…

【C++】初识C++模板与STL

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理 本章将简单分享C模板与STL相关知识&#xff0c;与之相关更多知识将留到下次更详细地来分享给大家 &#x1f3…

MySQL与ES数据实时同步,双写一致

一、简介 在项目的开发与运维过程中&#xff0c;MySQL 是业务数据库的核心角色&#xff0c;以其强大的事务处理能力和数据完整性保障&#xff0c;支撑着系统的稳定运行。随着数据量的急剧增长和查询复杂度的不断提升&#xff0c;单一依赖 MySQL 进行高效的数据检索显得日益吃力…

centos安装软件

1.centos 安装 unrar 提示找不到 使用EPEL仓库&#xff1a; 首先&#xff0c;你需要安装EPEL仓库&#xff1a; yum install epel-release 然后&#xff0c;尝试再次安装unrar&#xff1a; yum install unrar 编译安装&#xff1a; 下载源代码&#xff1a;wget http://www.rarla…

对耳朵伤害最小的耳机类型是哪种?五款口碑绝佳机型安利!

​目前来说&#xff0c;开放式耳机应该算是对耳朵伤害最小的耳机了。当今耳机市场上&#xff0c;开放式耳机以其舒适的佩戴和创新的非入耳设计赢得了众多消费者的喜爱。这种耳机让你在聆听音乐的同时&#xff0c;还能清晰地感知周围环境的声音&#xff0c;便于与人交流&#xf…

clickhouse 原理详解

1、MPP数据库简介 1.1、什么是OLTP与OLAP&#xff1f; 1.1.1、OLTP(OnLine Transaction Processing ) 联机事务处理 系统&#xff0c;例如mysql。擅长事务处理&#xff0c;在数据操作中保持着很强的一致性和原子性 &#xff0c;能够很好的支持频繁的数据插入和修改 &#x…