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

相关推荐
Heartache boy37 分钟前
野火STM32_HAL库版课程笔记-空气、烟雾传感器公式换算
笔记·stm32·嵌入式硬件
yuan199971 小时前
STM32F407 TIM3正交编码器应用指南
stm32·单片机·嵌入式硬件
lin辰傍边的风2 小时前
RS485收发架构移植要点
stm32·单片机·嵌入式硬件
CODE_RabbitV3 小时前
【保姆级实操版 - STM32 系列笔记】STM32F103标准库开发:Keil5新建工程完整教程
笔记·stm32·嵌入式硬件
NULL指向我3 小时前
STM32 F103C8T6学习笔记20:cubemx 配置 ADC采样 电位器
笔记·stm32·学习
Heartache boy3 小时前
野火STM32_HAL库版课程笔记-TIM高级定时器基础中断应用
笔记·stm32·单片机
辰哥单片机设计4 小时前
STM32智能晾衣架(机智云)
stm32·单片机·嵌入式硬件
2201_756206344 小时前
STM32F407 + ML307 阿里云接入
stm32·嵌入式硬件·阿里云
yongui4783414 小时前
基于STM32的Lora SX1278程序设计与实现
stm32·单片机·嵌入式硬件
永霖光电_UVLED19 小时前
意法半导体:华虹40nm代工生产的STM32 MCU开启交付
stm32·单片机·嵌入式硬件