前言
最近公司有新項目會用到 ESP32系列芯片,需要添加有線以太網口,我對這一塊不熟悉,可以說是新手小白,那該如何準備開發工作及快速入門呢?讓我以這份紀錄來回顧當初新項目ESP32硬件開發、軟件環境ESP-IDF V5.4以及運行有線以太網DM9051ANX與通信演示。
一、概述
本篇文章旨在介紹ESP32芯片,SPI有線以太網芯片DM9051ANX以及ESP IDF等。
ESP32 C系列具有高性能、高集成、低功耗和多種接口的特點,可為獨立系統或從設備提供 Wi-Fi應用功能。
而SPI以太網芯片DM9051ANX體積小,QFN24管腳包裝,功耗更低以及周邊RBOM成本更省等有優點,將ESP32 C與DM9051ANX作為簡易型網關方案,是一個性價比高,並符合行業實際應用的方案捆綁。
此篇帖子以ESP IDF最新版V5.4來進行開發與調適。
二、ESP32 C3模塊介紹&產品定位
在這里說下為什么選擇ESP32 C3這樣的方案來做行業網關,當初選型ESP32 S3與C3選型時,兩者同樣支持IEEE 802.11b/g/n 2.4G以及Bluetooth 5 & Bluetooth mesh,索性自己就做了規格比較:
| ESP32 C3 | ESP32 S3 | |
| CPU | 單核RISC-V | 雙核CPU SoC |
| 主頻 | 160MHz | 240MHz |
| SRAM | 400KB | 512KB |
| GPIO | 22根 | 45根 |
| SPI | 3個 | 4個 |
| UART | 2個 | 3個 |
| LCD接口 | 無 | 1個 |
| DVP攝像頭接口 | 無 | 1個 |
除了兩者規格比較之外,在實際應用上,同學稍微作下功課,就可以知道C3普遍是做無線應用,如果遇到需要有線以太網口的場景,我們其實可以利用SPI、UART等GPIO較少的硬件街口,作為對外通信,在這里我選用在市場上廣泛被采用且僅4條線通信的SPI接口與以太網進行通信。這樣一來,C3可作無線網關帶網口應用,主要任務是做無線與有線數據之間的傳輸,很適合各行業應用;但是,如果項目要求C3不僅要做傳輸數據,還要處理其他應用功能,這種多任務處理就不是C3擅長了。而S3就不同了,S3在作數據傳輸時,同時可以處理外設功能,可以有一定程度的響應速度,而且AI應用開發資源豐富。做一個小總結,我們可以這樣理解,要多任務任務處理、AI應用功能等,S3比較合適,價格也稍貴些,畢竟規格擺在那兒;如果要做一般應用且單一任務,例如:無線網關帶有線網口應用,C3就有性價比了。
三、DM9051ANX介紹
DM9051ANX是一個SPI接口以太網芯片,24管腳OFN包裝,自帶MAC傳輸層與10/100兆PHY,以SPI接口與主控進行通信,相較于老款,DM9051ANX體積更小,功耗更低、能節省外部周圍零件,降低RBOM成本,每個芯片內置獨立MAC地址,并有1.8V, 2.5V, 3.3V I/O電壓可供選擇,適用于各種MCU與CPU等各式主控的SPI接口以太網通信需求。
四、開發環境
4.1準備工作
1個ESP32開發板:我手上的開發板是合宙ESP32-C3-xxxx
1個DM9051ANX開發。
1條USB數據線:Type A轉 Micro-B
1臺電腦:Windows微軟系統

市面上有開發板是 USB Type C接口,請選擇合適USB接口的數據線來連接。
4.2.開發版硬件接法
1.)在模塊的硬件部分,依照合宙ESP32 C3開發版的Pinout接口,連接DM9051ANX開發版對應的SPI接口,簡單整理下兩者的硬件接法。
| 引腳名 |
ESP32 C3 開發版 |
DM9051ANX 開發板 |
||
| Pinout | 說明 | Pinout | 說明 | |
| 3.3v | 18 | 3.3V | 11 | PWR_IN |
| gnd | 17 | GND | 9 | D_GND |
| SPI_CK | 19 | GPIO2 | 7 | SPI_CLK |
| SPI_MOSI | 20 | GPIO3 | 3 | SPI_MOSI |
| SPI_MISO | 21 | GPIO10 | 5 | SPI_MISO |
| INT | 22 | GPIO6 | 2 | SPI_INT |
| SPI_CS | 23 | GPIO7 | 1 | SPI_SS |

2.)合宙ESP32 C3開發版Pin Out示意圖

合宙ESP32-C3開發版的硬件設計文檔,請參考連結網址:https://wiki.luatos.com/chips/esp32c3/hardware.html
3.)DM9051ANX開發版SPI接口Pin Out表

DM9051ANX開發版
五、ESP-IDF安裝,配置
5.1使用版本( ESP-IDF v5.4 )
ESP-IDF是ESP32全系列芯片的官方開發工具,非常好用,我這里使用的是:ESP-IDF最新穩定版本 V5.4,相關版本介紹的文檔,請參考下面鏈結。
https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.1/esp32/versions.html
5.2 IDF軟件安裝流程說明(步驟1~6)
*步驟1:我們可以到樂鑫 IoT開發框架 (esp-idf)的文檔中心,去下載ESP-IDF。
https://docs.espressif.com/projects/esp-idf/zh_CN/stable/


*步驟2:建議同學們選擇V 5.4離線下載版本,避免出現網絡傳輸的問題。

點擊離線下載版本,依照當下條件選擇合適自己的語言版本。


