关于W5500网卡使用过程的部分问题记录

某个项目中用到了W5500这种自带网络协议栈的网卡芯片,由于该项目开发时间很紧,就临时网上买了一些模块拼凑到了一套系统,经过验证果真这种拼积木的方法只能用在学生实验开发中,真不能拿来做工程应用,硬件太不稳定很容易掉坑。现记录部分发现的问题做下记录:

一、W5500网卡运行一段时间ping不通与SPI总线配置速率高低有关系吗?

发现系统运行一段时间后,网络ping处理器的ip无法ping通且不可恢复,起初简单思考W5500是硬件协议栈出了问题应该与应用软件无关,可能是自制的W5500 RJ-45 线未经过双绞或SPI总线速率过快导致的问题,因此通过将 RJ-45 线双绞并且降低的SPI总线速率。现在仔细想想,ping不通真的与SPI总线配置速率高低有关系吗?答案是无关。

W5500所在单机系统通过以太网的数据流走向示意图见下图:

5500与处理器间通过spi总线进行交互,而其交互的协议为UDP或TCP应用协议,即W5500只有tcp和udp数据通过spi总线与处理器进行交互。而ping走的icmp协议属于数据链路层协议,应用程序协议下的数据流是网关直接通过水晶头与网卡进行交互,并不通过spi总线 ,因此,ping不通与处理器软件无关,也与处理器设置的spi总线速率无关。ping不通不是软件的问题,而是网卡水晶头信号干扰或虚接的问题,通过降低spi总线速率并不能解决该问题。

扩展:像ENC28J60、DM9000等这些非硬件协议栈的网卡,由于网络协议栈是由处理器实现,因此我们在使用ping指令时,除了通过水晶头到达网卡后,还需要通过网卡与处理器之间的通信到达处理器协议栈,由协议栈返回ping指令应答,而这实际是通过了spi或者并行总线的。

相关推荐
F137298015572 天前
WD5030A 芯片,12V降5V,输出电流12A,电路设计
stm32·单片机·嵌入式硬件·汽车·51单片机
小莞尔2 天前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
小莞尔2 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
liujing102329292 天前
Day03_刷题niuke20250915
c语言
第七序章2 天前
【C++STL】list的详细用法和底层实现
c语言·c++·自然语言处理·list
l1t2 天前
利用DeepSeek实现服务器客户端模式的DuckDB原型
服务器·c语言·数据库·人工智能·postgresql·协议·duckdb
l1t2 天前
利用美团龙猫用libxml2编写XML转CSV文件C程序
xml·c语言·libxml2·解析器
Hello_Embed2 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
一起搞IT吧2 天前
嵌入式ARM SOC开发中文专题分享一:ARM SOC外围资源介绍
arm开发·嵌入式硬件
研华嵌入式2 天前
如何在高通跃龙QCS6490 Arm架构上使用Windows 11 IoT企业版?
arm开发·windows·嵌入式硬件