关注分享主机优惠活动
国内外VPS云服务器

无线物联网网关开发指南在ESP32-S2上使用SPI接口芯片DM9051NP连接以太网(esp32 spi视频教程)

总结:简介:芯片接口占用的管脚比以太网少,并且可以简化布局。 网卡芯片简介 接口网卡芯片是针对物联网行业以太网通信而开发的解决方案。 该应用程序可用于构建和监控家庭物联网网关等。

简介

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模式下,占用16个GPIO。

同样,如果 GPIO 有限,DM9051NP 支持以太网口应用,ESP32-WROOM32(核心模块为 ESP32)更适合。 接口 这种情况下,使用DM9051NP SPI接口转为以太网芯片,可以释放GPIO,方便MCU扩展其他功能。

1-1.ESP 12K模块介绍

ESP32-S2 提供丰富的外设接口,包括 SPI、I2S、UART、I2C、LED PWM、LCD 接口、摄像头接口、ADC、DAC、触摸传感器、温度传感器以及多达 43 个 GPIO。

ESP-12K 是 Essence Technology 开发的 Wi-Fi 模块。 该模块的核心处理器是ESP32-S2。 高度集成、低功耗 Wi-Fi 片上系统 (SoC),专为物联网 (IoT)、移动设备、可穿戴电子产品和智能家居等各种应用而设计。

1-2.DM9051NP网卡芯片介绍

DM9051NP SPI接口网卡芯片是为了方便物联网行业以太网通信而开发的解决方案。 DM9051NP 芯片是一款独立的以太网控制器,具有行业标准串行外设接口 (SPI)。 DM9051NP 符号它符合IEEE 802.3规范,还支持DMA模式传输,实现高速数据传输。 DM9051NP 通过中断引脚和 SPI 接口与主控制器/MCU 微控制器通信。 数据传输规格为10/100M。

•封装:32 引脚封装,QFN。

•IEEE 802.3az 节能以太网 (EEE)

•远程唤醒(WOL)

• 支持光纤接口

•EMI(B 类)和 HBM ESD 额定值 8KV

• 工业温度规格:–40℃ 至 +85℃

2. 实验环境

>

2- 1. 应用:访问网页。

图 2.1

DM9051 ESP32 12K模块利用HTTP协议完成无线Wi-Fi到有线以太网透传功能,两端数据包实时双向传输。

为了演示透传功能,该模块作为一个小型网关(无线热点Wi Fi AP)来连接手机和平板电脑。通道。 如果WIFI连接是无线上网,模块会要求输入密码。 登录后,DM9051NP 释放 ESP32 AP 接入点(eth2ap 功能)。 当手机连接模块时,路由DHCP服务器执行DHCP动态IP分配,让DM9051NP获取IP。 然后ESP32-DM9051-eth2ap进行数据透传并成功连接访问网页。 。

如果路由器没有DHCP服务器,用户可以在手机上设置静态IP或访问网页。

该应用可用于IPC监控、构建家庭物联网网关等。

3. 硬件部分

3-1.硬件环境

此DM9051 ESP 12K开发版规格如下:

图3.1

主要组件

功能说明

P1

DC5V电源插座

J28

J29

选择 USB(默认设置)或 DC 电源插座作为电源

J28 ON:由 USB (J1) 提供 5V 电源

J28 OFF:由 5V 电源提供来自 USB (J1) DC 插座 (P1) 电源

J29 ON:5V 电源由 DC 插座 (P1) 提供

J29 关闭:由 USB (J1) 提供 5V 电源

J27

J30

选择 USB(默认设置)或 DC 电源插座为 DM9051 和 ESP 12K (ESP32-S2) 供电。

J27 ON:通过 USB (J1) 向 DM9051 提供 5V 电源

J27 OFF:通过 DC 插座 (P1) 向 DM9051 提供 5V 电源。为 DM9051 供电

p>

J30 开启:从 DC 插座 (P1) 向 ESP 12K (ESP32) 提供 5V 电源。

J30 OFF:5V 电源从 USB (J1) 向 ESP32-S2 供电

JP4

LED1

LED2

RJ45网络接口插座为10M和/100Mbps以太网,插座有LED1和LED2光信号。

(LED灯模式1:默认设置)

LED1 :绿灯指示(链接/活动)。

开启:在线

关闭:不在线

> p>

Flash:数据传输

