Linux内核中 SPI以太网W5500问题

Linux内核中 SPI以太网W5500问题

Linux内核驱动中将W5500 W5200和W5100集成到了一起,本人只用到了W5500。

问题描述

绿灯LinkLED和黄灯ACTLED交替闪烁,而正常状态应该为LinkLED常亮
ifconfig eth0 报错
在这里插入图片描述
经过观察W5500网卡在整个板子复位时大多数情况是可以正常DHCP分配IP的,而adb reboot的时候大多数时候DHCP分配IP失败就会有上述错误状态,怀疑是复位有问题,分析代码果然函数名称为硬件复位(w5100_hw_reset)的函数在内部调用了软件复位函数
在w5100_hw_reset之前加上硬件复位代码,解决该问题。

static int w5100_hw_reset(struct w5100_priv *priv)
{
	u32 rtr;
    //此处增加硬件复位代码

	//w5100_reset为软件复位
	w5100_reset(priv);

	w5100_disable_intr(priv);
	w5100_write_macaddr(priv);

	switch (priv->ops->chip_id) {
	case W5100:
		w5100_memory_configure(priv);
		rtr = W5100_RTR;
		break;
	case W5200:
		w5200_memory_configure(priv);
		rtr = W5100_RTR;
		break;
	case W5500:
		w5500_memory_configure(priv);
		rtr = W5500_RTR;
		break;
	default:
		return -EINVAL;
	}
return 0;

}``

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
SPI(Serial Peripheral Interface)是一种串行外设接口通信协议,它能够使多个外设通过一个总线与主控器进行通信。W5500是一款基于SPI接口的网卡芯片,它具有以太网通信功能。 模拟SPIW5500之间的关系主要体现在W5500是通过SPI接口与主控器进行通信的。W5500内部集成了以太网控制器、TCP/IP协议栈、以及MAC和PHY等模块,通过SPI接口可以控制和配置W5500的各项功能。主控器通过SPI总线与W5500进行数据交互,以实现以太网通信。 在使用模拟SPIW5500进行通信时,首先需要设置好主控器的SPI通信参数,包括时钟频率、数据位数、数据传输模式等。然后通过SPI总线将命令和数据发送给W5500,以配置和控制其内部的各个模块。W5500会根据接收到的命令和数据进行相应的处理,并通过SPI总线将结果返回给主控器。主控器可以根据返回的结果进行处理和判断,以达到与W5500的通信目的。 通过模拟SPIW5500进行通信,可以实现以太网通信功能。主控器可以向W5500发送数据包,W5500会根据TCP/IP协议栈对数据包进行处理,并将数据包发送到相应的目的地址。同时,W5500也可以接收来自其他设备的数据包,并通过SPI接口将数据包传输给主控器进行处理。 总之,模拟SPIW5500是一种常见的应用场景,通过SPI接口可以方便地控制和配置W5500,从而实现基于以太网的通信功能。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值