成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ESP32-S2上使用SPI接口芯片DM9051NP轉(zhuǎn)以太網(wǎng)的無(wú)線物聯(lián)網(wǎng)網(wǎng)關(guān)開發(fā)指導(dǎo)

wangjuntytl / 3313人閱讀

摘要:前言芯片接口占用管腳數(shù)量比以太網(wǎng)的少,版線布局可更精簡(jiǎn)。網(wǎng)卡芯片介紹接口網(wǎng)卡芯片是為方物聯(lián)網(wǎng)行業(yè)進(jìn)以太網(wǎng)通信而開發(fā)出的解決方案。此應(yīng)用可用于監(jiān)控家庭物聯(lián)網(wǎng)網(wǎng)關(guān)搭建等。

前言

????DM9051NP芯片?SPI接口占用管腳數(shù)量比以太網(wǎng)PHYRMII/MII,PCBA版線局可更精簡(jiǎn)。而DM9051NP驅(qū)動(dòng)軟件方面,由于源代碼已集成在ESP IDF中,可見其可靠度以及網(wǎng)口性能得到樂鑫官方認(rèn)可。 在ESP32既有SPI 時(shí)鐘31.2MHz的條件下,DM9051NP能充分發(fā)揮網(wǎng)口資料送收性能,相關(guān)Iperf測(cè)試數(shù)據(jù),請(qǐng)參考第5章節(jié)。

1.DM9051NP?+?ESP32模塊介紹

????此模塊是基于安可信ESP-12K模塊來設(shè)計(jì),以DM9051NP SPI接口轉(zhuǎn)以太網(wǎng)芯片為ESP-12K模塊(核心模塊為ESP32-S2)增加了有線網(wǎng)口功能,其中,DM9051NP只用了4個(gè)GPIO,原本ESP32有線網(wǎng)口參考設(shè)計(jì)為以太網(wǎng)PHY,在RMII模式下,需佔(zhàn)用10個(gè)GPIO ; MII模式下,GPIO占用更多,為16個(gè)。

同樣地,DM9051NP更適合用ESP32-WROOM32(核心模塊為ESP32)的以太網(wǎng)口應(yīng)用上,在有限GPIO接口的情況之下,使用DM9051NP SPI接口轉(zhuǎn)以太網(wǎng)芯片,空出來的GPIO能讓MCU更方便去擴(kuò)展其他功能。

1-1.ESP 12K模組介紹

????ESP32-S2 提供豐富的外設(shè)接口,包括SPI,I2S,UART,I2C,LED PWM,LCD 接口, Camera 接口,ADC,DAC,觸摸傳感器,溫度傳感器和多達(dá)43 個(gè)GPIO。

????ESP-12K 是由安信可科技開發(fā)的Wi-Fi 模塊,該模塊核心處理器ESP32-S2 是一款 高集成度的低功耗Wi-Fi 系統(tǒng)級(jí)芯片(SoC),專為物聯(lián)網(wǎng)(IoT)、移動(dòng)設(shè)備、可穿戴電子 設(shè)備、智能家居等各種應(yīng)用而設(shè)計(jì)。

1-2. DM9051NP網(wǎng)卡芯片介紹

DM9051NP SPI接口網(wǎng)卡芯片是為了方便物聯(lián)網(wǎng)行業(yè)進(jìn)行以太網(wǎng)通信而開發(fā)出的解決方案。DM9051NP芯片是帶有行業(yè)標(biāo)準(zhǔn)串列外設(shè)接口(Serial Peripheral Interface,SPI)的獨(dú)立以太網(wǎng)控制器。DM9051NP符合IEEE 802.3 規(guī)范,它還支持以DMA 模式來傳輸,以實(shí)現(xiàn)資料傳送快速。DM9051NP通過1個(gè)中斷引腳和SPI接口來進(jìn)行與主控制器/MCU單片機(jī)的通信,資料傳輸規(guī)格為10/100 M。

?Package:32支接腳封裝,QFN.

?IEEE 802.3az Energy Efficient Ethernet (EEE)

?遠(yuǎn)程喚醒 (WOL)

