0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全硬件TCP/IP协议栈学习笔记 (第八天:W5500+FPGA实现tcp连接)

学FPGA,慢慢来 2017-12-18 10:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

经历了一个多月的调试,最终终于使用basys2将tcp模式配置成功了。

首先说一下思路吧,首先W5500的发送与接收与开发板的通信使用的是SPI协议,下降沿发送,上升沿接收。每次发送的数据格式为前十六位为地址位,之后五位为寄存器区的选块,例如常用的为5‘b00000为通用寄存器区,5’b00001为socket1寄存器区。接下来一位为读写操作位,0为读数据,1为写数据。接下来两位是SPI模式选择,00代表使用SCSN信号确定位宽,01代表一位字长(八个二进制数),10代表两位字长(十六个二进制数),11代表四位字长(32个二进制数)。随后便是和之前字长相匹配的数据位。格式如下:

0000000000000000_ 00000__1_01_00000000

地址位 寄存器区 写 一位字长 数据

在发送数据与接收数据的时候,要保证数据位和SCK信号沿对其,同时要保证SCSN为低电平。具体的SPI发送可以参考之前的博客。

说完了发送的格式,接下来我们来说一说发送的数据。

首先我们要明确我们要配置数据,我们要发送我们的IP,GATEWAY,MAC,端口以及目的IP,端口。实际上我们讲的发送应该是配置寄存器,我们是在将我们发送所必须的信息写入寄存器中。在发送数据之前我们要首先将我们W5500通过外边的接口硬复位,之后对模式寄存器进行读操作,直到模式寄存器的最低位为0时,即复位完成,我们在进行其他的写入操作。在复位结束之后,我们可以将IP,MAC,GATEWAY等数据写入对应的寄存器中,具体的寄存器地址和所属寄存器区具体参看W5500的手册,里边的东西都写的非常清楚。

在配置完成这些之后,我们对socket1 mode即1端口的模式选择寄存器进行书写,将W5500模式选择为TCP模式。具体的操作为将对应的后三位写入为001。之后再对该寄存器进行读操作,以此来确定模块却是在TCP模式运行。确认之后开始配置目标IP,端口,最大字长等信息。之所以先配置TCP模式是因为我们后边配置的寄存器都属于端口寄存器区,而我们在配置之前应先配置模式寄存器。

完成这些配置之后,我们来接触两个很特殊但是也很重要的寄存器,一个是CR寄存器,另一个是SR寄存器(原谅我平板打字实在不想写全称了)。在我们完成以上基础的寄存器配置之后,我们对CR寄存器写入对应特定的值,该值可以让模块进行对应的操作。而我们要知道该操作是否完成,我们就要对SR寄存器进行读操作,读出的对应值代表模块当前所处在的模式状态。如我们最初对CR寄存器写入值0x01,表示我们将模块设置为TCP,之后我们对SR寄存器进行读操作,如果读出的值是0x13,那么代表模块当前处在TCP客户端模式,我们即可进行下一步操作。我们之后再进行对应的操作,例如要将模块设置为侦听状态下,将CR寄存器写入0x04,读SR寄存器值为0x17即为处在侦听状态。接下来我们对发送区读指针寄存器读操作来获取当前读指针,随后根据读指针读出的数据将我们要发送的数据写入到发送缓存即可。这样就完成了数据的发送。

这样,我们将配置的大概思路讲完了。

设计模块如下

在具体书写时,我将SPI发送与接收写在了一个模块,而且发送与接收都只是发送8位和接收8位。SCSN信号是在该模块中产生,具体发送与接收都是使用状态机来书写,SCSN信号在发送第一位的时候拉低,最后一位发送结束之后拉高。(注意,是发送结束之后不是发送最后一位时就拉低。)SPI发送与接收部分就结束了,在书写时要注意接收条件为SCSN信号为低信号同时SCK信号的上升沿,发送的条件是SCSN信号为低同时SCK信号的下降沿。

8位发送数据波形如下

我们将要发送的信息写在一个状态机模块中,通过状态机来实现发送信息的按顺序发送。我们将每次发送的信息按照8位来拆解,想对应的想发送一位时就要发送总共32位,和下来就是发送四段。两位时发送五段,四位时发送7段。相应的读操作也是一样,由于我在我所做的项目中所需读的数据均为一个字长,即为8位,所以我只写了读一个字长的操作。拆解的过程就是移位加取高8位,另加一个计数器即可完成。而每次发送的触发信号即为上边的SPI控制模块在接受或者发送结束后发送的结束信号。当接收到发送或接收的结束信号,即可将下一个8位数据传输给SPI控制模块。

最后我写了一个同步FIFO来将几个拆分的几位数据合并。

合并之后波形如下

其实最初这个FIFO是用来救场的,由于最初书写的时候没有认真的研究说明书,想成每次发送8位,后来意识到这件事情的时候时间有些紧张,就想写一个FIFO来救个场,就过再后来做的时候,发现实际上是因祸得福,这种书写方式可以有效的减少资源,而且在SPI控制模块也会更加简单,在最后纠错时也好找错误字段。

到此,设计思路和配置思路均结束。这几天还是有些忙,稍后把仿真图补一下吧。等到元旦后期末结束了认认真真的将W5500数据传输从硬件连接到网络编程写一篇大报告分享出来。

