1 Star 0 Fork 2

surelion/easyio-lib-for-esp32

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
01_blink
02_ledBlink
03_easyio_led
04_GPIO_IN_OUT
05_Task
06_GPIO_INTR
07_GPIO_INTR_Queue
08_KEY
09_TouchPad
10_LEDc_PWM
11_ADC
12_DAC
13_MCPWM_DC_MOTOR
14_MCPWM_HALF_BRIDGE
15_MCPWM_SERVO
16_MCPWM_CAPTURE_2Timer6IO
17_PCNT_Encoder
18_RMT_IR_RX
19_RMT_IR_RX_TX
20_RMT_1WIRE_WS2812B
21_UART1_TX_RX
22_UART0_TX_RX_QUEUE
23_UART0_TX_RX_QUEUE_PATTERN
24_UART1_RS485_FLOWCON
25_I2C_TOOLS
26_I2C_MPU6050
27_I2C_AHT20
27x1_I2C_SHT30
27x2_I2C_PCF8563_RTC
28_SPI_LCD_ILI9341_9488_9481_ST7735_7789_7796_HX8357C
29_SPI_AS5047P
30_SPI_TLE5012B
31_SPI_LCD_I2C_TOUCH_CTP
32_NVS
33_FATFS_SD_CARD_VFS
34_FATFS_SD_CARD_LCD
35_JPG_LCD_DMA
35x_JPG_LCD_DMA_time
36_JPG_LCD_DMA_EFFECT
37_JPG_LCD_DMA_SD_PHOTO_ALBUM
38_WIFI_station
39_WIFI_softAP
40_WIFI_tcp_client
41_WIFI_tcp_server
42_WIFI_udp_client
43_WIFI_udp_server
44_WIFI_http_request
45_WIFI_http_request_weather_cjson
46_WIFI_http_request_weather_cjson_free_15days
47_WIFI_MQTT
48_mbedtls_sha1_md5_AES_HmacSha1_base64
49_WIFI_MQTT_Aliyun_IOT_Platform
50_WIFI_SNTP_DeepSleep
51_WIFI_Scan
52_WIFI_SmartConfig_EspTouch_AirKiss
53_Blufi
54_ETH_DHCP
.vscode
components/easyio_lib
image
main
CMakeLists.txt
Makefile
README.md
sdkconfig
sdkconfig.old
easyio_lib
image
BOM_PCB_ESP32-DEV_rev0.html
Q群827686418.png
README.md
Schematic_ESP32-IOT-KIT_2022-01-16.pdf
cleanBuild.bat
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
4年前
4年前
Loading...
README

54_ETH_DHCP

一、例程简介

  本例程取自IDF的以太网Demo - basiciperf。更多以太网例程可见 eth2ap

  将原有的以太网注册过程分离出来,封装进easyio,并通过预留的事件组作为对外的通知。

  以太网注册成功,并DHCP获得到IP后,会将 eth_event_group 事件组的 GOTIP_BIT 置位。用户可在外部,由此事件组进行后续的事件处理。

  ETH详细API说明:

  ESP-IDF ESP-NETIF

  ESP-IDF Ethernet

  乐鑫以太网POE开发板 ESP32-Ethernet-Kit V1.2 入门指南


二、普通工程如何修改为以太网工程?

  • 1、修改 components/easyio_lib 目录下 CMakeLists.txt 文件。将 "src/eth_connect.c" 这行取消注释。 eth_modify_1
  • 2、删除原有项目根目录下的sdkconfig配置文件。
  • 3、修改Kconfig.projbuild文件,将与ETH有关联的内容复制过来。 eth_1
  • 4、menuconfig。
  • 5、修改PHY型号、引脚、时钟。