?Support 光口界面

?EMI (Class B) and HBM ESD Rating 8KV

? 工業(yè)溫度規(guī)范: –40?to +85

2.實(shí)驗(yàn)環(huán)境

2-1.應(yīng)用:訪問網(wǎng)頁(yè)

2.1

DM9051 ESP32 12K模塊利用HTTP協(xié)議,完成無(wú)線Wi-Fi轉(zhuǎn)傳有線以太網(wǎng)的透?jìng)鞴δ?,而兩端?shù)據(jù)包進(jìn)行雙向即時(shí)轉(zhuǎn)發(fā)。

在透?jìng)鞴δ苎菔緯r(shí),將模塊當(dāng)作一個(gè)小網(wǎng)關(guān)(無(wú)線熱點(diǎn)Wi Fi AP),讓手機(jī)或平板等透過無(wú)線WIFI連上線,模塊會(huì)要求輸入密碼,待登入后,此時(shí)DM9051NP會(huì)釋放出ESP32 AP access point(eth2ap的功能),當(dāng)手機(jī)連線模塊后,由路由的DHCP Server進(jìn)行DHCP 的動(dòng)態(tài)IP分配,讓DM9051NP取得IP ,接著ESP32-DM9051-eth2ap進(jìn)行數(shù)據(jù)透?jìng)?,成功連線并訪問網(wǎng)頁(yè)。

如果路由沒有DHCP server的話,使用者可對(duì)手機(jī)設(shè)置靜態(tài)IP,也可訪問網(wǎng)頁(yè)。

此應(yīng)用可用于IPC監(jiān)控、家庭物聯(lián)網(wǎng)網(wǎng)關(guān)搭建等。

3.硬件部分

3-1 .硬件環(huán)境

此DM9051 ESP 12K開發(fā)版規(guī)格如下:

3.1

主要組件

功能描述

P1

DC5V電源插座

J28

J29

選擇?USB (默認(rèn)設(shè)置) or DC電源插座來供電

J28 ON: 5V 電源由?USB (J1)供應(yīng)?

J28 OFF: 5V電源由?DC插座?(P1)供應(yīng)?

J29 ON: 5V電源由?DC插座?(P1)供應(yīng)

J29 OFF: 5V電源由?USB (J1)供應(yīng)

J27

J30

選擇?USB (默認(rèn)設(shè)置) 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 網(wǎng)絡(luò)接口插座為10M以及/100Mbps Ethernet,插座有LED1 LED2燈號(hào)。

(LED 燈號(hào)模式1: 默認(rèn)設(shè)置)

LED1 :綠燈表示?(Link / Active)?

ON: 聯(lián)機(jī)中?

OFF: 不是聯(lián)機(jī)中

Flash: 數(shù)據(jù)傳送中

LED2 :黃燈(當(dāng)聯(lián)機(jī)中時(shí),為網(wǎng)速燈號(hào)?)?

ON: 100M Full duplex?

OFF: 10M Full duplex

U3

DM9051

U2

ESP32-S2 Module : ESP-12K

SW1

啟動(dòng)按鍵?

SW2

重啟按鍵??

LED4

LED燈號(hào)自定義義(GPIO2)

LED5

電源燈號(hào)

J3

ESP32-S2 I/O

J2

ESP32-S2 I/O

J1

MicroUSB 插座( USB5V供電?以及?通信)

?表1

3-2.?SPI硬件接線部分

ESP32 有線接入以太網(wǎng)方法:

DM9051NP通過SPI接口控制內(nèi)部寄存器,并有中斷輸出接口。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接口的接線方法,下面鏈結(jié)網(wǎng)址的說明文檔README.md中,有說明接線方法。在這裡要提醒DM9051NP以及ESP32模塊,基于走線佈局考量,設(shè)計(jì)成如圖3.2/3.3的變更

??????https://github.com/espressif/esp-idf/tree/1d7068e4be430edd92bb63f2d922036dcf5c3cc1/examples/ethernet

?

4.軟件部分

4-1. ESP32 硬件開發(fā)的軟件環(huán)境:ESP IDF