*步驟3:建議要點選“應用修復”避免接下來運行時,出現錯誤。




*步驟4:在安裝中途,ESP IDF會出現一個窗口:是否安裝USB轉 UART芯片驅動?


*步驟5:最后,終于完成安裝了!慢點,因為我們調試項目時,還需要用串口,可以找自已習慣的串口軟件,微軟也有提供免費的工具。

*步驟6:接下來,我們來進入”串口調試助手”,硬件接口是用到UART接口,而波特率設置為 115200,并開啟左下角的 “終端模式”,方便我們輸入指令

六、編譯以太網DM9051ANX例程
ESP-IDF開發工具提供一系列靈活好用的 API,為外部以太網通信以及外部 SPI有線以太網SPI-Ethernet通信模塊提供良好支持,更多說明請參考下列鏈結:
https://docs.espressif.com/projects/esp-idf/zh_CN/v5.4/esp32/api-reference/network/esp_eth.html
6.1燒錄例程 (步驟1~4)
從 ESP-IDF中,在 examples目錄下的 get-started/hello_world工程開始。
我們點擊桌面上的ESP-IDF 5.4 CMD或 ESP-IDF 5.4 PowerShell,這兒使用的是后者,相關的工具連接都配置好了,我們不用再手動去配置。
然后,我們切換到 c:Espressifframeworksesp-idf-v5.4examplesget-startedhello_world目錄中。

*步驟1:先進行ESP32 C3配置:idf.py set-target esp32c3

*步驟2:之后就可以開始編譯:idf.py build

*步驟3:如果沒出現錯誤,我們就可以用idf.py -p COM3 flash命令燒寫,在這里要注意的是“COM”要大寫,然后按下Enter回車鍵。

*步驟4:這時候,我們可以在”串口調試助手”中,看到ESP C3與SPI以太網DM9051ANX模塊運行起來,并且輸出 “Hello world!”,那就表示SPI以太網DM9051ANX通信成功。

6.2以太網口功能演示(步驟1~8)
當成功通信后,我們來實際演示SPI以太網口DM9051ANX的通信功能,切換到 c:Espressifframeworksesp-idf-v5.4examplesethernetbasic目錄中。
*步驟1:與之前動作一樣,先配置ESP32 C3:idf.py set-target esp32c3

*步驟2:這時,我們對ESP32 C3開啟 DM9051以太網通信功能:idf.py menuconfig

*步驟3:在ESP-IDF菜單中,選擇 “Example Ethernet Configuration”

*步驟4:我們在 “SPI Ethernet”菜單中,點選”DM9051 Module”

*步驟5:另外還要修改 DHCPS功能,避免 DHCP和路由有沖突


關閉 DHCPS功能

退出時記得儲存

*步驟6:開始編idf.py build

*步驟7:完成后,進行燒寫idf.py -p COM3 flash

*步驟8:完成后,可以在串口看到系統跑起來,并且取得ip 地址,使用 ping 功能測試,結果正常。

七、Iperf網絡性能測試工具實測
7.1相關配置
在這里和之前配置進行都一樣,只是測試代碼在c:Espressifframeworksesp-idf-v5.4examplesethernetiperf
*步驟1:相同的命令流程:
idf.py set-target esp32c3
idf.py menuconfig
idf.py build
idf.py -p COM3 flash
7.2 Iperf命令
在PC端使用 Iperf軟件,我們輸入命令為 iperf -u -s ,而在ESP IDF這兒使用串口調試助手軟件,接著輸入命令 iperf -u -c xxx.xxx.xxx.xxx -t 60 -i 3
(相關說明,請參考 c:Espressifframeworksesp-idf-v5.4examplesethernetiperfREADME.md文檔)

7.3 DM9051ANX網口性能數據
DM9051ANX網口芯片在 100兆全雙工模式,得出實測數據為 11.63Mbps,還行!我覺得應該可以更快一些,再重新運行idf.py menuconfig,修改 SPI clock speed (Mhz)到 60Mhz,這個SPI clock要依照使用的網線質量去作調整,這樣測試下來,我留意到,當SPI Clock超過 60Mhz時,就有些不穩定了。

重新調整SPI clock后,再測試一次!

最后測出DM9051ANX網口性能為 22.12Mbps,這樣的網口數據在一般行業的項目應用是足夠了!不僅如此,以這樣的性能數據,更可以擴大ESP32 C3/C6+DM9051ANX無線網關的應用范圍!
審核編輯 黃宇
-
以太網
+關注
關注
41文章
6130瀏覽量
181440 -
SPI
+關注
關注
17文章
1894瀏覽量
101956 -
ESP32
+關注
關注
26文章
1219瀏覽量
22267
發布評論請先 登錄
idf.py --version` 提示“不是內部或外部命令”(ESP32S3小智調試中遇到)
低成本開源!用樂鑫科技ESP32-S3開發板輕松驅動無刷電機,保姆級教程來了!
SPI以太網口方案DM9051ANX與W5500的BOM物料清單一覽
LVGL實戰指南:手把手教你玩轉ESP32-S3 2.8寸串口屏UI開發
SPI以太網口芯片DM9051ANX在ESP32 C3進行iPerf測試
DM9051ANX與W5500網口性能與規格比較
全開源!從安裝到燒錄,手把手教你用ESP32-P4-TINY開發板實現一秒閃白光!
ESP32 添加SPI以太網口芯片DM9051ANX通訊開發指導以及ESP IDF V.5.4介紹(精選筆記)[手把手教程,圖多消化好]
評論