e福州官方网站,网页界面设计基础知识,杭州网站建设专家,福建嘉瑞建设工程有限公司网站0 工具准备
1.野火 stm32f407霸天虎开发板
2.LAN8720数据手册
3.STM32F4xx中文参考手册
4.Wireshark1 以太网数据接收测试
1.1 以太网数据接收测试#xff08;轮询#xff09;
我们在主循环内轮询RX DMA描述符标志位查看是否接收到了数据#xff0c;如果接收到了则将数据…0 工具准备
1.野火 stm32f407霸天虎开发板
2.LAN8720数据手册
3.STM32F4xx中文参考手册
4.Wireshark1 以太网数据接收测试
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描述符标志位查看是否接收到了数据如果接收到了则将数据大小及内容打印出来相关语句如下
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是否内接收到该报文。相关语句如下
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报文内容一致测试成功。