DAVICOM 聯傑國際 您所在的位置:网站首页 sfp光模块必须成对使用吗 DAVICOM 聯傑國際

DAVICOM 聯傑國際

2023-03-17 01:16| 来源: 网络整理| 查看: 265

前言

DM9051NP SPI介面Pin count比乙太網PHY的RMII mode數量少,PCBA佈局走線可更精簡,而DM9051NP driver方面,由於source code已出現在ESP IDF中,可見可靠度以及資料送收性能得到ESP32肯定。在ESP32 SPI clock 20MHz情況下,DM9051NP能充分發揮乙太網資料送收性能,相關 Iperf 測試數據,請參考第5章節。

1. DM9051 ESP32 12K開發版介紹

此DM9051 ESP32 12K(以下簡稱 『開發版』)是基於安可信ESP-12K來設計,以SPI介面轉乙太網IC:DM9051NP,為ESP-12K (核心模組:ESP32-S2) 增加了Ethernet功能,其中,DM9051NP只佔用了4根GPIO,原本ESP32參考設計為乙太網PHY,在RMII模式下,需佔用10根GPIO!

同樣地,DM9051NP也適合用在ESP32-WROOM32(核心模組:ESP32)的乙太網應用上,在有限數量GPIO介面,使用DM9051NP SPI介面轉乙太網IC,空出來的GPIO能讓MCU更方便開發。

1.1 ESP 12K模組介紹

ESP32-S2 提供豐富的介面,包括SPI,I2S,UART,I2C,LED PWM,LCD, Camera 介面,ADC,DAC,觸摸感測器,溫度感測器和多達43 個GPIO。

ESP-12 K 是由安信可科技開發的Wi-Fi 模組,該模組核心處理器ESP32-S2 是一款高集成度的低功耗Wi-Fi 系統級芯片 (SoC),專為物聯網 (IoT)、移動設備、可穿戴電子設備、智慧家居等各種應用而設計。

1.2 DM9051NP網卡芯片介紹

DM9051NP SPI介面IC是為了方便物聯網行業進行乙太網通信而開發出的解決方案。DM9051NP是帶有標準串列外設介面(Serial Peripheral Interface,SPI)的獨立乙太網控制器。DM9051NP符合IEEE 802.3 規範,還能以DMA 模式來傳輸,實現資料快速傳送。DM9051NP通過1個interrupt和SPI介面來進行與MCU的通訊,資料傳輸規格為10/100 M。

Package:32支接腳封裝,QFN IEEE 802.3az Energy Efficient Ethernet (EEE) 遠程喚醒 (WOL) Support fiber mode. EMI (Class B) and HBM ESD Rating 8KV 工業溫度規範:–40℃ to +85℃ 2. 實驗環境 2.1 應用:訪問網頁

此開發版利用HTTP協議,完成Wi-Fi轉傳乙太網的透傳功能,而兩端數據包進行雙向即時轉傳。

在透傳功能運行時,將開發版當作一個小網關 (無線熱點Wi-Fi AP),讓手機或平板等透過無線連上線,開發版會要求輸入密碼,待登入後,此時DM9051NP會釋放出ESP32 AP access point(eth2ap的功能),當手機連線後,不是開發版負責分發DHCP動態IP給手機,是router的DHCP Server進行動態IP分配,讓DM9051NP取得IP,接著ESP32-DM9051-eth2ap進行數據透傳,成功連線並訪問網頁。

如果router沒有DHCP Server功能的話,使用者可對手機設置靜態IP,也可訪問網頁。

3. 硬體部分 3.1 硬體環境

此開發版規格如下:

主要組件功能描述 P1DC 5V電源插座 J28

J29

選擇 USB (默認設置) or DC電源插座來供電 J28 ON: 5V 電源由 USB (J1)供應J28 OFF: 5V電源由 DC插座 (P1)供應 J29 ON: 5V電源由 DC插座 (P1)供應J29 OFF: 5V電源由 USB (J1)供應 J27

J30

選擇 USB (默認設置) or DC電源插座來為DM9051 以及 ESP 12K (ESP32-S2)供電 J27 ON: 5V電源由 USB (J1)供電給DM9051J27 OFF: 5V電源由 DC插座 (P1)供電給DM9051 J30 ON: 5V電源由 DC插座 (P1)供電給ESP 12K(ESP32-S2)J30 OFF: 5V電源由 USB (J1)供電給ESP32-S2 JP4

LED1

LED2

