《Cortex-M3开发技术及实践》课件第13章 以太网ETH_第1页
《Cortex-M3开发技术及实践》课件第13章 以太网ETH_第2页
《Cortex-M3开发技术及实践》课件第13章 以太网ETH_第3页
《Cortex-M3开发技术及实践》课件第13章 以太网ETH_第4页
《Cortex-M3开发技术及实践》课件第13章 以太网ETH_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章以太网ETH-2-本章目标了解以太网概念熟悉以太网工作方式熟悉以太网帧结构了解IEEE802.3协议熟悉STM32F107的ETH结构了解RMII接口熟悉LWIP协议栈特点掌握建立ETH模板方法-3-ETH简介

以太网(ETHernet,ETH)是由Xerox公司创建,并由Xerox、intel和DEC公司联合开发的基带局域网规范,是当今现有局域网采用的最通用的通信协议标准。本章将介绍以太网相关背景知识、STM32F107的ETH外设、LWIP协议栈和ETH模板建立等内容。-4-ETH简介--以太网物理层以太网采用无源的介质,按广播方式传播信息。它规定了物理层和数据链路层协议、物理层和数据链路层的接口以及数据链路层与更高层的接口。相关内容如下:物理层:物理层规定了以太网的基本物理属性数据链路层:数据链路层的主要功能是完成帧发送和帧接收,包括负责对用户数据进行帧的组装与分解,随时监测物理层的信息监测标志,了解信道的忙闲情况,实现数据链路的收发管理。-5-ETH简介--以太网物理层以太网常用RJ45接口,设备上安装的是8芯母头,其外观以太网网线接头为RJ45公头(俗称水晶头),网线外观-6-ETH简介--以太网物理层RJ45接口线序定义如表13-1所示针编号名称功能描述1TX+发送信号+2TX-发送信号-3RX+接收信号+4NC空脚5NC空脚6RX-接收信号-7NC空脚8NC空脚-7-ETH简介--以太网工作方式以太网络使用CSMA/CD(载波监听多路访问及冲突检测)技术,可以以标准以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G以太网(10Gbit/s)多种速度运行在多种类型的电缆上。以太网是一种广播网络,以太网中节点都可以看到在网络中发送的所有信息。当以太网中的一台主机要传输数据时,它的工作过程如下:监听信道上是否有信号在传输。如果有的话,表明信道处于忙状态,就继续监听,直到信道空闲为止。若没有监听到任何信号,就传输数据。传输的时候继续监听,如发现冲突则执行退避算法,随机等待一段时间后,重新执行步骤1。若未发现冲突则发送成功,在下一次发送新数据之前,必须等待9.6毫秒(以10Mbps运行)。-8-ETH简介--帧结构以太网的帧是数据链路层的封装,网络层的数据包被加上帧头和帧尾成为可以被数据链路层识别的数据帧。虽然帧头和帧尾所用的字节数是固定不变的,但因为被封装的数据包大小的不同,以太网的帧长度也在变化,其范围是64~1518字节(不算8字节的前导字)。一个以太网帧可以分为6个区域,分别如下:前导码(preamble):包含8个字节(octet)。目的地址(DA):包含6个字节。源地址(SA):包含6个字节。类型域:包含2个字节。数据域:包含46-1500字节。帧效验序列(FCS):包含4个字节。-9-ETH简介--冲突/冲突域所谓冲突(Collision),是指在以太网中,当两个数据帧同时被发到物理传输介质上,并完全或部分重叠时,就发生了数据冲突。当冲突发生时,物理网段上的数据都不再有效。而这个物理网段叫做冲突域,也就是冲突发生的区域。冲突是影响以太网性能的重要因素,由于冲突的存在使得传统的以太网在负载超过40%时,效率将明显下降。产生冲突的原因有很多,如同一冲突域中节点的数量越多,产生冲突的可能性就越大。此外,诸如数据分组的长度、网络的直径等因素也会影响冲突的产生。因此,当以太网的规模增大时,就必须采取措施来控制冲突的扩散。通常的办法是使用网桥和交换机将网络分段,将一个大的冲突域划分为若干小冲突域。-10-ETH简介--IEEE1588IEEE1588的全称是“网络测量和控制系统的精密时钟同步协议标准”。IEEE1588协议是通用的提升网络系统定时同步能力的规范,在起草过程中主要参考以太网来编制,使分布式通信网络能够具有严格的定时同步,并且应用于工业自动化系统。基本构思是通过硬件和软件将网络设备(客户机)的内时钟与主控机的主时钟实现同步,提供同步建立时间小于10μs的运用,与未执行IEEE1588协议的以太网延迟时间1000μs相比,整个网络的定时同步指标有显著的改善。

-11-STM32F107的ETH

