ESP32以太网(ETH)环境和参数配置,基于内部mac和外部PHY(LAN8720A)
基于ESP32的以太网配置问题网上比较杂,并且对开发板针对性较强,本文旨在解决配置ESP32的以太网(ETH)问题。小编为此花费了大量精力,希望给大家避坑
ESP32在网上的资料很多,但问题也各式各样。由于ESP32主要做wifi功能,因此对于以太网的资料也很少。相对应的开发板也很少。
本人使用的是淘宝上购买的雨甄机电的带网口的开发板(如下图)安信可ESP-32S
参考资料主要以热心博主《兴趣使然_》的(5条消息) ESP32 单片机学习笔记 - 06 - (以太网)Ethernet转Wifi_esp32 以太网_兴趣使然_的博客-CSDN博客这篇文章。
对于我一个小白来说,先得学习一些理论知识。
首先,以太网是局域网的通讯方式,以太网是具有TCP/IP协议,以太网常用接口有RJ45接口。
然后以太网的组成包括mac和phy芯片和RJ45的座子。然后一个芯片说支不支持网络说的是是否具有内部mac,不支持的就需要外接W5500等模块(W5500就是把mac和phy组合到一个芯片上,然后利用SPI的方式和主板通信)。(mac和phy芯片中间有种通信方式叫RMII或MII,类似于SPI的东西,对于运用来说,两者主要区别就是一个的信号线多,一个的信号线少)。(理论知识太多了,我也看不到太懂,这就是我的理解)。
然后利用VS code 创建一个工程,创建工程之前需要先下载ESP的插件,下载方法网上很多。下载完毕后,打开vscode,此时快捷方式输入ctrl+shift+p,打开工程示例。
打开工程示例后,根据左边的目录找到ethernet>>basic
选中目标项目后进行创建
此时项目创建完成(也可以使用idf工具创建,但代码不好编辑查找)
由于vs code编译较慢,因此,采用idf编译,烧录和观察,采用vs cod来编辑代码
此时打开idf工具,找到此项目(由于idf工具没有ls等命令,只有cd,因此需要记得自己项目保存的位置)
因为第一次编译较慢,因此我们先编译一下(骗人的,第一次编译慢,之后每次改配置编译都慢),输入编译命令 idf.py build
等待编译完成
编译完成后,我们先将代码烧录进入开发板,由于我采用的开发板是带烧录功能的,因此直接使用type C线接好就可以烧录。输入烧录命令idf.py -p COM7 flash (COM7具体情况来输入)
烧录完成后,此时可以运行一下观察现象(一般情况下,此时运行没有问题,就算完成了,但没有问题是基本不可能的,接坑才刚刚开始)
输入运行命令:idf.py -p COM7 monitor
此时观察log
我们出现的现象是
从打印我们可以看出是内存的问题,此时我们就需要修改配置了,修改方法有两种
方法一:采用idf工具修改,输入配置命令:idf.py menuconfig
输入命令idf.py menuconfig打开配置界面,进入Serial flasher config,按需将Flash size改为自己的大小。比较常用的两个模组:安信可ESP-32S、乐鑫ESP32-WROOM-32,flash都是4MB。连续按Esc退出,按y保存。
此时再编译烧录,发现代码已经正常运行,不需要再进行修改(这就结束了吗?哦呜阔斯诺特)我们的代码之所以能正常运行,是因为之前已经进行了配置,正常情况下你可能会出现以下问题
- 不断重启
- 复位超时
- w550错误
这些都是配置的问题,如果配置不对,你是解决不了这些问题的。
接下来就看看我们的配置(idf工具自行配置,作者英文不好,也不擅长使用命令,配置方式还是配置命令到配置界面配置)
按照如下方式进行配置:
不配置时钟会导致不断重启,参考(5条消息) 66 ESP32 ethernet\basic实验记录_esp32 以太网_Chasing_Chasing的博客-CSDN博客进行时钟配置
配置完毕后再编译代码烧录观察。如果不出意外就会出现正常打印到
Ethernet Started
看起来是正常了。但是等待一段时间后,后出现错误打印,也可能是我哪里配置的原因,反正是正常可用了(如下):
此时是因为网线没插或者网线坏了等原因,我们只需要接入正常网线即可出现如下打印,此时,网口配置完成(如果还出现错误,则需要自行排查了)
(什么是正常网线呢?一般情况下,未插入网线时,RJ45亮橙(黄)色灯,当网线正常时亮绿灯,可以数据交互时橙(黄)色灯闪烁,所以我们的正常情况为:绿灯亮起,橙(黄)色灯闪烁。
如何检验是否正常工作,一般我们采用的都是ping的方式,也就是拿两个网线将电脑和ESP32都接到同一个路由器,电脑上打开命令窗口,然后输入指令ping 192.168.1.1查看连接情况,ping通了就可以证明配置完成且可用。
此时,配置完成。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)