此實(shí)作使用 ESP-IDF (Espressif IoT Development Framework) 環(huán)境來開發(fā)以太網(wǎng)口通訊,配置相關(guān)菜單,編譯、下載固件至 ESP32 12K模塊。對(duì)于如何搭建ESP32 硬件開發(fā)的軟件環(huán)境,請(qǐng)各位同學(xué)參考上海樂鑫官方搭建教學(xué),這里寫得很詳細(xì),會(huì)手把手帶著同學(xué)完成開發(fā)環(huán)境:

快速入門 - ESP32 - — ESP-IDF 編程指南 latest 文檔

?

4-2. HTTP

?1.)HTTP簡(jiǎn)介

HTTP協(xié)議是Hyper Text Transfer Protocol超文本傳輸協(xié)議的縮寫,基于TCP傳輸層協(xié)議進(jìn)行通信,采用Client端與Server端架構(gòu),屬于應(yīng)用層協(xié)議。

ESP IDF有提供軟件組件使用和設(shè)計(jì)文檔,讓同學(xué)運(yùn)用ESP-IDF的各項(xiàng)功能,本實(shí)作即是在ESP IDF范例(Example)中構(gòu)建HTTP的應(yīng)用程序。

2.)ESP IDF的HTTP接口:

????ESP IDF自帶的HTTP接口的使用, ESP HTTP模塊提供了完整的API以支持HTTP的應(yīng)用,其源代碼,請(qǐng)同學(xué)參考IDF目錄下的test_http_client.c,其路徑esp-idf/components/esp_http_client/test

3.)HTTP請(qǐng)求

HTTP請(qǐng)求格式是Client端往Server端發(fā)送請(qǐng)求動(dòng)作,告知Server自己的要求。

4.)HTTP報(bào)文

HTTP報(bào)文是HTTP應(yīng)用程序之間傳輸?shù)臄?shù)據(jù)塊,HTTP報(bào)文分為HTTP請(qǐng)求報(bào)文和HTTP響應(yīng)報(bào)文。

對(duì)于HTTP請(qǐng)求與報(bào)文的詳細(xì)內(nèi)容,在這裡就先不談了,已經(jīng)有其他先進(jìn)在各論壇做了詳細(xì)介紹,有興趣的同學(xué)可上網(wǎng)自行學(xué)習(xí)。

5.)ESP32的HTTP接口介紹

請(qǐng)同學(xué)直接參考ESP IDF的官方指南,那邊介紹得更多更詳細(xì),相關(guān)網(wǎng)址如下:API 參考 - ESP32 - — ESP-IDF 編程指南 latest 文檔

4-3.有線以太網(wǎng)轉(zhuǎn)Wi-Fi的AP路由功能:ETH2AP

1.)介紹:

?

ESP32有提供官方例程,這個(gè)例程(ETH2AP)功能是以太網(wǎng)+Wi-Fi熱點(diǎn)AP(access point),各位同學(xué)可在ESP IDF范例(esp-ide/examples/Ethernet)找到,鏈結(jié)網(wǎng)址如下:

esp-idf/examples/ethernet/eth2ap at 1d7068e4be430edd92bb63f2d922036dcf5c3cc1 · espressif/esp-idf · GitHub

2.)如何使用ETH2AP example

?步驟1: 初始化有線以太網(wǎng)以及無(wú)線熱點(diǎn)模式(Wi-Fi AP mode: Access point)

??步驟2: 有線以太網(wǎng)接入路由/交換器/PCE,開啟DHCP server功能

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

??步驟4: 無(wú)線設(shè)備(智能手機(jī))連接 ESP32的Wi-Fi

???????詳細(xì)內(nèi)容,建議各位同學(xué)參考這位先進(jìn)的文章:

ESP32 單片機(jī)學(xué)習(xí)筆記 - 06 - (以太網(wǎng))Ethernet轉(zhuǎn)Wifi_Lovely_him的博客-CSDN博客_esp32 以太網(wǎng)

4-4. DM9051NP驅(qū)動(dòng)