最后,说个心声吧,从ping通到今天完成,足足过了5,6这五六周,有踌躇满志,更多的是茫然无措。但是我就决定一定要做出来。现在完成之后激动的都不想睡觉了抓紧时间总结发出来。代码量对于我来说感觉仿佛突破了自己,风格可能还很稚嫩,但是真的很有成就感。尤其是在一个问题卡住了2周多的时间结果一个偶然发现是配置管脚的UCF错了但时候,恨透了愚蠢的自己。这段时间的学习真的收获了太多了,感谢这段时间的自己。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA设计
    +关注

    关注

    9

    文章

    429

    浏览量

    27997
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1417

    浏览量

    83010
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么会有TCP/IP协议

    见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个
    发表于 12-03 06:28

    STM32驱动W5500作为客户端进行通讯

    SR-ES1内嵌Wiznet的W5500芯片,使用硬件逻辑门电路实现TCP/IP协议
    的头像 发表于 10-14 17:19 968次阅读
    STM32驱动<b class='flag-5'>W5500</b>作为客户端进行通讯

    实现EtherNet/IP网络与Modbus TCP网络之间数据互通

    硬件连接与配置 使用工业以太网网关(如ENE-350)作为桥接设备,通过以太网交换机实现硬件互联。 网关需根据应用场景配置为EtherNet/IP
    的头像 发表于 08-06 13:48 544次阅读
    <b class='flag-5'>实现</b>EtherNet/<b class='flag-5'>IP</b>网络与Modbus <b class='flag-5'>TCP</b>网络之间数据互通

    GraniStudio : TCP/IP(Socket)协议深度剖析

    在工业自动化与物联网领域,TCP/IP(Socket)协议作为应用最广泛的网络通信标准,是实现设备间数据交互的核心技术。GraniStudio 软件作为工业级零代码开发平台,其内置的
    的头像 发表于 08-03 22:20 895次阅读
    GraniStudio : <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>(Socket)<b class='flag-5'>协议</b>深度剖析

    什么是Modbus TCP协议

    TCP/IP协议,通过以太网进行通信,并支持多个设备同时访问同一个Modbus TCP服务器。 一、
    的头像 发表于 07-23 17:18 3267次阅读
    什么是Modbus <b class='flag-5'>TCP</b><b class='flag-5'>协议</b>

    51+单片机TCP-IP+协议ZLIP源码

    概述 单片机上网技术,是当前的一个热门技术。单片机上网技术中的一个重要部分是在单片上实现 TCP/IP 协议。现在可获得的
    发表于 04-22 15:11

    EtherNet/IP转Modbus TCP:新能源风电监控与分析实用案例

    的控制系统、变流器等采用 MODBUS TCP 协议的设备以及基于 EtherNet/IP 协议的远程监控系统和数据分析系统均已正常运行且网络连接
    的头像 发表于 02-17 15:54 691次阅读
    EtherNet/<b class='flag-5'>IP</b>转Modbus <b class='flag-5'>TCP</b>:新能源风电监控与分析实用案例

    EtherNet/IP转Modbus TCP实现三菱变频器与制造执行系统连接通讯的配置案例

    EtherNet/IP转Modbus TCP实现三菱变频器与制造执行系统连接通讯的配置案例 一、案例背景 在一家汽车零部件生产工厂,有一批三菱变频器用于控制生产设备的电机转速,如车床、
    的头像 发表于 02-11 10:26 1081次阅读
    EtherNet/<b class='flag-5'>IP</b>转Modbus <b class='flag-5'>TCP</b><b class='flag-5'>实现</b>三菱变频器与制造执行系统<b class='flag-5'>连接</b>通讯的配置案例

    EtherNet/IP转Modbus TCP在新能源风力发电场远程监控与数据分析的配置案例

    到风电场的局域网。确保风力发电机组的控制系统、变流器等采用 MODBUS TCP 协议的设备以及基于 EtherNet/IP 协议的远程监控系统和数据分析系统均已正常运行且网络
    的头像 发表于 02-10 15:54 611次阅读
    EtherNet/<b class='flag-5'>IP</b>转Modbus <b class='flag-5'>TCP</b>在新能源风力发电场远程监控与数据分析的配置案例

    调试TCP协议连接的常用工具

    Wireshark 是一个开源的网络协议分析器,它可以捕获和分析网络上的数据包。Wireshark 支持多种协议,包括TCP/IP、HTTP、FTP等,是调试
    的头像 发表于 01-22 09:59 5151次阅读

    如何优化TCP协议的性能

    优化TCP协议的性能可以从多个方面入手,以下是一些关键的策略和方法: 一、调整TCP参数 TCP窗口大小 : 重要性 :TCP窗口大小是衡量
    的头像 发表于 01-22 09:52 1453次阅读

    TCP协议的安全性分析

    1. TCP协议的基本特性 TCP协议的主要目的是确保数据的可靠传输。它通过以下机制实现这一目标: 数据分段和重组 :
    的头像 发表于 01-22 09:48 1221次阅读

    TCP协议与UDP协议的区别

    1. 连接TCP(传输控制协议) : 面向连接 :在数据传输之前,TCP需要建立一个连接,这
    的头像 发表于 01-22 09:44 1737次阅读

    什么是TCP协议及其工作原理

    协议之一。它提供了一种可靠的、有序的、基于字节流的数据传输服务。TCP协议的主要特点包括: 面向连接 :在数据传输之前,TCP需要在通信双方
    的头像 发表于 01-22 09:41 2196次阅读

    MODBUS-TCP转Ethernet IP 网关连接空压机配置案例

    的空压机采用 MODBUS - TCP 协议进行数据传输,但企业的自动化控制系统主要基于 Ethernet IP 协议构建。为了实现空压机与
    的头像 发表于 01-08 17:38 1109次阅读
    MODBUS-<b class='flag-5'>TCP</b>转Ethernet <b class='flag-5'>IP</b> 网关<b class='flag-5'>连接</b>空压机配置案例