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

相关推荐
pe7er6 天前
Mac 修复「XXXXX已损坏,无法打开」完整方案
mac
✎ ﹏梦醒͜ღ҉繁华落℘8 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
牛根生同志8 天前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
goldenrolan8 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
CC城子8 天前
STM32H7_FDCAN 驱动笔记
stm32·can·canfd
意法半导体STM328 天前
【官方原创】如何为STM32CubeMX2配置Visual Studio Code配置方案
vscode·stm32·单片机·嵌入式硬件·策略模式·stm32cubemx·嵌入式开发
雾削木8 天前
B语言经典教程现代化重构
java·前端·stm32·单片机·嵌入式硬件
Digitally8 天前
如何快速将文件从电脑传输到平板电脑
stm32·嵌入式硬件·电脑
项目題供诗8 天前
STM32-USART串口协议(二十二)
stm32·单片机·嵌入式硬件
欢乐熊嵌入式编程8 天前
选型避坑:ESP32 vs STM32+模组 vs NB-IoT,不同场景怎么选
stm32·单片机·嵌入式硬件·物联网·esp32·嵌入式iot