DM9051NP驅(qū)動(dòng)源代碼參考如下:

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);

????????/* 清除中斷狀態(tài) */

????????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 完整驅(qū)動(dòng)代碼鏈結(jié):

esp-idf/esp_eth_mac_dm9051.c at master · espressif/esp-idf · GitHub

4-5 其他筆記

???有些同學(xué)反應(yīng),之前他們從Github論壇下載DM9051NP sample code,執(zhí)行后會(huì)出現(xiàn)連上線后,有斷線情況。經(jīng)過分析試驗(yàn)后,其原因是原本ESP32輪詢的間隔時(shí)間為50ms,要改成10ms。相關(guān)源代碼修改建議如下:

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

2.)請(qǐng)刪除原本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有線以太網(wǎng)轉(zhuǎn)Wi-Fi的AP功能演示

5-1)測(cè)試架構(gòu)與需要設(shè)備如下:

問網(wǎng)頁(yè)---路由---DM9051NP_ESP 12K模塊 <<<--->>>手機(jī)

?注:依照當(dāng)時(shí)的網(wǎng)路環(huán)境,同學(xué)需要對(duì)路由的WAN口以及LAN口做DHCP server配置。

在圖5.1中,手機(jī)經(jīng)由模塊,直接連線到左方的路由,此路由提供DHCP server。所以,手機(jī)向路由得到DHCP動(dòng)態(tài)IP后,再經(jīng)過路由連線到網(wǎng)際網(wǎng)路。

?5-2 ) ETH2AP功能演示相關(guān)訊息:

????以智能手機(jī)透過無(wú)線WiFi來連上模塊,手機(jī)WiFi進(jìn)行掃描后,可以找到模塊的SSID 名稱為“+++eth2ap_9051_s2_56_06”,表示模塊的Wi-Fi已經(jīng)準(zhǔn)備好。點(diǎn)選后,輸入Password : 12345678,成功連線后,手機(jī)可透過模塊來上網(wǎng)。

?我們可以在調(diào)適終端上看到ETH-to-AP運(yùn)行后,相關(guān)的設(shè)置訊息:

模塊上電后看到USB端口打印s2[e2ap]: Ethernet Link Up (如圖5.2,ETH-to-AP’s message in the terminal)表示以太網(wǎng)路成功連線。模塊的Wi-Fi AP配置了MAC地址:00:60:6e:90:56:06,模塊的以太網(wǎng)也同樣配置了MAC地址00:60:6e:90:56:06。這兩個(gè)配置的MAC地址,在之前提到的透?jìng)鞴δ苤校谧畹讓佑布拍钌?,有它的意義,而且不會(huì)出現(xiàn)在數(shù)據(jù)包的收送內(nèi)容中。接著,模塊運(yùn)行ETH2AP功能,進(jìn)行收送數(shù)據(jù)包,從DM9051NP網(wǎng)口收到數(shù)據(jù)包,就原封不動(dòng)地透過Wi-Fi口轉(zhuǎn)送出去,從Wi-Fi口收到數(shù)據(jù)包也原封不動(dòng)由網(wǎng)口轉(zhuǎn)送出去,此為『透?jìng)鳌弧?/span>

5-3內(nèi)網(wǎng)測(cè)試(Intranet)

這裡以華碩路由器(產(chǎn)品型號(hào):ASUS RX3041)來進(jìn)行內(nèi)網(wǎng)測(cè)試,圖中手機(jī)經(jīng)由模塊直接連線左方的路由器,并且從路由的DHCP server得到DHCP動(dòng)態(tài)IP。路由器在內(nèi)網(wǎng)這一段區(qū)域,它本身是一個(gè)網(wǎng)絡(luò)站點(diǎn),而且是內(nèi)網(wǎng)的IP支配者。所以,路由肯定有一個(gè)靜態(tài)IP,由于它是內(nèi)網(wǎng)的IP支配者(就是DHCP server),所以,會(huì)分配動(dòng)態(tài)IP給DHCP客戶端(手機(jī))。經(jīng)查看華碩路由器手冊(cè),找到預(yù)先配置的靜態(tài)IP為192.168.6.1。