RJ45 網路介面插座為10M以及/100Mbps Ethernet,插座有LED1 與LED2燈號。(LED 燈號模式1: 默認設置) LED1 :綠燈表示 (Link / Active)ON: 連線中OFF: 不是連線中Flash: 資料傳送中 LED2 :黃燈(當連線中時,為網速燈號 )ON: 100M Full duplexOFF: 10M Full duplex U3DM9051 U2U2 ESP32-S2 Module : ESP-12K SW1啟動按鍵 SW2重啟按鍵 LED4LED燈號自訂義 (GPIO2) LED5電源燈號 J3ESP32-S2 I/O J2ESP32-S2 I/O J1Micro USB 插座 ( USB 5V供電 以及 通信) 表 3.1.1 3.2 SPI硬體接線部分

ESP32-S2 & DM9051NP的硬體設計:

DM9051NP通過SPI介面控制內部Register,並有interrupt輸出介面。ESP32-S2通過SPI1和DM9051NP相連,參考設計如下:

DM9051NPESP32 S2 SPI_CSPin17Pin13 SPI_CLKPin18Pin16 SPI_MOSIPin19Pin14 SPI_MISOPin20Pin15 SPI_INTPin24Pin18 表3.2.1 *在ESP IDF的Ethernet example (DM9051NP module):

在ESP32官方 routine code: ESP IDF examples/ethernet/中,介紹了DM9051NP SPI介面的硬體設計方法,下面鏈結網址的說明文檔README.md中,有建議線路的設計。請同學注意,此開發版的DM9051NP與ESP32-S2,基於走線以及IC擺放位置考量,做成如圖3.2.1/圖3.2.2的設計變更。 github.com/espressif/esp-idf/tree/1d7068e4be430edd92bb63f2d922036dcf5c3cc1/examples/ethernet

4. 軟體部分 4.1 ESP32 的軟體開發環境:ESP

此開發手冊使用 ESP-IDF (Espressif IoT Development Framework) 來開發乙太網口通訊,配置相關功能表,compiler以及下載routine code到 ESP32 S2。

對於如何搭建ESP32 開發環境,請各位同學參考ESP32官方搭建教學,這裡寫得很詳細,會帶著同學完成: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html

(1) HTTP簡介:

HTTP協議是Hyper Text Transfer Protocol超文字傳輸協定的縮寫,基於TCP傳輸層協議進行通信,採用Client端與Server端架構,屬於應用層協定。

ESP IDF有提供軟體模組使用和設計文檔,讓同學運用ESP-IDF的各項功能,此開發版即是在ESP IDF範例(Example)中構建HTTP的應用程式。

(2) ESP IDF的HTTP介面:

ESP IDF自帶的HTTP介面的使用, ESP HTTP模組提供了完整的API以支援HTTP的應用,而source code,請同學參考IDF目錄下的test_http_client.c,其路徑為esp-idf\components\esp_http_client\test

(3) HTTP請求:

HTTP請求格式是Client端往Server端發送請求動作,告知Server自己的要求。

(4) HTTP報文:

HTTP報文是HTTP應用程式之間傳輸的資料塊,HTTP報文分為HTTP請求報文和HTTP回應報文。

對於HTTP請求與報文的詳細內容,在這裡就先不談了,已經有其他先進在各論壇做了詳細介紹,有興趣的同學可上網自行學習。

(5) ESP32的HTTP介面介紹:

請同學直接參考ESP IDF的官方指南,那邊介紹得更多更詳細,相關網址如下: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/index.html

4.3 有線乙太網轉Wi-Fi的AP路由功能:ETH2AP (1) 介紹:

ESP32提供官方routine code (ETH2AP) ,也就是乙太網+Wi-Fi熱點AP,各位同學可在ESP IDF範例 (esp-ide/examples/Ethernet)找到,鏈結網址如下: https://github.com/espressif/esp-idf/tree/1d7068e/examples/ethernet/eth2ap

(2) 如何使用ETH2AP example:

步驟1:初始化有線乙太網以及無線熱點模式(Wi-Fi AP mode)

步驟2:乙太網接入router,開啟DHCP server功能

步驟3:開啟 ESP32的Wi-Fi AP

步驟4:無線設備 (智能手機) 連接 ESP32的Wi-Fi

*詳細內容,建議各位同學參考這位先進的文章: https://blog.csdn.net/Lovely_him/article/details/117754768

4.4 DM9051NP驅動

DM9051NP driver的source code 參考如下:

