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

市面上有開(kāi)發(fā)板是 USB Type C接口,請(qǐng)選擇合適USB接口的數(shù)據(jù)線來(lái)連接。
4.2.開(kāi)發(fā)版硬件接法
1.)在模塊的硬件部分,依照合宙ESP32 C3開(kāi)發(fā)版的Pinout接口,連接DM9051ANX開(kāi)發(fā)版對(duì)應(yīng)的SPI接口,簡(jiǎn)單整理下兩者的硬件接法。
| 引腳名 |
ESP32 C3 開(kāi)發(fā)版 |
DM9051ANX 開(kāi)發(fā)板 |
||
| Pinout | 說(shuō)明 | Pinout | 說(shuō)明 | |
| 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開(kāi)發(fā)版Pin Out示意圖

合宙ESP32-C3開(kāi)發(fā)版的硬件設(shè)計(jì)文檔,請(qǐng)參考連結(jié)網(wǎng)址:https://wiki.luatos.com/chips/esp32c3/hardware.html
3.)DM9051ANX開(kāi)發(fā)版SPI接口Pin Out表

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


*步驟2:建議同學(xué)們選擇V 5.4離線下載版本,避免出現(xiàn)網(wǎng)絡(luò)傳輸?shù)膯?wèn)題。

點(diǎn)擊離線下載版本,依照當(dāng)下條件選擇合適自己的語(yǔ)言版本。


*步驟3:建議要點(diǎn)選“應(yīng)用修復(fù)”避免接下來(lái)運(yùn)行時(shí),出現(xiàn)錯(cuò)誤。




*步驟4:在安裝中途,ESP IDF會(huì)出現(xiàn)一個(gè)窗口:是否安裝USB轉(zhuǎn) UART芯片驅(qū)動(dòng)?


*步驟5:最后,終于完成安裝了!慢點(diǎn),因?yàn)槲覀冋{(diào)試項(xiàng)目時(shí),還需要用串口,可以找自已習(xí)慣的串口軟件,微軟也有提供免費(fèi)的工具。

*步驟6:接下來(lái),我們來(lái)進(jìn)入”串口調(diào)試助手”,硬件接口是用到UART接口,而波特率設(shè)置為 115200,并開(kāi)啟左下角的 “終端模式”,方便我們輸入指令

六、編譯以太網(wǎng)DM9051ANX例程
ESP-IDF開(kāi)發(fā)工具提供一系列靈活好用的 API,為外部以太網(wǎng)通信以及外部 SPI有線以太網(wǎng)SPI-Ethernet通信模塊提供良好支持,更多說(shuō)明請(qǐng)參考下列鏈結(jié):
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工程開(kāi)始。
我們點(diǎn)擊桌面上的ESP-IDF 5.4 CMD或 ESP-IDF 5.4 PowerShell,這兒使用的是后者,相關(guān)的工具連接都配置好了,我們不用再手動(dòng)去配置。
然后,我們切換到 c:Espressifframeworksesp-idf-v5.4examplesget-startedhello_world目錄中。

*步驟1:先進(jìn)行ESP32 C3配置:idf.py set-target esp32c3

*步驟2:之后就可以開(kāi)始編譯:idf.py build

*步驟3:如果沒(méi)出現(xiàn)錯(cuò)誤,我們就可以用idf.py -p COM3 flash命令燒寫(xiě),在這里要注意的是“COM”要大寫(xiě),然后按下Enter回車(chē)鍵。

*步驟4:這時(shí)候,我們可以在”串口調(diào)試助手”中,看到ESP C3與SPI以太網(wǎng)DM9051ANX模塊運(yùn)行起來(lái),并且輸出 “Hello world!”,那就表示SPI以太網(wǎng)DM9051ANX通信成功。

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

*步驟2:這時(shí),我們對(duì)ESP32 C3開(kāi)啟 DM9051以太網(wǎng)通信功能:idf.py menuconfig

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

*步驟4:我們?cè)?“SPI Ethernet”菜單中,點(diǎn)選”DM9051 Module”

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


