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报文内容一致,测试成功。

相关推荐
哄娃睡觉5 小时前
stm32 mcu SWD和SPI下载模式有什么区别?
stm32
A9better7 小时前
嵌入式开发学习日志50——任务调度与状态
stm32·嵌入式硬件·学习
草丛中的蝈蝈9 小时前
STM32向FLASH写入数据后,重新读出的数据和原写入数据不一致
stm32
DLGXY10 小时前
STM32——EXTI外部中断(六)
stm32·单片机·嵌入式硬件
LCG米12 小时前
开发环境搭建:告别Keil,用CLion+STM32CubeMX打造智能嵌入式IDE
ide·stm32·嵌入式硬件
Hello_Embed12 小时前
Modbus 协议报文解析
笔记·stm32·单片机·学习·modbus
WD1372980155714 小时前
30V降12V,8A大功率高集成同步降压IC,工业电源WD5030K
stm32·单片机·嵌入式硬件·电脑
愈心凌14 小时前
知识碎片——STM32的定时器时钟解读
stm32·单片机·嵌入式硬件
Zeku14 小时前
20260125 - Linu驱动学习笔记:SPI-OLED测试
stm32·freertos·linux驱动开发·linux应用开发
bai54593616 小时前
STM32 CubeIDE 控制OLED显示屏
stm32·单片机·嵌入式硬件