static void emac_dm9051_task(void *arg) { emac_dm9051_t *emac = (emac_dm9051_t *)arg; uint8_t status = 0; uint8_t *buffer = NULL; uint32_t length = 0; while (1) { // block indefinitely until some task notifies me ulTaskNotifyTake(pdTRUE, portMAX_DELAY); /* 清除中斷狀態 */ dm9051_register_read(emac, DM9051_ISR, &status); dm9051_register_write(emac, DM9051_ISR, status); /* 收到封包 */ if (status & ISR_PR) { do { length = ETH_MAX_PACKET_SIZE; buffer = heap_caps_malloc(length, MALLOC_CAP_DMA); if (!buffer) { ESP_LOGE(TAG, "no mem for receive buffer"); } else if (emac->parent.receive(&emac->parent, buffer, &length) == ESP_OK) { /*將緩衝buffter堆疊在TCP/IP層*/ if (length) { emac->eth->stack_input(emac->eth, buffer, length); } else { free(buffer); } } else { free(buffer); } } while (emac->packets_remain); } } vTaskDelete(NULL); }

*ESP IDF 的DM9051NP source code 完整鏈結: https://github.com/espressif/esp-idf/blob/master/components/esp_eth/src/esp_eth_mac_dm9051.c

4.5 其他筆記

有些同學反應,之前他們從Github論壇下載DM9051NP sample code,執行後會出現連上線後,有斷線情況。經過分析試驗後,其原因是原本ESP32的polling間隔時間為50ms,要改成10ms。相關修改建議如下:

(1) ESP32 polling的間隔為改成10ms”, 將ulTaskNotifyTake(pdFALSE, pdMS_TO_TICKS(50));改成Line 257 vTaskDelay(pdMS_TO_TICKS(10));

(2) 請刪除原本example的這一行代碼/components/esp_eth/src/esp_eth_mac_dm9051.c

(3) 增加此行代碼 "dm9051_register_write(emac, DM9051_ISR, 0xFF);"到 emac_dm9051_task() function的部分。

(4) 增加此行代碼 "dm9051_register_write(emac, DM9051_ISR, 0xFF);" 到emac_dm9051_receive() function. 的部分。

5. 有線乙太網轉Wi-Fi的AP功能演示 5.1 測試架構與需要設備如下

訪問網頁---路由---DM9051NP_ESP 12K模塊 >>手機

註:請依照當時的網路環境,同學需要對路由的WAN口以及LAN口做DHCP server設置。

在圖5.1.1中,手機經由開發版,直接連線到左方的router,此router提供DHCP server。所以,手機向router得到DHCP動態IP後,經過router連線到網際網路。

5.2 ETH2AP功能演示相關訊息

以手機透過WiFi來連上模塊,手機WiFi進行掃描後,可找到開發版的SSID 名稱為+++eth2ap_9051_s2_56_06”,表示開發版的Wi-Fi已經準備好。點選後,輸入Password : 12345678,成功連線後,手機就可透過開發版來上網。

我們可以在調適終端上看到ETH2AP運行後,相關的設置訊息:

開發版接上電源後,看到USB埠列印s2[e2ap]: Ethernet Link Up (如圖5.2.1,ETH2AP’s message in the terminal) 表示乙太網路成功連線。開發版的Wi-Fi AP配置了MAC位址:00:60:6e:90:56:06,而開發版的乙太網也同樣配置了MAC位址00:60:6e:90:56:06。這兩個配置的MAC位址,在之前提到的透傳功能中,在最底層的硬體概念上有它的意義,並且,不會出現在收送的數據包之內容中。接著,開發版運行ETH2AP功能,進行收送數據包,從DM9051NP網口收到數據包,就原封不動地透過Wi-Fi口轉送出去,從Wi-Fi口收到數據包也原封不動由網口轉送出去,此為『透傳』。

5.3 內網測試 (Intranet)

這裡以華碩router (產品型號:ASUS RX3041) 來進行內網測試,圖中手機經由開發版直接連線左方的router,並且從router的DHCP server得到DHCP動態IP。開發版在內網這一段區域,它本身是一個網絡站點,而且是內網的IP支配者。所以,router必定預先有一個靜態IP,由於它是內網的IP支配者 (就是DHCP server) ,所以,會分配動態IP給DHCP Client端 (手機)。經查看華碩router手冊,找到預先配置的靜態IP為192.168.6.1。

此內網測試,在手機成功取得動態IP後,會出Wi-Fi AP已連上的狀態圖案。此時,同學開啟網頁流覽器(Browser as Google)來訪問前述的192.168.6.1,也就是router的web server首頁,會要求同學登入帳戶與密碼,查看router手冊後,得知帳戶是admin,密碼也是admin。登入後,手機即可訪問router的web server首頁,完成ETH2AP內網測試。

5.4 Iperf測試

以Iperf測試DM9051NP乙太網送收性能,在SPI clock 20MHz下,獲得網口性能數據:

TX10.34 mbps RX9.58 mbps


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有