STM32的以太网外设+PHY(LAN8720)使用详解(7):以太网数据接收及发送测试

0 工具准备

c 复制代码
1.野火 stm32f407霸天虎开发板
2.LAN8720数据手册
3.STM32F4xx中文参考手册
4.Wireshark

1 以太网数据接收测试

1.1 以太网数据接收测试(轮询)

我们在主循环内轮询RX DMA描述符标志位查看是否接收到了数据,如果接收到了则将数据大小及内容打印出来,相关语句如下:

复制代码
if (ETH_CheckFrameReceived())
{
    frame = low_level_input();
    printf("Len : %d\r\n", frame.length);
    for (i = 0; i < frame.length; i++)
    {
        printf("%02X ", ((u8 *)frame.buffer)[i]);
    }
    printf("\r\n");
}

给开发板上电后,将开发板接入到和PC相连的局域网内,然后随便ping一个局域网的ip,例如192.168.101.123:

开发板接收到的数据如下:

长度为60,数据内容如上。

使用Wireshark抓取到的报文如下:

可以看到开发板接收到的报文和PC发出的报文内容一致,测试成功。

1.2 以太网数据接收测试(中断)

我们在ETH接收中断内检查RX DMA描述符标志位查看是否接收到了数据,如果接收到了则将数据大小及内容打印出来,相关语句如下:

c 复制代码
void ETH_IRQHandler(void)
{
    int i;
    FrameTypeDef frame;
    while(ETH_CheckFrameReceived() != 0) // 检测是否收到数据包
    {
        frame = low_level_input();
        printf("Len : %d\r\n", frame.length);
        for (i = 0; i < frame.length; i++)
        {
            printf("%02X ", ((u8 *)frame.buffer)[i]);
        }
        printf("\r\n");
    }
    ETH_DMAClearITPendingBit(ETH_DMA_IT_R);
    ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);
}

给开发板上电后,将开发板接入到和PC相连的局域网内,然后随便ping一个局域网的ip,例如192.168.101.123:

开发板接收到的数据如下:

长度为60,数据内容如上。

使用Wireshark抓取到的报文如下:

可以看到开发板接收到的报文和PC发出的报文内容一致,测试成功。

2 以太网数据发送测试

我们构造一个ARP报文,然后发送到局域网内,查看PC是否内接收到该报文。相关语句如下:

c 复制代码
uint8_t arpBuff[60] = 
{
	0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x14,
	0x99,0x30,0x08,0x06,0x00,0x01,0x08,0x00,0x06,0x04,
	0x00,0x01,0x00,0x00,0x00,0x14,0x99,0x30,0xc0,0xa8,
	0x65,0x75,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xa8,
	0x65,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
int sendarp(int argc, char *argv[])
{
	low_level_output(arpBuff, 60);
	return 0;
}

Wireshark捕获到的报文如下:

和我们发送的ARP报文内容一致,测试成功。

相关推荐
BT-BOX6 分钟前
第6章《Stm32CubeMX+Proteus仿真入门》LCD1602显示
stm32·嵌入式硬件·proteus
chao18984417 分钟前
STM32F103C8T6驱动LDC1614测试程序
stm32·单片机·嵌入式硬件
qqssss121dfd3 小时前
STM32H750XBH6的ETH模块的IPv4 ARP offload功能分析
stm32·单片机·嵌入式硬件
Nan_Feng_ya4 小时前
基于STM32的智能手表复刻成功(完全开源)
arm开发·stm32·pcb工艺·智能手表
zjxtxdy5 小时前
STM32开发板简介
stm32·单片机·嵌入式硬件
【 STM32开发 】5 小时前
【STM32 + CubeMX 教程】RTC 实时时钟 之 闹钟 -- F407篇
stm32·单片机·嵌入式硬件
MC_J5 小时前
STM32+FMC驱动W9825G6 SDRAM程序以及遇到的问题讲解
stm32·单片机
0南城逆流06 小时前
【STM32】知识点介绍八:UART/USART串口功能
stm32·单片机·嵌入式硬件
小白学电子_6 小时前
STM32常用HAL常见库函数快速运用和讲解
stm32·单片机·嵌入式硬件
woshihonghonga6 小时前
解决Eclipse的Copilot终端依赖问题
stm32·mcu·eclipse·copilot·ai编程