LED2:黄灯(连接时) ,网速光信号)

开启:100M全双工

关闭:10M 全双工

U3

DM9051

U2

ESP32-S2 模块:ESP-12K

SW1

开始按钮

SW2

重置按钮

LED4

自定义LED灯信号(GPIO2)

LED5

电源灯信号

J3

ESP32-S2 I/O

J2

ESP32-S2 I/O

J1

MicroUSB插座(USB5V供电及通讯)

表1

3-2. SPI硬件接线部分

ESP32 有线接入以太网方法:

DM9051NP 通过 SPI 接口控制内部寄存器并输出中断。ESP 12K ( ESP32-S2) 通过 SPI1 连接到 DM9051NP。

DM9051NP

ESP32 S2

SPI_CS

引脚 17

引脚13

SPI_CLK

引脚 18

引脚 16

SPI_MOSI

引脚 19

引脚 14

SPI_MISO

引脚 20

引脚 15

SPI_INT

固定 24

固定18

*ESP IDF 以太网示例 DM9051NP 模块:

ESP32官方例程示例/ethernet/介绍DM9051NP SPI接口,接线方法在下面链接的 README.md 中进行了描述。根据布线布局考虑,对 DM9051NP 和 ESP32 模块进行了修改,如图 3.2/图 3.3 所示。 ]left:.0001pt;">4.软件部分

4 [ k4]1.ESP32硬件开发的软件环境:ESP IDF

此实现使用 ESP-IDF(乐鑫物联网开发Framework)环境来开发网口通信、配置相关菜单、编译下载固件到 ESP32 12K 模块。有关如何搭建 ESP32 硬件开发软件环境,请参考上海乐鑫官方搭建教程,非常详细,为学生提供了完成开发环境的分步说明:

快速入门- ESP32 - ] — ESP -IDF 编程指南 la测试文档

4-2. ="margin-left:.0001pt;"> 1.) HTTP 概述

HTTP 协议如下。 超文本传输​​协议。 简而言之,通信是基于TCP传输层协议,采用客户端和服务器端架构,是一种应用层协议。

ESP IDF 描述了用法并提供设计文档。 允许学生使用 ESP-IDF 的各种功能。 此实现使用 ESP IDF 示例(示例)构建 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请求的格式是客户端向服务器发送请求动作,告知服务器自己的要求。

4.)HTTP消息

HTTP消息是数据块HTTP应用程序之间发送的HTTP消息分为HTTP请求消息和HTTP响应消息。

有关 HTTP 请求和消息的详细信息,我们这里就不讲了。 其他高级专家已在各个论坛上对其进行了详细介绍。 有兴趣的同学可以上网自行学习。

5.) ESP32 HTTP 接口概述

> p>

有关 ESP IDF 的更多信息,请直接参阅官方 ESP IDF 指南。 相关 URL 为:API 参考 - ESP32 - — ESP-IDF 编程指南最新文档

4-3. 有线以太网到 Wi[ k4]Fi 路由功能到 AP:ETH2AP

1.) 简介:

ESP32提供了一个官方例程,这个例程(ETH2AP)的功能是Ethernet + Wi-Fi Hotspot AP(Access Point)。同学们可以使用ESP IDF例子找到(esp [ k4]ide/examples/Ethernet) 链接 URL 为:

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

2.) 如何使用 ETH2AP 示例

第 1 步:初始化有线以太网和无线热点模式(Wi-Fi AP模式:接入点)

步骤二:开启有线以太网接入路由/交换服务器/PCE、DHCP 服务器功能

步骤 3:ESP32 上的 Wi-Fi 打开 AP

第四步:将无线设备(智能手机)连接到 ESP32 的 Wi-Fi

详细内容,推荐给大家同学们可参考以下进阶文章:

ESP32 MCU学习笔记-06-(以太网)以太网转Wifi_Lovely_him博客-CSDN Blog_esp32 以太网

4-4. DM9051NP 驱动

DM9051NP 驱动源代码参考如下:

静态 void emac_dm9051_task(void *arg)