關(guān)閉 DHCPS功能

退出時(shí)記得儲(chǔ)存

*步驟6:開(kāi)始編idf.py build

*步驟7:完成后,進(jìn)行燒寫(xiě)idf.py -p COM3 flash

*步驟8:完成后,可以在串口看到系統(tǒng)跑起來(lái),并且取得ip 地址,使用 ping 功能測(cè)試,結(jié)果正常。

七、Iperf網(wǎng)絡(luò)性能測(cè)試工具實(shí)測(cè)
7.1相關(guān)配置
在這里和之前配置進(jìn)行都一樣,只是測(cè)試代碼在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這兒使用串口調(diào)試助手軟件,接著輸入命令 iperf -u -c xxx.xxx.xxx.xxx -t 60 -i 3
(相關(guān)說(shuō)明,請(qǐng)參考 c:Espressifframeworksesp-idf-v5.4examplesethernetiperfREADME.md文檔)

7.3 DM9051ANX網(wǎng)口性能數(shù)據(jù)
DM9051ANX網(wǎng)口芯片在 100兆全雙工模式,得出實(shí)測(cè)數(shù)據(jù)為 11.63Mbps,還行!我覺(jué)得應(yīng)該可以更快一些,再重新運(yùn)行idf.py menuconfig,修改 SPI clock speed (Mhz)到 60Mhz,這個(gè)SPI clock要依照使用的網(wǎng)線質(zhì)量去作調(diào)整,這樣測(cè)試下來(lái),我留意到,當(dāng)SPI Clock超過(guò) 60Mhz時(shí),就有些不穩(wěn)定了。

重新調(diào)整SPI clock后,再測(cè)試一次!

最后測(cè)出DM9051ANX網(wǎng)口性能為 22.12Mbps,這樣的網(wǎng)口數(shù)據(jù)在一般行業(yè)的項(xiàng)目應(yīng)用是足夠了!不僅如此,以這樣的性能數(shù)據(jù),更可以擴(kuò)大ESP32 C3/C6+DM9051ANX無(wú)線網(wǎng)關(guān)的應(yīng)用范圍!
審核編輯 黃宇
-
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
5997瀏覽量
180796 -
SPI
+關(guān)注
關(guān)注
17文章
1885瀏覽量
101213 -
ESP32
+關(guān)注
關(guān)注
26文章
1194瀏覽量
21668
發(fā)布評(píng)論請(qǐng)先 登錄
VSCode + ESP-IDF環(huán)境下給ESP32-S3項(xiàng)目添加頭文件
idf.py --version` 提示“不是內(nèi)部或外部命令”(ESP32S3小智調(diào)試中遇到)
低成本開(kāi)源!用樂(lè)鑫科技ESP32-S3開(kāi)發(fā)板輕松驅(qū)動(dòng)無(wú)刷電機(jī),保姆級(jí)教程來(lái)了!
SPI以太網(wǎng)口方案DM9051ANX與W5500的BOM物料清單一覽
LVGL實(shí)戰(zhàn)指南:手把手教你玩轉(zhuǎn)ESP32-S3 2.8寸串口屏UI開(kāi)發(fā)
SPI以太網(wǎng)口芯片DM9051ANX在ESP32 C3進(jìn)行iPerf測(cè)試
DM9051ANX與W5500網(wǎng)口性能與規(guī)格比較
ESP32與DM9051ANX開(kāi)發(fā)版引腳接法說(shuō)明
全開(kāi)源!從安裝到燒錄,手把手教你用ESP32-P4-TINY開(kāi)發(fā)板實(shí)現(xiàn)一秒閃白光!
ESP32 添加SPI以太網(wǎng)口芯片DM9051ANX通訊開(kāi)發(fā)指導(dǎo)以及ESP IDF V.5.4介紹(精選筆記)[手把手教程,圖多消化好]
評(píng)論