关于以太网通信

关于以太网通信

最近用了两种以太网芯片了,先是STM32F446+W5500,然后是STM32F429+LAN8720A,第二种虽然现在也能发数了,但是发送的数据一超过一千字节就会报错,实际上根本没有吃透这个LWIP,只是简单的去测试源代码都不能成功,等我搞明白了再来记录。

关于W5500这个芯片就很友好了,(中文官网)有一堆测试demo和调试指南,对于我这种一开始连以太网是什么都不知道的小白来说,真的不能够再好了。
附上连接:https://www.w5500.com/index.html
. 以下是关于TCP sever的一些理解:
想要实现以上基本也就两步,一、ping通。二、socket。

  1. 首先是单片机通过SPI去配置w5500的网络参数,如果配置的对,且PC端也设置的同一网段的话,就可以ping通。我在实际操作的时候遇到一些问题,首先插上了网线时候link灯不亮,检查硬件发现没有给w5500提供25M晶振,其他输入电压正常,然后灯还是不亮,由于我使用的网络变压器RJ45的电路是外接的就是没有集成到一块板子上,果然问题在这,没有给RJ45供电,加上电后网线的灯就亮了。如果这时候还是ping不通的话就去debug一下看看有没有正确的把网络参数写到W5500的配置寄存器里。
    关键点
    硬件上晶振25M,工作电压正常。
    软件上SPI通信
  2. Ping通了之后就是调用socket了,这个状态机就比较好理解,w5500一共有8个socket,而我只用了socket 0。如果socket处于连接状态
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以太网通信是一种常用的计算机网络通信协议,它使用以太网作为传输介质,实现了计算机之间的数据通信。在使用Verilog编写以太网通信代码时,我们需要考虑以太网的硬件层面和协议层面的实现。 首先,我们需要定义以太网通信所需要的信号和寄存器。以太网通信的硬件层面需要包括发送和接收数据所需的时钟信号、数据信号和控制信号等。同时,还需要定义缓冲区和寄存器来储存发送和接收的数据。 其次,我们需要实现以太网通信的协议层面。以太网通信协议使用的是CSMA/CD(Carrier Sense Multiple Access with Collision Detection)协议。在Verilog代码中,我们可以使用状态机来实现该协议。状态机可以通过定义不同的状态以及不同的转移条件来决定何时发送数据和接收数据,以及如何处理冲突和错误。 在以太网通信的Verilog代码中,我们需要实现发送和接收数据的功能。发送数据时,我们需要将要发送的数据通过数据信号传送到以太网接口,同时发送控制信号控制发送的时机和流程。接收数据时,我们需要监听数据信号,接收到数据后将其存储到接收缓冲区中,并通过控制信号判断接收的数据是否正确。 最后,我们还需要实现以太网通信的数据处理功能,例如数据的封装和解封装、校验和的计算和校验、错误的处理等。这一部分的实现与具体的以太网协议和数据格式相关,在Verilog代码中可以使用适当的模块或函数来实现这些功能。 综上所述,以太网通信的Verilog代码主要包括硬件层面和协议层面的实现。硬件层面包括定义信号和寄存器,协议层面包括实现状态机、发送和接收数据以及数据处理功能。通过编写这些代码,我们可以实现以太网通信功能,实现计算机间的数据传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值