{

emac_dm9051_t *emac = (emac_dm9051_t *)arg;

uint8_t状态 = 0;

uint8_t *buffer = NULL;

uint32_t 长度 = 0;

while (1) {

// 无限期阻塞,直到任务通知

ulTask​​​​NotifyTake( pdTRUE, portMAX_DELAY);

/* 清除中断状态*/

dm9051_register_read(emac , DM9051_ISR, &status);

dm9051_register_write(emac, DM9051_ISR, status);

/* 接收数据包*/

if (status & isr_pr) {

执行 {

长度 = ETH_MAX_PACKET_SIZE;

缓冲区 = heap_caps_malloc(长度, MALLOC_CAP_DMA);

if (!buffer) {

ESP_LOGE(TAG, 无接收缓冲区" );

else if (emac->parent.receive(&emac->parent,buffer,&length) == ESP_OK) {

left:.0001pt;"> if (长度) {

if (长度) {

"> emac->eth->stack_input(emac->eth , 缓冲区, 长度);

else {

免费(缓冲区);

}

"边距-左:.0001pt;">}

样式 = "边距-left:.0001pt;"> }

}

vTaskDelete(NULL);

}

*DM9051NP ESP32 完整驱动代码链接:

大师版 esp-idf/esp_eth_mac_dm9051.c · espressif/esp-idf · GitHub

4-5其他说明

在从Github论坛下载DM9051NP示例代码之前,有同学反映连接是运行后出现断线,这是因为原来的ESP32轮询间隔需要改为10ms。 >

1.)ESP32 轮询间隔为 10ms。更改 ulTask​​NotifyTake(pdFALSE, pdMS_TO_TICKS(50 )) ; 更改为第 257 行 vTaskDelay(pdMS_TO_TICKS(10));

2.) 删除原来的这行代码例如 /components/esp_eth/src/esp_eth_mac_dm9051.c

3.) 代码“dm9051_register_write(emac, DM9051_ISR, 0xFF); 到 emac_dm9051_task() 函数。

4.) 添加代码行“dm9051_register_write” I将要。 (emac, DM9051_ISR, 0xFF);" 到 emac_dm9051_receive() 函数。

5 从有线以太网到 Wi[k4 ]Fi AP 功能Demo 5-1) 测试架构及所需设备如下:

访问网页---路由---DM9051NP_ESP 12K模块手机

注意:根据当前的网络环境,您可能需要在路由器的WAN口和LAN口设置DHCP服务器。 /p>

图5.1中,手机通过模块直接连接到左边的路由器,获取动态IP后,走路由。到互联网。

5-2 ) ETH2AP 功能演示相关信息:

当您连接到使用智能手机通过无线 WiFi 连接模块,您将看到模块的 SSID 名称为“++eth2ap_9051_s2_56_06”。 这意味着该模块已支持 Wi-Fi。 单击它并输入您的密码。 : 12345678,连接成功后,手机可以通过模块上网。

协调终端上运行ETH-to-AP时,会显示相关配置信息。

模块上电后,USB口会有s2[e2ap]:以太网链路Up输出(图 5.2,ETH-]to-AP 终端中的消息)表明以太网已成功连接。 模块的 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内网测试(内网)

这是华硕路由器(制造商使用ASUS RX3041(产品型号:ASUS RX3041)进行内网测试。 图中,手机通过模块直连左侧路由器,从路由DHCP服务器获取DHCP动态IP。 路由器位于 Intranet 的这一部分。 它本身就是一个网络站点,也是一个内网IP统治者。 因此,该路由必须具有静态IP。 由于这是内网(即 DHCP 服务器)的 IP 统治者,它为 DHCP 客户端(手机)分配动态 IP。 我查看了华硕路由器手册,发现预先配置的静态IP是192.168.6.1。

本次内网测试使用手机更新成功获取。 IP 后,电话会显示状态图像,指示 Wi-Fi AP 已连接。 然后,学生打开 Web 浏览器并访问路由器 Web 服务器的主页 192.168.6.1。 路由器将要求学生使用他们的帐户和密码登录。 如果你查看路由器的手册,你会看到帐户是admin,密码是admin。 登录后,您的手机可以访问路由器的Web服务器主页,完成ETH-to-AP内网测试。

5-4 Iperf 测试:

使用Iperf测试DM9051NP有线网口的性能。 采用20MHz的SPI时钟,得到如下TCP传输数据:

TX

10.34 mbps

RX

9.58 mbps

结束。

未经允许不得转载:主机频道 » 无线物联网网关开发指南在ESP32-S2上使用SPI接口芯片DM9051NP连接以太网(esp32 spi视频教程)

评论 抢沙发

评论前必须登录!