精华内容
下载资源
问答
  • 电信设备-在至少一个移动通信单元和通信系统之间传输基于以太网传输协议的数据分组的方法.zip
  • 包含AVB 协议规范AVDECCIEEE1722.1-2013,总共366页。 以太网音视频桥接技术(Ethernet Audio/Video Bridging,以下简称 Ethernet AVB)是一项新的 IEEE 802 标准,其在传统以太网络的基础上,通过保障带宽 ...
  • 通信协议是一种分层结构的,根据 ISO 的 7 层模型通信协议分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。如果用户想通过卓岚 ZLSN 模块的以太网透明传输协议实现串口数据和以太网数据的转发,
  • 最近研究远距离差分视频传输方案,理所当然想到了LVDS协议。至于选用cameralink传输线,还是选用其他方案,本人更倾向于廉价的RJ45以太网线来实现LVDS差分信号的传输
  • 参考链接:车载以太网 - SOME/IP简介 - 知乎 目录 ...SOME/IP其实是构架在传输层之上的应用层通信协议,它的内容虽然很多很杂,但本质上也就是定义了SOME/IP 包头和数据的内容而已。 WHY o..

    参考链接:车载以太网 - SOME/IP简介 - 知乎

    目录

    WHAT

    WHY

    WHERE ,WHEN


    WHAT

    SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是车载以太网通信引入的一个概念,位于OSI 7层模型的层4之上。

    ↑ SOME/IP数据在以太网报文中的位置

    SOME/IP其实是构架在传输层之上的应用层通信协议,它的内容虽然很多很杂,但本质上也就是定义了SOME/IP 包头和数据的内容而已。

    WHY

    old CAN:在以CAN总线为主的车载网络中,通信过程是面向信号的(除了诊断通信之外),这是一种根据发送者需求实现的通信过程,当发送者发现信号的值变化了,或者发送周期到了,就会发送信息,而不考虑接收者是否有需求。

    new Ethernet:而SOME/IP则不同,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。

    WHERE ,WHEN

    在车载网络中,某个ECU有时会需要调用实现在其他ECU上的个服务,这个时候它俩就分别扮演了client和server的角色,而SOME/IP就是实现这种远程服务调用的接口,如下图所示。

    ↑服务的远程调用

    展开全文
  • 以太网完整协议(一)

    万次阅读 多人点赞 2017-05-03 15:54:31
    以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网传输的数据帧结构,如下图所示。...

    一、以太网中数据帧结构

    以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如下图所示。

                  

    在物理层上看,一个完整的以太网帧有7个字段,事实上,前两个字段并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的。为了实现底层数据的正确阐述,物理层使用7个字节前同步码(0和1交替的56位(55-55-55-55-55-55-55))实现物理层帧输入/输出同步;使用1个字节的SFD(帧首定界符,固定为10101011)标识帧的开始。上图中剩下的5个字段是真正的以太网数据,其中包含了目的地址和源地址,它们都是6字节长度(通常每个网卡都有1个6个字节MAC地址,以在以太网中唯一地标识自己)。网卡接收数据时,通过将目的地址字段和自身的MAC地址做比较,判断是否接收该数据包。通常,将这里的6字节目的地址按照下面的格式来书写,如:00-01-02-03-04-05。这6个字节在以太网中是按照从左到右的顺序发送的,同时对每个字节来说,最先发送的是最低位bit0,最后是最高位bit7。

          在以太网帧中,目的地址可以分为三类:单播地址、多播地址和广播地址。单播地址通常与一个具体网卡的MAC地址相对应,它要求第一个字节的bit0(即最先发出去的位)必须是0;多播地址则要求第一个字节的bit0为1,这样,在网络中多播地址不会与任何网卡的MAC相同,多播数据可以被很多个网卡同时接收;广播地址的所有48位全为1(即FF-FF-FF-FF-FF-FF),同一局域网中的所有网卡可以接收广播数据包。

    上图中的长度/类型具有两个意义,当这两个字节的值小雨1518时,那么它就代表其后数据字段的长度;如果这两个字节的值大于1518,则表示该以太网帧中的数据属于哪个上层协议(例如0x800,代表IP数据包;0x806,代表ARP数据包等。)

    在使用网卡进行数据包的发送与接收时,网卡已为我们完成了物理层的所有工作,驱动程序要做的是,在发送数据时,将目的地址、源地址、类型/长度、数据和填充这些值写入网卡,网卡自动计算其CRC并添加在数据帧尾部,同时对数据帧进行物理层的封装,最后将数据帧发送出去;在接收数据时,网卡会自动检测并接收数据包,验证校验和并把上述四个字段的值放在内部SRAM中供控制器读取。

    TCP/IP协议有自己的地址:32bit的IP地址(网络地址),网络层发送数据包时只知道目的地址的IP地址,而底层接口(如以太网驱动程序)必须知道对方的硬件地址才能将数据发送出去。

    二、ARP协议

    ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射,为上层将底层的物理地址差异屏蔽起来,这样上层的因特网协议就可以灵活地使用IP地址进行通信了。ARP协议的基本功能是使用目标主机的IP地址,查询其对应的MAC地址,以保证底层链路上数据包通信的进行。为了实现在网络接口物理地址与IP地址间的转换,ARP协议中引入了ARP缓存表的概念。ARP缓存表中记录了一条一条的<IP地址,MAC地址>对,他们是主机最近运行获得的关于周围其他主机的IP地址到物理地址的绑定,当需要发送IP数据包时,ARP层根据目的IP地址来查找ARP缓存表,并将匹配的MAC地址装入以太网帧首部,最后发送以太网数据。

    ARP缓存表的建立与ARP数据包是密切相关的。在以太网中,ARP数据包和IP数据包是两个独立的部分,它们都封装在以太网帧中发送。ARP数据包的种类有两种:一是ARP请求包,它是通过以太网广播的方式发送的,用于向具有某个IP地址的主机发送请求,希望该主机返回其MAC地址;二是ARP应答包,收到ARP请求的主机会比对该数据包中的IP地址与自己的IP地址是否符合,若是,则该主机向源主机返回一个ARP应答包。向源主机报告自己的MAC地址。源主机通过提取ARP应答包中的相关字段来更新ARP缓存表。在Windows控制台上输入arp -a,可以查看操作系统中使用的ARP缓存表。

    举一个简单的例子来看看ARP的功能。假如我们的主机(192.168.1.11)需要向开发板(192.168.1.37)发送一个IP数据包,当发送数据时,主机会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址为(04-02-35-00-00-01),此时,主机直接把目标MAC地址写入以太网首部发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,此时比较不幸,我们的数据需要被延迟发送,随后主机会先在网络上发送一个广播(ARP请求,以太网目的地址为FF-FF-FF-FF-FF-FF),广播的ARP请求表示同一网段内所有主机将会收到这样一条信息:“192.168.1.37的MAC地址是什么?请回答”。网络IP地址为192.168.1.37(开发板)的主机接收到这个帧后,它有义务做出这样的回答(ARP应答):“192.168.1.37的MAC地址是(04-02-35-00-00-01)”。这样,主机就知道了开发板的MAC地址,先前被延时的数据包就可以被发送了,此外,主机将这个地址对保存在缓存表中,以便后续数据包发送时使用。

    ARP协议的核心就是对ARP缓存表的操作。发送数据包时,查找缓存表以得到目的MAC地址,此外,ARP还需要不断地处理ARP请求包和ARP应答包,以保证缓存表中各个表项的有效性。ARP的实质就是对缓存表的建立、更新、查询等操作。

    2.2 ARP报文

    要在源主机上建立关于目标主机的IP地址与MAC地址对应表项,则源主机和目的主机的基本信息交互式必须的,简单地说就是,源主机如何告诉目的主机:我需要你的MAC地址;而目的主机如何回复:这就是我的MAC地址。这时ARP报文(ARP数据包)就派上用场了。

    ARP请求和ARP应答都是被组装在一个ARP数据包中发送的,ARP包的组成结构如下图所示。需要注意的是:ARP包时被封装在以太网帧中发送的,所以在图中也列出了以太网帧头部。

          以太网帧头部中的前两个字段是以太网的MAC地址和源MAC地址,目的地址为全1的特殊地址是以太网广播地址。在ARP表项建立前,源主机只知道目的主机的IP地址,并不知道其MAC地址,所以在数据链路上,源主机只有通过广播的方式将ARP请求数据包发送出去,同一网段上的所有以太网接口都会接收到广播的数据包。

           两个字节长的以太网帧类型表示帧中数据的类型。对于ARP包来说,该字段值为0x0806;对IP包来说,该字段的值为0x0800。接下来就是ARP数据包部分了,第一个硬件类型字段表示发送方想要知道的硬件接口类型,对于以太网MAC地址,它的值为1.协议类型字段表示要映射的协议地址类型,它的值为0x0800时,即表示要映射为IP地址,该值与以太网数据帧头中的类型字段的值使用相同的一组值。

    接下来的两个单字节长度的字段,称为硬件地址长度和协议地址长度,它们分别指出硬件地址和协议地址的长度,长度单位为字节。对于以太网上ARP请求或应答来说,它们的值分别为6和4,代表MAC地址的长度和IP地址的长度。在ARP协议包中流出硬件地址长度和协议地址长度字段可以使得ARP协议在任何网络中被使用,而不仅仅只在以太网中。

          操作字段op指出ARP数据包的类型,它们可以使ARP请求(值为1)、ARP应答(值为2)。

          接下来的四个字段是发送端的以太网MAC地址、发送端的IP地址、目的端的以太网MAC地址和目的端的IP地址。





    展开全文
  • 以太网实时音频传输协议,实用实用,非常实用,欢迎能够下载
  • 六种实时以太网通信协议,Ethernet等等
  • 通过阅读本文您将了解基于以太网的ATA传输协议(AoE)。之后笔者会向您介绍为什么AoE协议最后会成为Coraid业务的未来展望,以及10个有关ATA在以太网上传输的十个相关知识点。  基于以太网的ATA传输协议(AoE)起初...
  • 本实验将实现视频图像的以太网传输,也相当于用用黑金的 500 万摄像头 AN5642输出。以太网传输用 Ethernet UDP网口的 UDP 数据包,提取 JP FIFO 模块用于存储摄像头 OV5640数据包的长度时,触发一次 UDP 实验时AX...
  • 基于以太网的ATA传输协议(AoE)起初是由几位来自贝尔实验室的技术人员设计的一项开源社区计划。在背后支持AoE的最大公司就是Coraid,这也是一家在AoE存储阵列市场上的大公司。除了Coraid之外,还有另外的一些小公司...
  • 汽车以太网对TCP/IP协议簇的应用

    千次阅读 2019-03-05 14:48:05
    汽车以太网与传统以太网的主要区别在于物理层及应用层,而网络层及传输层大多参考传统应用,即TCP/IP协议簇(TSN暂不讨论)。使用传统网络TCP/IP协议簇,既能加快汽车以太网数据传输的速度,又能与因特网无缝连接,...

    汽车以太网与传统以太网的主要区别在于物理层及应用层,而网络层及传输层大多参考传统应用,即TCP/IP协议簇(TSN暂不讨论)。使用传统网络TCP/IP协议簇,既能加快汽车以太网数据传输的速度,又能与因特网无缝连接,从而实现车内与车外的信息交互。同时,还具有良好的扩展空间以及支持新增上层应用协议的传输。

    OSI(开放系统集成)模型是通信行业的基本模型,具体规定了每一层所应具备的功能:

      第七层:应用层     定义了用于在网络中进行通信和数据传输的接口 - 用户程式;提供标准服务,比如虚拟终端、文件以及任务的传输 和处理; 
      第六层:表示层     掩盖不同系统间的数据格式的不同性; 指定独立结构的数据传输格式; 数据的编码和解码;加密和解密;压缩和 解压缩 
      第五层:会话层     管理用户会话和对话; 控制用户间逻辑连接的建立和挂断;报告上一层发生的错误 
      第四层:传输层     管理网络中端到端的信息传送; 通过错误纠正和流控制机制提供可靠且有序的数据包传送; 提供面向无连接的数 据包的传送; 
      第三层:网络层     定义网络设备间如何传输数据; 根据唯一的网络设备地址路由数据包;提供流和拥塞控制以防止网络资源的损耗 
      第二层:数据链路层 定义操作通信连接的程序; 封装数据包为数据帧; 监测和纠正数据包传输错误 
      第一层:物理层      定义通过网络设备发送数据的物理方式; 作为网络媒介和设备间的接口;定义光学、电气以及机械特性。

    而TCP/IP协议簇亦是一种分层结构,相对应OSI模型中的第三层网络层及第四层传输层。TCP/IP(Transmission Control Protocol/Internet Protocol)协议包含了一系列构成互联网络基础的网络协议,是Internet的核心协议。

    TCP/IP协议簇的每一层包含的都是一些相对独立的协议,使用时可以根据系统的需要把这些协议混合并重新搭配。当应用层的数据用TCP传送数据时,数据首先被传送到协议栈中,然后逐层封装,最后在物理层以比特流的形式进行传输。其中在每一层的封装过程中都要增加一些首部信息(有时也需要尾部信息)。具体封装过程如上图所示,首部信息中相应字段用来表明本层所服务的上层协议类型,接收端可以依据这些字段进行分用。


    接下来分别介绍一下网络层及传输层的一些主要协议。

    1. 网络层

    以太网在数据链路层传输数据时,局限于一个子网内。若两个不在同一子网的设备需要进行通信,就需要借助路由器进行数据转发。因此传输过程中就需要找到一种方法,能够区分MAC地址是否在同一个子网内,而MAC地址本身无法实现这一点。因机是否属于同一个子网。这套地址也称做“网络地址”,即IP地址。

    • IP协议:

      IP协议是TCP/IP协议簇的核心,传输层上的数据信息和网络层上的控制信息都以IP报文的形式传输。IP协议定义的地址称为IP地址,IPv4地址是一个32位的地址,它定义了一台主机或路由器与因特网连接时全球唯一的地址。使用IP地址判断设备是否在同一子网的方法就是将IP地址与子网掩码作“与”运算,求各自的子网地址,如果相同则在同一子网中。

      网络层传输的数据内容称为数据报文,包含首部和数据两个部分。IP报文首部如上图所示。主要包含了版本号、长度、IP地址、分片等信息。IP报文的首部长度为20到60字节,整个数据报文的总长度最大为65535个字节,而以太网帧(二层报文)的数据部分最长只有1500字节,因此如果IP报文长度超过了1500字节,就需要进行分片传输。

      汽车行业中通常会将车内节点设置为静态IP地址,即预先分配好固定的IP地址。而车外节点(比如T-Box、诊断边缘节点等)则会通过DHCP分配动态IP地址。

    • ARP协议:

      IP数据传输是封装在以太网帧中传输的,因此传输过程中同时需要MAC地址及IP地址。而通常情况下目标主机的IP地址是已知的,而MAC地址是不知道的,所以就需要一种能够通过目标主机IP地址获得其MAC地址的机制。这里又可以分为两种情况。

      • 第一种情况:如果两个主机不在同一子网内,就需要把数据报文发送到两个子网连接处的路由器或网关(Router/Gateway),让网管处理。
      • 第二种情况:如果两台主机在一个子网内,那么就需要使用ARP协议,得到目的主机的MAC地址。 

           ARP协议也是通过发送数据报文(封装在以太网帧中)来实现的。其报文中包含发送端的IP地址及MAC地址,接收端的IP地址,在接         收端的MAC地址处输入全0(因为此时不知道MAC地址,以全0代替)。以太网帧的目的地址填入全F,表示这是一个广播地址(此时         不知道接收端目的地址,广播发送给同一子网的所有主机),这些主机接收到数据报文之后,将目的IP地址与自己的IP地址表作比             较。若不同则丢弃,若相同则以单播方式向发送端发送ARP应答报文以报告自己的MAC地址。

    • ICMP协议:

      由于IP协议提供的是不可靠的、无连接的数据传输方式,它本身缺少差错报告和纠正机制,ICMP协议就是为了弥补这个缺憾而产生的,其负责网络中的错误处理。虽然ICMP是一个网络层协议,但是它的报文是先封装成IP报文,然后再封装到以太网帧中。如平时我们使用“ping命令”发送回送请求与应答报文来确定两台主机或路由器在IP层能否通信,就是一种典型的ICMP协议的应用。

    传输层

    有了MAC地址和IP地址,我们就可以在互联网上任意两台主机之间建立通信。但同一台主机上有许多程序(进程)都需要使用网络。比如,当我们一边浏览网页,一边使用QQ聊天时,一个数据包从网络上发来时,无法分辨出它表示的是网页的内容,还是聊天的内容。因此,还需一个参数来表示该数据包供哪个程序使用,这个参数就是端口(Port)。其本身就是不同网卡的程序编号,不同的程序对应于不同的端口。传输层的功能就是建立端口到端口的通信。只要确定了主机和端口,就可以实现程序之间的通信。代表主机的IP地址与端口号组合后成为“套接字”(socket)。

    • UDP协议:

    UDP是一种简单的、无连接、不可靠的传输协议。若某进程需要发送一个不关心其可靠性的报文,可使用UDP。UDP报文同样由首部和数据部分组成,首部主要定义了发送和接收端口。UDP报文封装在IP数据段中。UDP没有流量控制机制,在收到分组之后也不会有确认,但是它提供了某种程度的差错控制。如果在收到的UDP分组中检测到错误,则说明需要丢弃该分组。

    TCP协议:

    不同于UDP,TCP是一种面向连接的、可靠的传输协议。它能够保证两端通信主机之间的信息可达。在传送数据前,源主机需要先和目的主机建立连接,然后在此连接上,按顺序收发带有编号的数据段。同时,需要对每个数据段进行确认,如果指定时间内没有收到确认,源主机重发该数据段。数据传输完毕之后还需要将连接关闭。TCP能够正确处理传输过程中丢包、传输顺序错乱等异常情况。

    TCP报文同样由首部和数据部分组成,如上图所示首部中包含了源/目的端口、序号、确认号、控制字段等。这些控制字段主要用在TCP的流量控制、连接建立和终止、连接异常终止以及数据传送方式等方面。虽然在某些特定应用场合中,TCP/IP协议未来有可能会被AVB/TSN协议所取代,但截至目前,仍然是汽车以太网通信中普遍采用的通信方式。许多汽车相关的应用层协议诸如DoIP、SOME/IP、UDPNM等都是基于TCP/IP实现的。TCP/IP中Socket的设计是SOA架构设计中的重要部分,而TCP/IP协议栈的开发或集成则是以太网节点实现中的重要部分。

    展开全文
  • 1.1:以太网是实现LAN的一种技术,它允许嵌入式系统连接到一个LAN中,并可通过使用网关经Internet连接到外部世界,以太网的主要目的是向LAN发送和从LAN接收以太网帧,在TCP/IP协议族中,不包括以太网协议,可以理解...

    目录:

    1:概述

    2:MAC地址设置

    3:以太网协议

    4:PING指令测试


    1、概述

    1.1:以太网是实现LAN的一种技术,它允许嵌入式系统连接到一个LAN中,并可通过使用网关经Internet连接到外部世界,以太网的主要目的是向LAN发送和从LAN接收以太网帧,在TCP/IP协议族中,不包括以太网协议,可以理解它为TCP/IP中的网络接口层(物理层和数据链路层),为TCP/IP中的上层协议(比如:IP协议和ARP协议)提供服务;

    1.2:ENC28J60是带SPI接口的以太网控制器,支持IEEE802.3协议,当然,也兼容Ethernet第二版的协议,此协议帧结构简单,被大量使用;

    1.3:以太网帧结构:目的mac地址+源mac地址+协议类型+数据;

    1.4:本篇编写ENC28J60驱动,实现以太网控制,将我们的嵌入式设备连接到LAN中,并使用ping命令进行测试;

    1.7:开发板:STM32F103ZERT 奋斗开发板V5 软件环境:KEIL MDK5


    2、MAC地址设置

    2.1:MAC地址是在以太网mac层定义的,也就是物理地址,每一种LAN技术的网络都有其唯一对应的MAC地址,常用的格式为48位;

    2.2:mac地址的47位是单一地址或者组地址位,该位为0,表示一个单一的站地址;该位为1,表示一个组地址(多播地址),所有位都为1,表示广播地址;

    2.3:mac地址的46位是全球管理或者本地管理位,该位为0,mac地址遵循全球地址管理格式,接下来的22位是生产商标识符,最后剩下的24位是由相关机构分配的唯一地址,我们的电脑都遵循这种方式的编址方式;该位为1,剩下的64位构成本地管理地址,由人为规定;

    2.4:enc28j60模块不提供mac地址,需要用户自己定义mac地址,如果是用于私有网路,任意定义即可,如果需要访问外网,就必须由用户定义一个全球唯一的mac地址,如果需要,可以利用某些厂家的芯片上的mac地址来定义,比如:美国微芯的24AA02E48串行eeprom芯片中的mac地址;一般将定义的mac地址存放在flash或者eeprom中,如果使用24AA02E48芯片,即可省去这一步;

    2.5:本例程中,为了方便,任意定义了mac地址;


    3、以太网协议

    3.1:建立keil工程,如下图,APP目录中的app.c文件中实现main函数;TCP/IP STACK协议栈目录中ethernet.c文件中实现以太网协议调用的函数,都是包裹函数,包裹enc28j60驱动中的函数;DRIVEER中实现定时器、串口(用于控制台)、spi、enc28j60驱动;


    3.2:以太网部分的实现,主要完成ethernet.h、ethernet.c和app.c三个文件;

    ethernet.h文件:定义以太网头部结构体,RX_FRAME、TX_FRAME宏定义,所有以太网数据帧的读写都是通过这两个宏来实现;

    #ifndef ETHERNET
    #define ETHERNET
    
    #include "stack.h"
    #include "enc28j60.h"
    
    /*地址定义*/
    #define MAC_ADDRESS {0x00,0x14,0x0B,0x3F,0x04,0xB1}
    #define IP_ADDRESS {192,168,1,25}
    #define GATEWAY_ADDRESS {192,168,1,1}
    #define SUBNETMASK {255,255,255,0}
    
    /*协议类型定义*/
    #define ARP_PROTOCOL 0x0806
    #define IP_PROTOCOL 0x0800
    #define ICMP_PROTOCOL 1
    #define UDP_PROTOCOL 17
    #define TCP_PROTOCOL 6
    
    #define RX_FRAME ((struct eth_header *)&rx_buff[0])
    #define TX_FRAME ((struct eth_header *)&tx_buff[0])
    
    /*以太网头部定义*/
    #pragma pack(1)
    struct eth_header
    {
    	unsigned char destination[6];
      unsigned char source[6];
      unsigned short protocol;
    };
    #pragma pack()
    
    extern char rx_buff[PACKAGE_BUFF_SIZE];
    extern char tx_buff[PACKAGE_BUFF_SIZE];
    
    void ethernet_init(void);
    unsigned int ethernet_read(void);
    void ethernet_send(void);
    
    #endif
    


    ethernet.c文件:包裹enc28j60.c文件中的数据包接受和发送函数以及初始化函数,用于以太网协议数据帧的接受和发送;

    <span style="font-size:12px;">#include "ethernet.h"
    
    char rx_buff[PACKAGE_BUFF_SIZE];
    char tx_buff[PACKAGE_BUFF_SIZE];
    char MAC[6] = MAC_ADDRESS;
    char IP[4] = IP_ADDRESS;
    char GateWay[4] = GATEWAY_ADDRESS;
    char SubNetMask[4] = SUBNETMASK;
    
    void ethernet_init(void)
    {
    	enc28j60Init(MAC); 
    }
    
    unsigned int ethernet_read(void)
    {
    	return enc28j60PacketReceive(rx_buff, PACKAGE_BUFF_SIZE);
    }
    
    void ethernet_send(void)
    {
    	enc28j60_packet_send (tx_buff, PACKAGE_BUFF_SIZE);
    }
    
    </span>

    3.3:实现main函数,完成所需模块的初始化,然后阻塞等待以太网接口接受到数据帧,如果收到数据帧,打印收到的以太网数据帧,包括目的mac地址、源mac地址、协议类型;
    app.c
    #include "stm32f10x.h"
    #include "usart_init.h"
    #include "time3_init.h"
    #include "ethernet.h"
    #include "spi_init.h"
    #include "enc28j60.h"
    #include "ethernet.h"
    
    u32 baud_menu[] = {1200,2400,3840,4800,5760,9600,19200,115200};
    u16 ARR = 0;
    
    int main()
    {
    	unsigned int len = 0;
    	ARR = T_35_Set(baud_menu[7]);                   //根据3.5T时间,计算定时器3重载寄存器的值
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置NVIC中断分组2:2位抢占优先级,2位响应优先级 
    	Usart_Init(baud_menu[7]);   	                  //串口初始化
    	TIM3_Int_Init(ARR,71);                          //定时器初始化,3.5T时间中断  
    	spi_init();                                     //spi初始化
    	ethernet_init();                                //以太网芯片初始化
    	
    	while(1)
    	{
    		len = ethernet_read();
    		if(len > 0)
    		{
    			printf("*****************Ethernet Frame*******************\r\n");
    			printf("\r\n");
    			printf("Destination Address: %02x-%02x-%02x-%02x-%02x-%02x\r\n",
    						RX_FRAME->destination[0],
    						RX_FRAME->destination[1],
    						RX_FRAME->destination[2],
    						RX_FRAME->destination[3],
    						RX_FRAME->destination[4],
    						RX_FRAME->destination[5]);
    			printf("\r\n");
    			printf("Source Address: %02x-%02x-%02x-%02x-%02x-%02x\r\n",
    						RX_FRAME->source[0],
    						RX_FRAME->source[1],
    						RX_FRAME->source[2],
    						RX_FRAME->source[3],
    						RX_FRAME->source[4],
    						RX_FRAME->source[5]);
    			printf("\r\n");
    			printf("Protocol Type:%04x\r\n",HTONS(RX_FRAME->protocol));
    			printf("\r\n");
    			printf("*****************Ethernet Frame*******************\r\n\r\n");
    		}
    		
    		/*接收串口数据成功,处理接受到的数据*/
    		if(Usart_Receive_Ok == 1)
    		{
    			Usart_Receive_Ok = 0;
    			Usart_Handle_func();                       //处理接收到的数据
    		}
    	}
    }
    
    
    


    4、PING指令测试

    4.1:将开发板通过网线连接至路由器,此时,电脑和开发板在同一个局域网,然后在电脑上使用ping指令,确保ping指令的ip地址没有被占用且ip地址和路由器地址在同一个网段,如ping 192.168.1.16;
    4.2:ping指令是基于ICMP协议的程序,当ping一个IP时,如果此ip地址没有在ARP条目中,ping程序会发送一个广播的以太网帧至局域网来跟新arp条目;
    4.3:当使用ping指令连接一个未连接过的ip时,本例程会受到一个以太网广播帧,并将其打印出来,包括全为1的目的mac地址+源mac地址(电脑mac地址+0806(协议类型)),如下图:










    展开全文
  • 以太网各种协议详解

    万次阅读 2014-02-13 17:17:38
    板子处于复位状态时,先做好一系列的准备工作。 1、从EEROM中读取板子的MAC...3、等待片刻,使以太网稳定。随后,启动DHCP协议,获取该电路板的IP地址。其中,PC机是服务机,板子是客户机。 4、获得板子的IP地址之后
  • 以太网的TCP与UDP协议的区别

    千次阅读 2019-12-26 11:14:45
    在Internet上流行的协议是TCP/IP协议,该协议中对低于1024的端口都有确切的定义,他们对应着...TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠...
  • 以太网MAC协议

    2012-10-18 19:24:20
    详细介绍了以太网MAC层的数据格式、前导码、FCS等的值,以及串行发送顺序等底层知识,对用FPGA自己实现MII接口,了解传输过程非常有用
  • CH392 芯片自带 10M 以太网介质传输层(MAC)和物理层(PHY),完全兼容 IEEE802.3 协议, 内置了 IP、DHCP、ARP、ICMP、IGMP、UDP、TCP 等以太网协议栈固件。单片机系统可以方便的通 过 CH392 芯片进行网络通讯。 CH...
  • 车载以太网

    2021-01-24 22:43:06
    2.2 AVB 协议簇 AVB——以太网音视频桥接技术(Ethernet Audio Video Bridging)是IEEE的802.1任务组于2005开始制定的一套基于新的以太网架构的用于实时音视频的传输协议集。 汽车在信息娱乐与驾驶辅助领域的快速...
  • 该文介绍了ZedBoard平台下可编程逻辑端SPI接口和ARM处理器...结合实例阐述了可编程逻辑端SPI接口设计和Linux下IP驱动生成,以及采用UDP/IP协议实现以太网传输的技术。实验结果证明了该系统能够精确地完成实时数据传输。
  • 以太网协议-传输介质

    千次阅读 2017-11-12 21:10:02
    以太网协议-传输介质
  • 未来满足这些需求,就对传统的电子电器架构带来了严峻的考验,需要越来越多的电子部件参与信息交互,导致对网络传输速率,稳定性,负载率等方面都提出了更为严格的挑战。 除此以外,随着人们对汽车多媒体以及影音...
  • 对比 CAN 总线通信协议的分层结构、传输帧机构以及报文发送的仲裁机制,深入研究了 100Mbps 传输速率、非屏蔽低廉双绞线的车载以太网接口层、网络层、传输层 TCP/IP 及应用层的传输服务协议,介绍了车载以太网的帧...
  • 电网故障信息关联的以太网通信协议扩展了IEC60870-5-103协议,将IEC60870-5-103协议采用RS-485通信方式扩展为以太网通信方式,链路层采用IEC60870-5-104模式,将故障时刻的录波、事故报告、定值、压板设置、开关变位、...
  • 关于以太网传输

    千次阅读 多人点赞 2018-08-10 20:10:57
    深入浅出 TCP/IP 协议栈  参考这个:... ...   TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/...
  • 对比 CAN 总线通信协议的分层结构、传输帧机构以及报文发送的仲裁机制,深入研究了 100Mbps 传输速率、非屏蔽低廉双绞线的车载以太网接口层、网络层、传输层 TCP/IP 及应用层的传输服务协议,介绍了车载以太网的帧...
  • 以太网协议

    2018-10-11 20:16:10
    以太网协议的解析程序,有利于读者对以太网帧的进行学习和解析
  • 目录一、以太网二、网络模型三、以太网数据包格式以太网帧格式三、TCP/IP协议簇1、IP协议2、UDP协议 因为没有做过以太网的项目,也没有进行过以太网通信测试,本片博客仅仅是对以太网协议极小一部分的学习了解。如有...
  • 以太网传输调试(1)

    2020-05-01 10:55:21
    以太网是现有局域网的最通用协议标准(IEEE802.3),包括物理层走线,电子信号和介质访问层协议的内容。 标准以太网:10Mbit/s 款速以太网:100Mbit/s 千兆以太网:1000Mbit/s 接口类型:RJ45,RJ11(电话线接口),...
  • 基于车载以太网的音视频传输 AVB vs RTP背景方案选择RTPAVB结束语 背景 问:近些年,随着智能驾驶技术的发展和车内影音娱乐系统的丰富,...那么,传输音视频数据和其他普通数据采用的传输协议相同吗? 王师傅:是不
  • sctp协议以太网报文,传输的http协议,可以用wireshark软件打开,适用于学习sctp报文解析,学习各种工业以太网协议可参考本人其他下载文件

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,116
精华内容 33,646
关键字:

以太网传输协议