如何看网卡上phy的版本

如何看网卡上phy的版本,第1张

网卡的PHY(物理层)版本通常可以通过以下两种方式来查看:

1 *** 作系统查看

在Windows系统中,打开“控制面板”-“设备管理器”-“网络适配器”界面,找到对应的网卡,在“属性”-“详细信息”中找到“硬件ID”或“设备ID”,其中包含了网卡型号信息,根据型号信息可进一步查询网卡的PHY版本。

2 通过命令查看

在Windows系统中,可以通过运行CMD命令来查看网卡的PHY版本。具体方法是:打开CMD命令行窗口,输入“wmic nic where NetEnabled=true get Name,Speed,AdapterType”,回车后会列出当前计算机连接到的所有网卡信息,其中“AdapterType”列就是物理适配器类型,根据型号信息可进一步查询网卡的PHY版本。

在Linux系统中,可以通过运行“ethtool -i 网卡名称”的命令来查看网卡型号和驱动程序版本信息,然后根据型号信息进一步查询PHY版本。

需要注意的是,不同的网卡品牌和型号方式略有不同,上述方法只是提供了一般性的指导,具体 *** 作需要根据实际情况进行调整。

具体配置过程:

1、打开STM32CubeMX,并选择好相应的芯片。文中的芯片为STM32F207VCT6,选择后如下图:

2、配置RCC时钟、ETH、PA8以及使能LWIP;

由于此处我们的开发板硬件上为RMII方式,因此选择ETH-RMII,若有同志的开发板为MII方式,请参考MII的配置方法,此处只针对RMII;

RCC选择外部时钟源,另外勾选MCO1,软件会自动将PA8配置为MCO1模式,该引脚对于RMII方式很重要,用于为PHY芯片提供50MHz时钟;

使能LWIP;

3、时钟树的相关配置,必须保证MCO1输出为50Mhz,如果这个频率不对会导致PHY芯片无法工作;

我这里因为芯片为207VCT6,为了使MCO1输出为50Mhz,做了PLL倍频参数的一些调整,总体如下:(同志们配置时可根据自己的芯片灵活配置,但需保证MCO1的输出为50Mhz)

4、ETH、LWIP、RCC相关参数设置;

至此,比较重要的都在前面了,但是还有一点仍需要注意,即PA8引脚输出速度,几次不成功都是因为这个引脚没注意。

后续的参数设置可以根据同志们自己的需求分别设置,这里给出我的设置供参考;

ETH参数保持默认,但中断勾选一下;

LWIP参数设置如下:(因为我这里是配置UDP服务器,IP选择静态分配)

5、生成工程,做最后的函数修改;

给生成的工程添加UDP服务器的初始化以及端口绑定等相关函数;

我这里直接将之前的官方例程中的UDP服务器文件加进来,如下:

之后将c文件添加到用户程序,主函数添加Udp的h头文件;如下:(udp文件的具体内容在后面给出)

6、主函数还需要添加一下几个函数,在这里不对函数作用及实现原理讲解,仅做添加说明。

附:udp_echoserver相关文件内容(该文件为官方的示例程序,版权归官方,此处做转载)

udp_echoserverc的内容如下:

/ Includes ------------------------------------------------------------------/

#include "mainh"

#include "lwip/pbufh"

#include "lwip/udph"

#include "lwip/tcph"

#include <stringh>

#include <stdioh>

/ Private typedef -----------------------------------------------------------/

/ Private define ------------------------------------------------------------/

#define UDP_SERVER_PORT 7 / define the UDP local connection port /

#define UDP_CLIENT_PORT 7 / define the UDP remote connection port /

/ Private macro -------------------------------------------------------------/

/ Private variables ---------------------------------------------------------/

/ Private function prototypes -----------------------------------------------/

void udp_echoserver_receive_callback(void arg, struct udp_pcb upcb, struct pbuf p, const ip_addr_t addr, u16_t port);

/ Private functions ---------------------------------------------------------/

/

@brief Initialize the server application

@param None

@retval None

/

void udp_echoserver_init(void)

{

struct udp_pcb upcb;

err_t err;

/ Create a new UDP control block /

upcb = udp_new();

if (upcb)

{

/ Bind the upcb to the UDP_PORT port /

/ Using IP_ADDR_ANY allow the upcb to be used by any local interface /

err = udp_bind(upcb, IP_ADDR_ANY, UDP_SERVER_PORT);

if(err == ERR_OK)

{

/ Set a receive callback for the upcb /

udp_recv(upcb, udp_echoserver_receive_callback, NULL);

}

}

}

/

@brief This function is called when an UDP datagrm has been received on the port UDP_PORT

@param arg user supplied argument (udp_pcbrecv_arg)

@param pcb the udp_pcb which received data

@param p the packet buffer that was received

@param addr the remote IP address from which the packet was received

@param port the remote port from which the packet was received

@retval None

/

void udp_echoserver_receive_callback(void arg, struct udp_pcb upcb, struct pbuf p, const ip_addr_t addr, u16_t port)

{

/ Connect to the remote client /

udp_connect(upcb, addr, UDP_CLIENT_PORT);

/ Tell the client that we have accepted it /

udp_send(upcb, p);

/ free the UDP connection, so we can accept new clients /

udp_disconnect(upcb);

/ Free the p buffer /

pbuf_free(p);

}

udp_echoserverh的内容如下:

#ifndef __ECHO_H__

#define __ECHO_H__

void udp_echoserver_init(void);

#endif / __MINIMAL_ECHO_H /

7、至此,所有的工作完成,编译工程,下载至开发板。由于udp_echoserver中绑定的端口号为7,这里我们通过测试工具测试网络的功能

你可以去官网上下载软件

>

一般不能,原因如下:

不同的PHY芯片ID不同,如果程序使用ID做校验,需要更改成LAN8720的ID码,这个在数据手册中 可以查到

两个PHY电路可能不同,所以PHY的地址可能跟原电路不同,如果程序是指定地址访问,需要改成LAN8720的地址,PHY地址由电路确定,阅读数据手册并结合电路原理图可以确定LAN8720的PHY地址

不同PHY设备有不同的厂家扩展寄存器,如果你的程序中使用了这些扩展寄存器(主要为提高性能和一些故障检测),那么要看看新的PHY是否有类似功能替代需要说明的是,每个厂家生产的PHY都具有相同的基础寄存器,完全可以只使用基础寄存器来完成通讯

phy(x,y)应该是p(i,j)

最好xx=[-002:00004:002];

yy=[0:001:1];

a=01;

for i=1:101

x=xx(1,i) ;

for j=1:101

y=yy(1,j);

phy(x,y)=(1/pi)atan((sin(piy)sinh(pia/2))/(cosh(pix)-cosh(piy)cosh(pia/2)));

end

end

phy

这样x和y就不显示了,只显示结果

根据我的了解,如果Linux应用层读取不到物理地址,原因可能是硬件设备不支持或者内核没有正确加载硬件模块。在这种情况下,建议你可以参考Linux内核文档来检查内核模块,并确认与硬件相关的驱动程序已正确加载。

以上就是关于如何看网卡上phy的版本全部的内容,包括:如何看网卡上phy的版本、各位大侠如果PHY使用外部时钟还需要配置PA8吗、如何安装生物软件PhyML等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10068161.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存