摘要:前言芯片接口占用管腳數量比以太網的少,版線布局可更精簡。網卡芯片介紹接口網卡芯片是為方物聯網行業進以太網通信而開發出的解決方案。此應用可用于監控家庭物聯網網關搭建等。
前言
????DM9051NP芯片?SPI接口占用管腳數量比以太網PHY的RMII/MII少,PCBA版線布局可更精簡。而DM9051NP驅動軟件方面,由于源代碼已集成在ESP IDF中,可見其可靠度以及網口性能得到樂鑫官方認可。 在ESP32既有SPI 時鐘31.2MHz的條件下,DM9051NP能充分發揮網口資料送收性能,相關Iperf測試數據,請參考第5章節。
1.DM9051NP?+?ESP32模塊介紹
????此模塊是基于安可信ESP-12K模塊來設計,以DM9051NP SPI接口轉以太網芯片為ESP-12K模塊(核心模塊為ESP32-S2)增加了有線網口功能,其中,DM9051NP只占用了4個GPIO,原本ESP32有線網口參考設計為以太網PHY,在RMII模式下,需佔用10個GPIO ; MII模式下,GPIO占用更多,為16個。
同樣地,DM9051NP更適合用ESP32-WROOM32(核心模塊為ESP32)的以太網口應用上,在有限GPIO接口的情況之下,使用DM9051NP SPI接口轉以太網芯片,空出來的GPIO能讓MCU更方便去擴展其他功能。
1-1.ESP 12K模組介紹
????ESP32-S2 提供豐富的外設接口,包括SPI,I2S,UART,I2C,LED PWM,LCD 接口, Camera 接口,ADC,DAC,觸摸傳感器,溫度傳感器和多達43 個GPIO。
????ESP-12K 是由安信可科技開發的Wi-Fi 模塊,該模塊核心處理器ESP32-S2 是一款 高集成度的低功耗Wi-Fi 系統級芯片(SoC),專為物聯網(IoT)、移動設備、可穿戴電子 設備、智能家居等各種應用而設計。
1-2. DM9051NP網卡芯片介紹
DM9051NP SPI接口網卡芯片是為了方便物聯網行業進行以太網通信而開發出的解決方案。DM9051NP芯片是帶有行業標準串列外設接口(Serial Peripheral Interface,SPI)的獨立以太網控制器。DM9051NP符合IEEE 802.3 規范,它還支持以DMA 模式來傳輸,以實現資料傳送快速。DM9051NP通過1個中斷引腳和SPI接口來進行與主控制器/MCU單片機的通信,資料傳輸規格為10/100 M。
?Package:32支接腳封裝,QFN.
?IEEE 802.3az Energy Efficient Ethernet (EEE)
?遠程喚醒 (WOL)
?Support 光口界面
?EMI (Class B) and HBM ESD Rating 8KV
? 工業溫度規范: –40℃?to +85℃
2.實驗環境
2-1.應用:訪問網頁
圖2.1
DM9051 ESP32 12K模塊利用HTTP協議,完成無線Wi-Fi轉傳有線以太網的透傳功能,而兩端數據包進行雙向即時轉發。
在透傳功能演示時,將模塊當作一個小網關(無線熱點Wi Fi AP),讓手機或平板等透過無線WIFI連上線,模塊會要求輸入密碼,待登入后,此時DM9051NP會釋放出ESP32 AP access point(eth2ap的功能),當手機連線模塊后,由路由的DHCP Server進行DHCP 的動態IP分配,讓DM9051NP取得IP ,接著ESP32-DM9051-eth2ap進行數據透傳,成功連線并訪問網頁。
如果路由沒有DHCP server的話,使用者可對手機設置靜態IP,也可訪問網頁。
此應用可用于IPC監控、家庭物聯網網關搭建等。
3.硬件部分
3-1 .硬件環境
此DM9051 ESP 12K開發版規格如下:
圖3.1
主要組件 | 功能描述 |
P1 | DC5V電源插座 |
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)供電給DM9051? J27 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 duplex? OFF: 10M Full duplex | |
U3 | DM9051 |
U2 | ESP32-S2 Module : ESP-12K |
SW1 | 啟動按鍵? |
SW2 | 重啟按鍵?? |
LED4 | LED燈號自定義義(GPIO2) |
LED5 | 電源燈號 |
J3 | ESP32-S2 I/O |
J2 | ESP32-S2 I/O |
J1 | MicroUSB 插座( USB5V供電?以及?通信) |
?表1
ESP32 有線接入以太網方法:
DM9051NP通過SPI接口控制內部寄存器,并有中斷輸出接口。ESP 12K(ESP32-S2)通過SPI1和DM9051NP相連。具體接口如下:
DM9051NP | ESP32 S2 | |
SPI_CS | Pin17 | Pin13 |
SPI_CLK | Pin18 | Pin16 |
SPI_MOSI | Pin19 | Pin14 |
SPI_MISO | Pin20 | Pin15 |
SPI_INT | Pin24 | Pin18 |
?
*在ESP IDF的Ethernet example DM9051NP module:
在ESP32官方例程 examples/ethernet/中,介紹了DM9051NP SPI接口的接線方法,下面鏈結網址的說明文檔README.md中,有說明接線方法。在這裡要提醒,DM9051NP以及ESP32模塊,基于走線佈局考量,設計成如圖3.2/圖3.3的變更。
?
4.軟件部分
4-1. ESP32 硬件開發的軟件環境:ESP IDF
此實作使用 ESP-IDF (Espressif IoT Development Framework) 環境來開發以太網口通訊,配置相關菜單,編譯、下載固件至 ESP32 12K模塊。對于如何搭建ESP32 硬件開發的軟件環境,請各位同學參考上海樂鑫官方搭建教學,這里寫得很詳細,會手把手帶著同學完成開發環境:
快速入門 - ESP32 - — ESP-IDF 編程指南 latest 文檔
?
4-2. HTTP
?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的應用,其源代碼,請同學參考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的官方指南,那邊介紹得更多更詳細,相關網址如下:API 參考 - ESP32 - — ESP-IDF 編程指南 latest 文檔
4-3.有線以太網轉Wi-Fi的AP路由功能:ETH2AP
1.)介紹:
?
ESP32有提供官方例程,這個例程(ETH2AP)功能是以太網+Wi-Fi熱點AP(access point),各位同學可在ESP IDF范例(esp-ide/examples/Ethernet)找到,鏈結網址如下:
2.)如何使用ETH2AP example
?步驟1: 初始化有線以太網以及無線熱點模式(Wi-Fi AP mode: Access point)
??步驟2: 有線以太網接入路由/交換器/PCE,開啟DHCP server功能
??步驟3:開啟 ESP32的Wi-Fi AP
??步驟4: 無線設備(智能手機)連接 ESP32的Wi-Fi
???????詳細內容,建議各位同學參考這位先進的文章:
ESP32 單片機學習筆記 - 06 - (以太網)Ethernet轉Wifi_Lovely_him的博客-CSDN博客_esp32 以太網
4-4. DM9051NP驅動
DM9051NP驅動源代碼參考如下:
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);
}
*DM9051NP ESP32 完整驅動代碼鏈結:
esp-idf/esp_eth_mac_dm9051.c at master · espressif/esp-idf · GitHub
4-5 其他筆記
???有些同學反應,之前他們從Github論壇下載DM9051NP sample code,執行后會出現連上線后,有斷線情況。經過分析試驗后,其原因是原本ESP32輪詢的間隔時間為50ms,要改成10ms。相關源代碼修改建議如下:
1.)ESP32 輪詢的間隔為改成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. 的部分。
訪問網頁---路由---DM9051NP_ESP 12K模塊 <<<--->>>手機
?注:依照當時的網路環境,同學需要對路由的WAN口以及LAN口做DHCP server配置。
在圖5.1中,手機經由模塊,直接連線到左方的路由,此路由提供DHCP server。所以,手機向路由得到DHCP動態IP后,再經過路由連線到網際網路。
?5-2 ) ETH2AP功能演示相關訊息:
????以智能手機透過無線WiFi來連上模塊,手機WiFi進行掃描后,可以找到模塊的SSID 名稱為“+++eth2ap_9051_s2_56_06”,表示模塊的Wi-Fi已經準備好。點選后,輸入Password : 12345678,成功連線后,手機可透過模塊來上網。
?我們可以在調適終端上看到ETH-to-AP運行后,相關的設置訊息:
模塊上電后看到USB端口打印s2[e2ap]: Ethernet Link Up (如圖5.2,ETH-to-AP’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)
這裡以華碩路由器(產品型號:ASUS RX3041)來進行內網測試,圖中手機經由模塊直接連線左方的路由器,并且從路由的DHCP server得到DHCP動態IP。路由器在內網這一段區域,它本身是一個網絡站點,而且是內網的IP支配者。所以,路由肯定有一個靜態IP,由于它是內網的IP支配者(就是DHCP server),所以,會分配動態IP給DHCP客戶端(手機)。經查看華碩路由器手冊,找到預先配置的靜態IP為192.168.6.1。
此內網測試,在手機成功取得動態IP后,手機會出Wi-Fi AP已連上的狀態圖案。此時,同學開啟網頁流覽器(Browser)來訪問前述的192.168.6.1,也就是路由器的web server首頁,路由器會要求同學登入帳戶與密碼,查看路由器手冊后,得知帳戶是admin,密碼也是admin。登入后,手機即可訪問路由器的web server首頁,完成ETH-to-AP內網測試。
5-4 Iperf測試:
?
以Iperf測試DM9051NP有線網口性能,在SPI clock 20MHz下,獲得下面TCP傳輸數據:
TX | 10.34 mbps |
RX | 9.58 mbps |
完。
?
?
?
?
?
?
?
?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/122118.html
摘要:是一款適配于框架的開源驅動庫,以支持的簡便開發。目的是簡化樂鑫開發框架的使用難度。相關教程本專欄內容開發環境搭建開發環境搭建,下基于插件的開發環境搭建樂鑫在線幫助文檔快速入門編程指南硬件設計參考 ...
摘要:復位系列芯片的復位可使用管腳。這個和保存代碼的是不一樣的,計劃使用。 記錄一下第一次使用立創EDA第一次設計ESP-C3的開發板(這幾天工作有點忙,稍等) 目錄 ...
摘要:之前一篇博客搭建開發環境發布后,深受好評。樂鑫官方提供插件,一站式安裝,直接將升格為,配合上原有的插件主題,的過程十分愜意。目前已開放預覽版本,功能涵蓋等外設驅動,下一步準備擴充解碼庫有線以太網和一些網絡通信的。 ...
摘要:開發方式是樂鑫為開發者提供的物聯應開發平臺,包括基礎平臺以及上層應開發示例,如智能燈智能開關等。指令開發方式作為芯片,指令開發也是必不可少的。開發方式即,意為運行在單片機上的。 ...
摘要:是下一代面向物聯網和邊緣計算的智能操作系統,可廣泛應用于面向個人家庭和行業的物聯網產品和解決方案,有效降低開發門檻縮短開發周期。 一、前言 ① 智能邊緣計算操作系統...
閱讀 657·2021-11-23 09:51
閱讀 3258·2021-10-11 10:58
閱讀 15407·2021-09-29 09:47
閱讀 3527·2021-09-01 11:42
閱讀 1281·2019-08-29 16:43
閱讀 1831·2019-08-29 15:37
閱讀 2088·2019-08-29 12:56
閱讀 1717·2019-08-28 18:21