STM32F107以太网模块支持两种标准接口连接到外接的物理层(PHY)模块,分别是IEEE802.3协议定义的独立于介质的接口(MII)和简化的独立于介质的接口(RMII)。ETH内部结构框图如图13-3所示。STM32F107的以太网模块符合以下标准:IEEE802.3-2002标准的以太网MAC协议。IEEE1588-2002的网路精确时钟同步标准。AMBA2.0标准的AHB主/从端口。RMII协会定义的RMII标准。-12-STM32F107的ETH--MAC控制器功能

STM32F107内置一个MAC(MediaAccessControl,介质访问控制)控制器,负责控制与连接物理层,通过外接的PHY(PortPhysicalLayer,端口物理层)接口,支持10/100M(b/s)的数据传输速率。MAC控制器特点如下:通过兼容IEEE802.3标准的MII接口,外接高速以太网PHY。支持全双工和半双工操作。在发送时插入前导符和帧开始数据(SFD),在接收时去掉这些域。以帧为单位,自动计算CRC和产生可控制的填充位。在接收帧时,自动去除填充位/CRC为可选项。可对帧长度进行编程,支持最长为16K字节的标准帧。-13-STM32F107的ETH--DMA功能

STM32F107的ETH具有DMA功能,特点如下:在AHB从接口下,支持所有类型的AHB突发传输。在AHB主接口下,软件可以选择AHB突发传输的类型(固定或者不固定长度的突发)。可以选择来自AHB主接口的地址对齐的突发传输。优化的DMA传输,传输以帧分隔符为界的数据帧。支持以字节对齐的方式对数据缓存区寻址。双缓存区(环)或链表形式的描述符列表。描述符的架构,使得大量的数据传输仅需要最小量的CPU介入。-14-STM32F107的ETH--PTP功能

STM32F107ETH模块具有PTP功能。PTP是指精确时钟同步协议,在IEEE1588标准中定义,是一种软件方式的网络时间协议,来提高每个网络设备之间的定时同步能力,作用如下:设置接收和发送帧的时间戳。时间校正(可粗调和细调)。当系统时间比目标时间大时,触发中断。(通过MCU的复用功能I/O)输出秒脉冲。-15-STM32F107的ETH--以太网模块功能描述:RMII

以太网模块包括一个符合802.3协议的MAC(介质访问控制器)和专用的DMA控制器。该模块支持默认的独立于介质的接口(MII)和精简的独立于介质的接口(RMII)。由于RMII比MII接口管脚减少一半,应用比较广泛,所以本节仅对RMII进行介绍。精简的独立于介质的接口:RMII

RMII是精简的独立于介质接口规范,它减少了10/100M位/s通信时与外部以太网之间的引脚数。-16-STM32F107的ETH--以太网模块功能描述:RMII

RMII模块用于连接MAC和PHY,该模块将MAC的MII信号转换到RMII接口上。RMII模块具有以下特性:支持10M位/s和100M位/s的通信速率。时钟信号需要提高到50MHz。MAC和外部的以太网PHY需要使用同样的时钟源。使用2位宽度的数据收发。-17-STM32F107的ETH--以太网模块功能描述:RMII

RMII时钟源

STM32F107控制器可以从MCO(PA8)引脚提供50MHz时钟信号,用户需要配置PLL来产生这一时钟。通过配置可以选择使用MII或者RMII模式。必须在以太网控制器处于复位状态时,或者在使能时钟前选择好MII/RMII模式。-18-STM32F107的ETH--以太网模块功能描述:MAC802.3

IEEE802.3国际标准为局域网(LANs)定义了CSMA/CD(带冲突检测的载波侦听多路访问)的访问方式。MAC模块实现了LANCSMA/CD的子层,支持全双工和半双工的操作模式。但是冲突检测的访问方式,仅适用于半双工模式。-19-STM32F107的ETH--精确时间协议(IEEE1588PTP)

IEEE1588标准定义了一种协议,该协议允许通过网络通讯,本地计算和分离设备技术实现测量和控制系统精确的时钟同步。协议可以应用于通过本地局域网通讯的系统,网络要求支持多播通信,这个局域网可以是(但不限于)以太网。协议可以用来同步拥有不同精度、分辨率和稳定度时钟的系统。协议支持在占用最少网络和计算资源的情况下,系统时钟同步精度达到亚微秒级。协议名称是PTP(精确时间协议),协议的基础是以UDP/IP为载体的消息传递。整个系统或者网络的各个节点,按照发起和接收时间/时钟信息的角色,可以分为主节点和从节点。协议通过在主从节点之间交换PTP消息来把从节点时钟同步到主节点时钟。-20-STM32F107的ETH--以太网功能描述:DMA控制器操作