此內(nèi)網(wǎng)測(cè)試,在手機(jī)成功取得動(dòng)態(tài)IP后,手機(jī)會(huì)出Wi-Fi AP已連上的狀態(tài)圖案。此時(shí),同學(xué)開啟網(wǎng)頁(yè)流覽器(Browser)來訪問前述的192.168.6.1,也就是路由器的web server首頁(yè),路由器會(huì)要求同學(xué)登入帳戶與密碼,查看路由器手冊(cè)后,得知帳戶是admin,密碼也是admin。登入后,手機(jī)即可訪問路由器的web server首頁(yè),完成ETH-to-AP內(nèi)網(wǎng)測(cè)試。

5-4 Iperf測(cè)試

?

以Iperf測(cè)試DM9051NP有線網(wǎng)口性能,在SPI clock 20MHz下,獲得下面TCP傳輸數(shù)據(jù):

TX

10.34 mbps

RX

9.58 mbps

完。

?

?

?

?

?

?

?

?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/122118.html

相關(guān)文章

  • ESP32開源驅(qū)動(dòng)庫(kù)Easyio使用,基于ESP-IDF開發(fā)框架,非Arduino

    摘要:是一款適配于框架的開源驅(qū)動(dòng)庫(kù),以支持的簡(jiǎn)便開發(fā)。目的是簡(jiǎn)化樂鑫開發(fā)框架的使用難度。相關(guān)教程本專欄內(nèi)容開發(fā)環(huán)境搭建開發(fā)環(huán)境搭建,下基于插件的開發(fā)環(huán)境搭建樂鑫在線幫助文檔快速入門編程指南硬件設(shè)計(jì)參考 ...

    Harriet666 評(píng)論0 收藏0
  • 自己畫一塊ESP32-C3 開發(fā)板(第一次使用立創(chuàng)EDA)(更新中...)

    摘要:復(fù)位系列芯片的復(fù)位可使用管腳。這個(gè)和保存代碼的是不一樣的,計(jì)劃使用。 記錄一下第一次使用立創(chuàng)EDA第一次設(shè)計(jì)ESP-C3的開發(fā)板(這幾天工作有點(diǎn)忙,稍等) 目錄 ...

    MrZONT 評(píng)論0 收藏0
  • ESP32 ESP-IDF開發(fā)環(huán)境搭建,Windows下基于ESP-IDF | Cmake | VS

    摘要:之前一篇博客搭建開發(fā)環(huán)境發(fā)布后,深受好評(píng)。樂鑫官方提供插件,一站式安裝,直接將升格為,配合上原有的插件主題,的過程十分愜意。目前已開放預(yù)覽版本,功能涵蓋等外設(shè)驅(qū)動(dòng),下一步準(zhǔn)備擴(kuò)充解碼庫(kù)有線以太網(wǎng)和一些網(wǎng)絡(luò)通信的。 ...

    TalkingData 評(píng)論0 收藏0
  • 01.ESP8266開發(fā)方式知多少

    摘要:開發(fā)方式是樂鑫為開發(fā)者提供的物聯(lián)應(yīng)開發(fā)平臺(tái),包括基礎(chǔ)平臺(tái)以及上層應(yīng)開發(fā)示例,如智能燈智能開關(guān)等。指令開發(fā)方式作為芯片,指令開發(fā)也是必不可少的。開發(fā)方式即,意為運(yùn)行在單片機(jī)上的。 ...

    sushi 評(píng)論0 收藏0
  • 2021愛智先行者——EdgerOS Spirit 1深度使用體驗(yàn)與EdgerOS應(yīng)用開發(fā)實(shí)踐

    摘要:是下一代面向物聯(lián)網(wǎng)和邊緣計(jì)算的智能操作系統(tǒng),可廣泛應(yīng)用于面向個(gè)人家庭和行業(yè)的物聯(lián)網(wǎng)產(chǎn)品和解決方案,有效降低開發(fā)門檻縮短開發(fā)周期。 一、前言 ① 智能邊緣計(jì)算操作系統(tǒng)...

    spacewander 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<