对照自己的PHY型号和连接的GPIO进行修改。例如ESP-IOT-KIT使用的PHY为LAN8720,引脚使用ESP32的默认引脚,RESET引脚空置不连接。 eth_2

  • 6、修改时钟:因为ESP-IOT-KIT开发板使用的PHY,是插接的LAN8720模块。LAN8720模块自带50MHz晶振作为它的时钟源,故不需要ESP32对其提供时钟。 但这里的时钟模式只有两种可选:输入、输出。如果选择了输入,那么ESP32的EMAC时钟就会切换为外部输入,而LAN8720的时钟对外输出需要改驱动,会很麻烦。所以这里选择为输出,但不占用GPIO。相当于ESP32和LAN8720各自使用自己的时钟源。 eth_3
  • 7、其他的选项按照默认的即可。最后保存,退出。
  • 8、完善main,编译下载运行。
  • 9、将ESP-IOT-KIT开发板 的液晶屏、TF卡拔出,将LAN8720模块插入。
  • 【注意】液晶屏、TF卡可以不拔出,但因为与ETH共用IO口,会导致LAN8720的识别和联网速度特别慢。仅插接LAN8720,从开机到DHCP获得IP的时间一般不会超过5s。 而同时插接液晶屏、TF卡,所用时间会延长,差的情况有可能导致ETH不能正常连接。
  • 10、插入网线,运行程序,观察终端输出,等待从路由器或交换机获得到IP。以太网可用。
  • 11、例程中,等待以太网获得IP后,会将LED常量。
  • 12、获得到IP后,网线、LAN8720模块均可热插拔,热插拔后并不妨碍自动连接。

三、以太网PHY型号支持

目前为止,ESP-IDF 最多支持四种以太网 PHY:LAN8720IP101DP83848RTL8201,额外的 PHY 驱动需要用户自己实现。

除此之外,esp_eth组件可以驱动集成MAC和PHY并提供通用通信接口(如SPI、USB等)的第三方以太网模块,如DM9051


四、运行现象

将LAN8720模块从右侧插接入ESP-IOT-KIT开发板。

连接网线到路由器或交换机。

lan8720_connect

编译下载运行。

I (0) cpu_start: App cpu up.
I (294) heap_init: Initializing. RAM available for dynamic allocation:
I (301) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (307) heap_init: At 3FFB38A8 len 0002C758 (177 KiB): DRAM
I (314) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (320) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (326) heap_init: At 4008AEC8 len 00015138 (84 KiB): IRAM
I (333) cpu_start: Pro cpu start user code
I (351) spi_flash: detected chip: generic
I (352) spi_flash: flash io: dio
I (352) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (360) main: [APP] Startup..
I (360) main: [APP] Free memory: 295836 bytes
I (370) main: [APP] IDF version: v4.2.2-dirty
I (390) system_api: Base MAC address is not set
I (390) system_api: read default base MAC address from EFUSE
I (410) esp_eth.netif.glue: 08:3a:f2:4a:3f:0f
I (410) esp_eth.netif.glue: ethernet attached to netif
I (2110) eth_example: Ethernet Started
I (2110) gpio: GPIO[33]| InputEn: 1| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 
I (2110) eth_example: Ethernet Link Up
I (2110) eth_example: Ethernet HW Addr 08:3a:f2:4a:3f:0f
I (3370) esp_netif_handlers: eth ip: 192.168.1.52, mask: 255.255.254.0, gw: 192.168.0.1
I (3370) eth_example: Ethernet Got IP Address
I (3370) eth_example: ~~~~~~~~~~~
I (3370) eth_example: ETHIP:192.168.1.52
I (3380) eth_example: ETHMASK:255.255.254.0
I (3380) eth_example: ETHGW:192.168.0.1
I (3390) eth_example: ~~~~~~~~~~~
W (3390) main: Got IP

未获得IP前,开发板上的LED一直闪烁;获得IP,输出 Got IP后,LED常亮,作为状态指示。

电脑ping命令,来测试ESP32设备在局域网内。

【注意】ping测试时,电脑和ESP32要在同一路由器下或交换机下,且都是使用以太网。

终端输出的IP是多少,就ping哪个IP。

ping


五、注意事项

  • 以太网注册成功前,不可将LAN8720模块拔出,拔出会导致不能识别PHY而反复重启。

  • ping测试时,电脑和ESP32要在同一路由器下或交换机下,且都是使用以太网。不能电脑使用WIFI,而ESP32使用以太网。

  • 编写程序时,使用 eth_event_group 之前,一定要先注册以太网驱动 register_ethernet();。不然也会造成反复重启。

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/surelion/easyio-lib-for-esp32.git
git@gitee.com:surelion/easyio-lib-for-esp32.git
surelion
easyio-lib-for-esp32
easyio-lib-for-esp32
master

搜索帮助