DMA具有独立的发送和接收控制器,还有1个控制和状态寄存器(CSR)空间。发送控制器负责把数据从系统存储器转送至发送FIFO,而接收控制器负责把数据从接收FIFO读出到系统存储器。为了把CPU的操作减到最小,DMA控制器利用描述符来实现数据从源头到目的之间的移动。DMA负责把接收到的帧数据传送给STM32F107的接收缓存,把STM32F107发送缓存里的数据发送出去。在STM32F107的存储器里,描述符是以缓存指针的形式存放。有2个描述符队列,一个用作发送,另一个用作接收。-21-LWIP协议栈

LWIP(lightweightimplementationofTCP/IPprotocolstack,轻量级TCP/IP协议栈)是瑞典计算机科学院的一个开源的TCP/IP协议栈。它的目的是减少内存使用率和代码大小,使LWIP适用于资源受限系统,比如嵌入式系统。-22-LWIP协议栈

--LWIP特性LWIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,一般它只需要几百字节的RAM和40k左右的ROM就可以运行,这使LWIP协议栈适合在低端的嵌入式系统中使用。LWIP主要特性如下:支持多网络接口下的IP转发。支持ICMP协议。包括实验性扩展的UDP。包括阻塞控制,RTT估算,快速恢复和快速转发的TCP(传输控制协议)。可选择的berkeley接口API。与许多其它的TCP/IP实现一样,LWIP也是以分层的协议来设计TCP/IP。每一个协议作为一个模块被实现,同时还提供了几个函数作为协议的入口点。-23-LWIP协议栈

--LWIP结构LWIP由几个模块组成,除TCP/IP协议模块(IP,ICMP,UDP,TCP)外,还有包括许多相关支持模块。这些支持模块包括:操作系统模拟层、缓冲与内存管理子系统、网络接口函数及一组Internet校验和计算函数,LWIP还包括一个API概要说明。LWIP协议栈的文件结构如图13-5所示。-24-LWIP协议栈

--LWIP结构LWIP1.3.1协议栈,主要包括以下几个文件夹组成:doc文件夹:主要为LWIP的一些说明文档。port文件夹:主要为LWIP移植时的文件和资源。src文件夹:主要为LWIP的源文件。LWIP协议栈采用分层实现的方法来实现以太网协议,其src文件夹又包含以下几个文件夹:api文件夹:提供上层应用API接口源文件,包括有socket接口,netifAPI接口的实现机制。core文件夹:包括IP层和传输层协议,如IP,TCP,UDP,DNS和DHCP等。include文件夹:提供了各源文件对应的头文件。netif文件夹:为网络接口层,包括与底层驱动的接口,防火墙,PPP等。-25-建立ETH模板

在STM32的官方固件库中,并没有提供ETH部分的库函数,但ST官方提供单独ETH固件库的下载,移植LWIP并且附有相关例程。本节将在此固件库基础上,实现一个STM32F107的ETH开发模板。-26-建立ETH模板--官方ETH固件库

可以在ST公司网页上下载到官方的ETH固件库,其文件结构如图13-6所示-27-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。1.编辑固件库目录因为是在MDK开发环境下,所以需要删除Project文件夹下的EWARMv5,HiTOP和RIDE三个文件夹,如图13-7所示。-28-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。删除后的文件结构如图13-8所示。-29-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。删除Utilities文件夹下STM32_EVAL文件夹,如图13-9所示。-30-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。删除后的文件目录如图13-10所示。-31-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。2.编辑MDK工程

双击打开\Project\RVMDK\Project.Uv2,启动项目,剥离官方开发板的相关信息。在Project窗口中更改项目名为ETH,移除STM32_EVAL组。-32-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。3.修改stm32f10x_it.c文件将stm32f10x_it.c文件的“externvoidTCP_led_control(Led_TypeDefLed);”语句注释掉,如图13-12所示。-33-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。3.修改stm32f10x_it.c文件注释掉voidEXTI15_10_IRQHandler(void)中断函数内容,如图13-13所示。-34-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。4.修改httpd.c文件找到httpd.c文件中函数err_thttp_recv()如图13-14所示。将其中的STM_EVAL_LEDOff();语句注释掉,如图13-15所示。-35-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。4.修改httpd.c文件继续将文件中其它相关语句注释掉,如图13-15所示。-36-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。5.修改stm32f107.h文件将stm32f107.h文件中的三个开发板头文件注释掉,如图13-16所示。

-37-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。6.修改stm32f107.c文件将stm32f107.c文件中的液晶屏和按键部分注释掉,如图13-17所示。

-38-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。7.修改client.c文件

将client.c文件中的液晶显示部分注释掉,如图13-18所示。

-39-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。8.修改serevr.c文件

将server.c文件中的液晶屏和LED部分注释掉,如图13-19所示。

-40-建立ETH模板--修改ETH固件库

下述内容用于实现描述13.D.1,建立一个ETH开发模板。其步骤如下所示。8.修改serevr.c文件

将led切换部分代

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论