基于stm32无线数据基站的设计和实现毕业论文.doc_第1页
基于stm32无线数据基站的设计和实现毕业论文.doc_第2页
基于stm32无线数据基站的设计和实现毕业论文.doc_第3页
基于stm32无线数据基站的设计和实现毕业论文.doc_第4页
基于stm32无线数据基站的设计和实现毕业论文.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

基于stm32无线数据基站的设计和实现毕业论文目 录1 引言12 概述22.1 课题研究的背景22.2 国内外stm32控制以太网技术发展现状及趋势32.3 研发方向和技术关键42.4 主要技术指标43 总体设计53.1 系统方案选择与论证53.2 系统软件总体结构63.3 本章小结74 硬件设计94.1 主控芯片STM32F10794.2 STM32串口通讯124.3 DM9161用法介绍164.4 本章小结205 以太网协议215.1 TCP/IP协议215.2 嵌入式TCP/IP协议栈226 软件设计266.1 主程序设计266.2 系统初始化子程序276.3 RS232通讯子程序286.4 网口通讯子程序286.5 本章小结297 结论30致谢31参考文献32附录331 引言随着人们的生活及其生产水平的不断提高,对生活中各种数据接收的速度和准确度的要求就显得尤为重要,无线数据收发控制就是一个典型的例子,因此无线数据基站就是现代生产生活中应运而生的一种智能、快捷、方便可靠的检测系统。目前,无线网络标准按照通讯距离的不同分为WAN、WLAN、PAN。比较主流的无线技术有蓝牙、3G、HomeRF、WI-FI、WIMAX、GPRS、CDMA、UWB等。其中WI-FI运用最为广泛,其运用主要在WLAN/MESH领域。无线网络推动了数据通信进入了新的里程碑,让办公、工作、学习不再受“线”制。方便实现了移动办公,组建临时工作组,召开紧急会议等不在需要复杂的布线拆线,无线覆盖区域直接可以通过无线进行通信。校园环境等,可以让师生在任何环境,可以在广场、在草坪、在体育场地等任意位置连接上Internet。随着无线网络在各个领域的成功案例及人们对它的关注程度,无线网络定是未来通信的发展方向,也定能在各领域中得到很好的应用。本设计通过stm32控制无线收发模块从无线网络节点接收数据,进行相关处理后通过以太网把数据发送至应用服务器。系统的用户统用户通过Internet网络访问应用服务器,其中本设计起到网桥和防火墙的作用。其中本设计中采用的以太网控制器为DM9161芯片。2 概述2.1 课题研究的背景近几年来,随着科学技术日新月异的发展,计算机科技的快速发展,特别是互联网的快速普及,互联网在人类活动中也越来越紧密联系,尤其是对于工业控制和信息电器领域中同样有着越来越重要的应用。同时计算机,通讯,消费电子三合一的快速发展,数字化时代已经到来。而嵌入式接入设备是数字化时代的一大主流标志,形态各异的计算机,通讯,消费电子三合一产品也将是网络接入设备的一大主流。因为PC机以及现有的Internet技术可以实现对非网络设备进行远程控制的部分的要求,而且成本费用较高,可靠性和期望值也有一定的距离,所以这种方案并没有被广泛的接受和使用。由于嵌入式设备具有低成本高性能的特点,而现今对嵌入式系统的开发研究和嵌入式技术也都进入到了一个成熟的阶段,将嵌入式系统和网络相结合来实现非网络系统的网络控制,那么世界可能就是另一番景象。 因特网技术的成熟,使得网上提供的信息更加丰富,应用项目也更加多样,人们对网络的需求也越来越广泛,利用PC机上网来查阅和发布各类信息等对于网络的日常应用已经不能满足人们的需求。像传统的电器,电冰箱,微波炉,电视,空调等,这类电子设备的功能也不在单一,电器结构也更为复杂,也逐步开始应用嵌入式网络接入,使用户可以通过网络就能实现远程控制,信息通讯。同样,互联网在全球范围内的连通性,那些能够连接因特网的设备也成为人们选择产品中考虑的一大问题,通过Internet对家用电器等非网络设备进行远程控制已经成为现今主流。而一些小型轻便的设备,比如一些医学仪器上的身体上使用的传感器,体积小而且便宜,内存小,运算能力有限,因此必须在资源受限的情况下实现TCP/IP协议甚至处理接受到的信息。TCP/IP协议可以分为四个层次,从底层到最高层分别是物理层和数据链路层,网络层,传输层,和最高层的应用层。物理层和数据链路层是TCP/IP协议的最低层,要求提供给上层一个访问接口,以便传递IP分组信息。网络层是第二层,也是整个TCP/IP协议栈的核心,其功能是把分组发往目标网络或主机,源主机与目的主机可以在同一个网上,也可以在不同的网上。其中定义了分组格式和协议,即IP协议,来对分组进行排序。IP协议是一种不可靠、无连接的数据报发传送服务的协议,提供的只是一种尽力而为的服务。传输层是第三层,负责在应用进程中的端到端之间的通信。传输层定义了两种服务质量不同的协议,TCP和UDP。TCP是一种可靠的面向连接的协议,允许将源主机的字节数据流无差别的传送到目的主机。同时能够完成流量的控制功能,协调收发主机之间的发送和接受速度,从而控制正确的传输。应用层是最高层,其中也包括了很多协议:文件传送协议,简单邮件传送协议,简单网络管理协议,超文本传送协议等。LwIP是瑞士计算机科学院一个开源的TCP/IP协议栈实现。LwIP是Light Weight IP协议,有无操作系统都可以运行,其实现的重点是在保持TCP/IP协议的主要功能的基础上减少对内存的占用,一般只需要几百字节的RAM和40K左右的ROM就可以运行,这使得LwIP成为在资源受限的情况下实现及处理TCP/IP协议的解决方法。LwIP可以支持多网络接口下的IP转发,提供专门的内部回调接口Raw API,这样可以提高应用程序性能。像LwIP的目标系统是最小限度系统,所使用的操作系统通常不能在内核与应用层进程之间维持一个严格的保护屏障。这里允许使用一种比较宽松的通许机制,通过共享内存的方式实现应用层与底层协议族之间的通讯。应用层可以知道底层协议使用的缓冲处理机制,这使得应用层可以有效的重复使用缓冲区。同样,应用层与网络代码使用的是相同的内存区,那么应用层就可以直接读写内部缓冲区。2.2 国内外stm32控制以太网技术发展现状及趋势中国的嵌入式系统开发走过了二十多年的历程,有超过数十万名从事开发应用的工程师,但大多数以上是几个人的小组以孤军奋战的封闭方式开发几乎不可重用的软件。今天面对的是嵌入式系统工业化的潮流,如果不能认识到嵌入式软件必须以工业化的方式生产开发,不理解在短时间内装配集成“数百人/年”的嵌入式产品,那么将失去更多的上游产品的市场机遇。嵌入式软件方面逐渐形成了系统软件、应用软件的架构。国际上用于信息电器的嵌入式操作系统有40种左右。其中,国外涌现了一些著名的嵌入式操作系统,如:Vxworks、pSOS、WinCE、RTEK、palmOS、EpOC、QNX、LynxOS、DSPhnux等。其中Vx/Orks是目前嵌入式系统领域中使用最广泛、市场占有率最高的系统:WinCE是一种32位的多任务操作系统,可以移植,能够开发多种企业和客户类设备,是微软公司的“维纳斯计划”的核心:3COM公司的Palm0S在PDA市场上占有很大的市场份额,它有开放的操作系统应用程序接口(API),开发商可以根据需要自行开发所需要的应用程序。国内外有大量嵌入式应用软件已广泛用于各类嵌入式系统中。大有国内紧跟国外趋势的形势。但是对于嵌入式Web服务器方面的研究国内现状不容乐观,目前国外的相关研究相对多些。如林C/IP研究项目,它是一个为微控制器和嵌入式系统而设计的小型TCP/IP协议栈:又如CMX公司的MieroNetTCP/IP,它是为8位或16位微处理器而设计的,支持大部分的标准协议,连接方式有以太网连接、拨号连接和直接连接方式。而国内也相应提出了Webito协议标准,但是相对滞后,缺少具体的工程实现方面的研究和具体产品的开发。美国DEC公司开发的VMSeluster系统开发最早,技术也较成熟,应用也很广泛,但由于VMS操作系统只能在DEC公司的VAX系列和AIPha系列服务器上运行,VMScluster的应用受到很大限制。Platform公司开发的高可用性集群系统LSF提供了分布式集群系统的解决方案,通过将物理上分离的多个集群连接在一起使多个同构或异构的计算机能够通过局域网或广域网共享计算资源,并能够为用户提供对资源的透明访问。国内也有不少公司进行了集群系统的研究和开发工作。联想公司在1999年9月推出了用于分布式高性能计算的NS10000高性能集群服务,该系统是一个四节点的系统,主要基于联想万全45008服务器,以总体成本相对较低的设备组合,足以替代传统班SC小型机和中型机的工作,而价格仅为市场上同等性能小型机的1/2-1/40。朗讯公司也推出了类似于Urboduster的高可用性集群系统LongshineClusterServer。从国内外的研究现状看,目前集群系统的应用大都致力于高可用性问题的解决,真正基于负载均衡的集群系统还比较少,而且在大部分负载均衡集群中采用的都是轮转调度、加权轮转调度等静态调度算法。2.3 研发方向和技术关键(1)合理设计硬件电路,使各模块功能协调;(2)STM32对DM9161的控制;(3)STM32对串口模块的控制;(4)STM32对TCP/IP协议栈的开发;2.4 主要技术指标(1)合理设计硬件电路,使各模块功能协调(2)STM32可以实现对数据的处理和传输。(3)对DM9161的控制的数据的传输3 总体设计3.1系统方案选择与论证总体设计思路,分为三部分,无线数据采集部分,网络控制部分,控制部分。并利用stm32对各部分进行控制。应用DM9161通过网线与上位机相连接,可以处理和传递下系统相关参数。设计模块图如图3.1所示。 服务器无线网络数据信号DM9161网络控制STM32F107处理图3.1 整体模块图3.1.1 控制部分方案在本次设计中,单片机是系统的控制核心,所以单片机的性能关系到整个系统的好坏。因此单片机的选择,对所设计系统的实现以及功能的扩展有着很大的影响。单片机种类很多,STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。因此,在本次设计中选用了stm32F107单片机作为主控芯片。2.1.2无线数据采集部分方案本设计有单片机控制无线模块,接收从无线网络的数据,并经过单片机进行处理,通过网络控制部分传送给PC接收。通过UTC4832无线网络把数据上传至主通信节点,主通信节点对数据进行进一步处理,通过以太网把数据发送至应用服务器。2.1.3网络控制部分方案方案一:采用基于RTL8019AS实现以太网通讯。RTL8019AS是由台湾Realtek公司生产的100pin PQFP 封装10Mbps以太网控制器,符和Ethernet II与IEEE802.3标准,其应用成熟广泛,但是由于RTL8019AS没有集成内部硬件协议,此方案需要在主控制器内部编写以太网通讯协议、程序繁琐、耗费时间,不利于系统的快速开发和稳定运行。且由于其封装引脚太多,也不方便系统的硬件设计。方案二:采用基于DM9161的网络控制器的以太网通讯系统设计。DM9161DM9161AEP是一款完全集成的和符合成本效益单芯片快速以太PHY,是采用较小工艺0.25um的10/100M自适应的以太网收发器。DM9161AEP通过可变电压的 MII 或 RMII 标准数字接口连接到 MAC 层,支持 HP Auto-MDIX。是目前常见的一款物理层收发器,由于全球的MCU集成度不断提高,由MAC+PHY+MII的衍生到现在的PHY,在以太网部分的成本,逐渐降低。方案三:采用基于ENC28J60的网络控制器的设计。ENC28J60是带有行业标准串行外设SPI接口的独立以太网控制器,具有28pinDIP封装,符合IEEE802.3的全部规范,采用了一系列包过滤机制以对传入数据包进行限制。他还提供了一个内部DMA模块,以实现快速数据吞吐和硬件支持的IP较验和计算。与主控制器的通信通过两个中断引脚和SPI实现,传输数据速率高达10Mb/s。两个专用的引脚用于连接LED,进行网络活动状态指示。虽然ENC28J60同样也没有像DM9161那样集成了了内部硬件协议栈,但是由于其具有28pinDIP封装,大大便于硬件设计和制版,符合我们这次系统设计的基本要求。综上所述所述,方案二和方案三都适合作为本次设计的网络控制部分,由于条件所限我们选择方案二。3.2 系统软件总体结构系统软件总体结构如图3-2所示,整个程序是围绕STM32F107VCT6单片机设计的,软件程序采用模块化设计,更容易理解和调试。整个程序除主程序之外还有5个部分:系统初始化子程序、RS232通讯子程序、网口通讯子程序、I/O数据采集子程序和RS485通讯子程序。图3-2软件结构图主程序流程图如图3-3所示。系统运行后进入主程序,首先对系统硬件进行初始化,而后再对网络进行初始化,然后检查网络连接是否正常,连接正常则进行周期运行显示,不正常则重新进行连接。图3-3主程序流程图3.3 本章小结本章主要讲述了本设计的工作原理和本设计系统的工作流程。在说明工作原理的过程中,突出了电路的组成单元以及这些单元如何实现数据采集和数据处理控制功能。在说明系统流程时,结合本设计的内容指出了参数设置的方法和意义。4 硬件设计4.1 主控芯片STM32F107 32位ARM Cortex-M3结构,72MHz运行频率,1.25 DMIPS/MHz,硬件除法和单周期乘法,并可快速可嵌套中断,612个时钟周期,有64K256KB的FLASH,以及高达64KB的SRAM。另外在网络通信功能上,具有一个RJ45网络接口,支持10M/100M自适应网络,还有一个Zigbee无线网络通讯接口,一个Wi-Fi WLAN无线宽带网络通讯接口。在本开发板上,添加了一些人机交互接口,一个大屏幕320*240,262144色TFT-LCD,支持SPI接口式/总线接口,四个LED发光管,一个电源LED指示灯,另外一个标准3.5mm耳机接口,一个五方向的输入摇杆,3个GPIO按键,1个RESTE按键,以及音频级处理芯片,USB OTG功能能,支持外接鼠标和键盘。串行通信功能上,有两个RS232连接插座,其中一个RS232带硬件流控制引脚,一个mini型USB插座,两个CAN连接口。其中与以太网最重要的硬件是MAC(介质访问控制)及其专用的DMA。专用的DMA控制器允许专用SRAM和描述符之间高速传输,其中一些地址过滤模式,对物理和组发送地址,以及32位状态编码,用于每个传送和接受帧。内部的FIFO用于缓存传输和接受帧,传输FIFO和接受FIFO都是2Kbyte,总共4Kbytes。实物图如图4.1所示:图4.1stm32实物图图STM32F107xx包括以下特性:1. 支持10和100Mbit/s两种速率2. 专用DMA控制器允许专用SRAM和描述符之间高速传输。3. 标记的MAC帧支持,支持VLAN(虚拟局域网)4. 半双工和全双工两种操作模式,半双工下采用CSMA/CD(带有检测冲突的载波侦听多路存取)5. 支持MAC控制子层,用于控制帧。6. 32位CRC产生和清除。7. 一些地址过滤模式,对物理和组播地址。8. 32位状态编码,用于每个传送和接受帧。9. 内部FIFO用于缓存传输和接收帧。传输FIFO和接收FIFO都是2Kbyte,总计4Kbytes。10. 支持硬件PTP(精确时间协议),时间戳比较器连接到TIM2触发输入端。当系统时间比预定目标时间大时,触发中断。4.1.1 STM32F107的以太网功能描述STM32F107支持两种工业标准的物理层接口,默认的介质无关接口MII和精简的介质无关接口RMII。以太网的外设由MAC和一个专用的DMA控制器,支持默认的MII和RMII通过一个选择位来设置默认的MII接口或者精简MII接口。TDMA控制器接口通过AHB主从接口连接核和内存,AHB主接口控制数据传输当AHN从接口访问控制盒状态寄存器空间。在MAC核传输前,传输FIFO缓存通过DMA从系统内存中读取数据,类似的,接受的FIFO队列从线上储存以太网帧从而知道它们被DMA传送到了系统内存中。以太网的外设还包括一个SMI用于和外部的PHY通信。配置寄存器允许用户为MAC和DMA控制器选择想要的模式和特性。图4.2 STM32F107以太网原理框图4.1.2 SMI站管理接口SMI(station management interface 站管理接口)允许应用程序通过一根时钟数据线来读取配置中任意一个物理寄存器,接口最多支持访问是32个PHY。应用程序可以在SMI的允许下选择32个PHY中的其中一个,再在PHY中32个寄存器中的任意一个来发送控制数据或者接受状态信息。但是在给定的时间里,只能访问一个PHY中的寄存器。如图4.2所示,图中微控制器执行使MDC时钟线和MDIO数据线来为交替的功能I/O扣。MDC是一个用于给数据传输提供时间参考的周期性时钟,最大的频率为2.5MHz,最小的MDC的高低时间是每次160ns,最小的周期是400ns。值得注意的是,在不工作的情况下,SMI管理接口驱动MDC时钟信号为低,即为0。而MDIO是数据输入和输出数据是要用MDC时钟信号来同步传输状态信号给物理设备,或者从物理设备那得到状态信号。STM32MACExternalPHYMDIOMDC图4.3 SMI管理接口框图4.1.3 SMI写操作当应用程序设置介质无关接口MII写和忙位时,SMI通过传输PHY的地址,PHY中的寄存器地址以及写数据来启动一个写操作到PHY寄存器上。当然,在传输过程中应用程序不能改变MII的地址寄存器中的内存或者是MII数据寄存器。在这个写操作的时间里,任何对MII地址寄存器和MII数据寄存器的写操作都会被忽略(忙时位为高,即为1),保证传输过程无差错完成。这个写操作完成之后,SMI又通过复位忙位,使得可以重新接受新的写操作。图4.4 SMI写操作4.1.4 SMI的读操作用户设置以太网MAC中MII的地址寄存器中的MII Busy bit时,MII Write bit 为零,SMI就通过传输PHY地址和PHY中的寄存器的地址,然后在PHY寄存器中就启动一个读操作。同样的,在传输过程中应用程序不能改变MII地址寄存器中的内容或者MII数据寄存器中的内容。同时在读操作过程中,对MII地址寄存器和MII数据寄存器的写操作也会被忽略(Busy bit为高,即为1),保证传输过程不差错,能够正确完成。读操作完成后,SMI复位Busy bit,然后用从PHY中读到的数据来更新MII数据寄存器。图4.5 SMI读操作4.2 STM32串口通讯STM32的串口是相当丰富的,功能也很强劲。最多可提供5路串口(MiniSTM32使用的是STM32F103RBT6,具有3个串口),有分数波特率发生器、支持单线光通信和半双工单线通讯、支持LIN、智能卡协议和IrDASIR ENDEC规范(仅串口3支持)、具有DMA等。图4.5 485电路 串口最基本的设置,就是波特率的设置。STM32的串口使用起来还是蛮简单的,只要你开启了串口时钟,并设置相应IO口的模式,然后配置一下波特率,数据位长度,奇偶校验位等信息,就可以使用了。下面,我们就简单介绍下这几个与串口基本配置直接相关的寄存器。 1,串口时钟使能。串口作为STM32的一个外设,其时钟由外设时钟使能寄存器控制,这里我们使用的串口1是在APB2ENR寄存器的第14位。APB2ENR寄存器在之前已经介绍过了,这里不再介绍。只是说明一点,就是除了串口1的时钟使能在APB2ENR寄存器,其他串口的时钟使能位都在APB1ENR。 2,串口复位。当外设出现异常的时候可以通过复位寄存器里面的对应位设置,实现该外设的复位,然后重新配置这个外设达到让其重新工作的目的。一般在系统刚开始配置外设的时候,都会先执行复位该外设的操作。串口1的复位是通过配置APB2RSTR寄存器的第14位来实现的。APB2RSTR寄存器的各位描述如下:图4.6寄存器APB2RSTR各位描述从上图可知串口1的复位设置位在APB2RSTR的第14位。通过向该位写1复位串口1,写0结束复位。其他串口的复位位在APB1RSTR里面。 3,串口波特率设置。每个串口都有一个自己独立的波特率寄存器USART_BRR,通过设置该寄存器达到配置不同波特率的目的。该寄存器的各位描述如下:、图4.7 寄存器USART_BRR各位描述前面提到STM32的分数波特率概念,其实就是在这个寄存器里面体现的。最低4位用来存放小数部分DIV_Fraction,15:4这12位用来存放整数部分DIV_Mantissa。高16位未使用。这里波特率的计算通过如下公式计算 。这里的pclkx(x=1、2)是给外设的时钟(PCLK1用于串口2、3、4、5,PCLK2用于串口1),USARTDIV是一个无符号的定点数,它的值可以有串口的BRR寄存器值得到。而我们更关心的是如何从USARTDIV的值得到USART_BRR的值,因为一般我们知道的是波特率,和PCLKx的时钟,要求的就是USART_BRR的值。 下面我们来介绍如何通过USARTDIV得到串口USART_BRR寄存器的值,假设我们的串口1要设置为9600的波特率,而PCLK2的时钟为72M。这样,我们根据上面的公式有:USARTDIV=72000000/9600*16=468.75那么得到:DIV_Fraction=16*0.75=12=0X0C;DIV_Mantissa= 468=0X1D4;这样,我们就得到了USART1-BRR的值为0X1D4C。只要设置串口1的BRR寄存器值为0X1D4C就可以得到9600的波特率。 4,串口控制。STM32的每个串口都有3个控制寄存器USART_CR13,串口的很多配置都是通过这3个寄存器来设置的。这里我们只要用到USART_CR1就可以实现我们的功能了。图4.8 寄存器USART_BRR各位描述BIT 13: 串口功能;BIT 12: MODE,字长。0:1个开始位,8个数据位,1位停止位(默认);1:1个开始位,9位数据位,1位停止位(默认);*注意:停止位的长度可在USART_CR2寄存器中设置。BIT 11: WAKE 唤醒功能BIT 10: 校检使能位,当激活奇偶校验功能时,置位该位将自动往要传输数据的高位字节处插入就校验位。BIT 09: Parity Selection,0:偶校验;1:奇校验。BIT 08: PE Interrupt EnableBIT 07: 发送缓冲区空中断使能位BIT 06: 发送完成中断使能位BIT 05: 接收缓冲区非空中断使能位BIT 04: Idle Interrupt EnableBIT 03: Transfer EnableBIT 02: Receive EnableBIT 01: Receiver WakeupBIT 00: Send Break 5,数据发送与接收。STM32的发送与接收是通过数据寄存器USART_DR来实现的,这是一个双寄存器,包含了TDR和RDR。当向该寄存器写数据的时候,串口就会自动发送,当收到收据的时候,也是存在该寄存器内。该寄存器的各位描述如下:图4.9 寄存器USART_DR各位描述可以看出,虽然是一个32位寄存器,但是只用了低9位(DR8:0),其他都是保留。 DR8:0为串口数据,包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用(TDR),一个给接收用(RDR),该寄存器兼具读和写的功能。TDR寄存器提供了内部总线和输出移位寄存器之间的并行接口。RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。 当使能校验位(USART_CR1种PCE位被置位)进行发送时,写到MSB的值(根据数据的长度不同,MSB是第7位或者第8位)会被后来的校验位该取代。当使能校验位进行接收时,读到的MSB位是接收到的校验位。 6,串口状态。串口的状态可以通过状态寄存器USART_SR读取。USART_SR的各位描述如下:图4.10寄存器USART_SR各位描述这里我们关注一下两个位,第5、6位RXNE和TC。RXNE(读数据寄存器非空),当该位被置1的时候,就是提示已经有数据被接收到了,并且可以读出来了。这时候我们要做的就是尽快去读取USART_DR,通过读USART_DR可以将该位清零,也可以向该位写0,直接清除。TC(发送完成),当该位被职位的时候,表示USART_DR内的数据已经被发送完成了。如果设置了这个位的中断,则会产生中断。该位也有两种清零方式:1)读USART_SR,写USART_DR。2)直接向该位写0。4.3 DM9161用法介绍DM9161AEP是一款完全集成的和符合成本效益单芯片快速以太网PHY,是采用较小工艺0.25um的10/100M自适应的以太网收发器。DM9161AEP通过可变电压的 MII 或 RMII 标准数字接口连接到 MAC 层,支持 HP Auto-MDIX。是目前常见的一款物理层收发器,由于全球的MCU集成度不断提高,由早先的MAC+PHY+MII的衍生到现在的PHY,在以太网部分的成本,逐渐降低。有如下特点1.48pin LQFP封装 2.制作工艺:0.25um,IO供电电压3.3V,模拟部分2.5V3.支持MII和RMII连接方式(推荐使用MII) 4.支持双绞线自适应(AUTO-mix) 5.支持TCP/IP硬加速 6.与全球95%的厂家的MCU完全兼容,是ATMEL推荐使用的单口PHY。注:目前DM9161AEP支持的温度范围是0-75,而工业级的DM9161BIEP是支持-40到85。在应用过程中,DM9161AEP常出现的错误是,晶振的连接,以及网络变压器的匹配,所以应该慎重选择。DM9161引脚图如下所示:图4.11 DM9161引脚图4.3.1 DM9161引脚说明16脚 TXER/TXD 4:输入脚,传输错误或者是第五个TXD数据位,在100兆模式下,此脚为高,同时TXEN为高,暂停信号代替实际的数据。在10兆模式下这个输入脚被忽略,在旁路模式下(旁路4B5B)此脚变成TXD4脚,第五个TXD的数据 of 5B信号。20,19,18,17脚 TXD 0:3 发送数据,4位数据输入(与TXCLK同步)在10兆或者100兆的半字节模式,在10兆的GPSI模式(7线)下,TXD 0被用作串行数据输入脚,TXD 1:3被忽略。输入脚即芯片发送数据给它,它接收后再发送。21脚TXEN:传输使能,高电平表示TXD 0:3上数据是合法的在10兆或者100兆模式下。在10兆的GPSI模式(7线)下,高电平显示TXD 0上数据合法。22脚TXCLK/ISOLATE:输出脚,当刚上电时是输入脚,拉低,发送时钟脚,为TXEN, TXD, and TXER. TXCLK的传输提供时钟参考,有PHY提供。25MHZ是100兆半字节模式,2.5兆是10兆半字节模式,10兆是10兆GPSI (7-Wired) mode(说是7线好像只用单线传输)。ISOLATE的设置是:当上电复位时是输入,0:寄存器0.10将被初始化成0,1:寄存器0.10将被初始化成1.24脚MDC:输入脚,管理数据的时钟脚,MDIO管理数据的同步时钟,这个时钟由管理芯片提供,最大12.5MHZ.25脚MDIO:输入/输出脚,双向的管理数据可能被管理芯片或者PHY提供。29,28,27,26 RXD0:3/PHYAD0:3:三态输出,上电输入,拉低,在10/100兆MII模式四位输出(与RXCLK同步)。在10兆的GPSI模式(7线)下,RXD 0脚是串行数据输出脚,RXD 1:3 are ignored,PHY address 0:3,上电复位成输入脚,PHY地址检测输入脚。32脚 MDINTR:输入/输出,上电输入,拉低,状态中断输出脚,当有一个状态改变(包括link, speed, duplex depend on interrupt register 21)即由状态改变同时中断也设置了,才会输出。如果原来是低,则中断时输出高,如果是高则中断时输出低。34脚 RXCLK/10BTSER:三态输出脚,上电输入,拉高,接收时钟由PHY提供时间参考为RXDV, RXD, and RXER.。PHY可能从接收的数据中恢复RXCLK参考,或者从25MHZ在100M MII模式下,2.5MHZ在10M MII模式下,10MHZ在 10Mbps GPSI (7-Wired) mode。10BTSER仅支持10M模式(上电输入),0 = GPSI (7-Wired) mode in 10M mode,1 = MII mode in 10M mode35脚CRS/PHYAD4:三态输出,上电输入,拉低,载波感应检测或者PHYAD4,在10 BASE-T或者100BASE-TX的半双工模式下,高电平表示载波的存在是因为接收或者传输有效(正在进行中)在repeater或者全双工模式下,这个信号置高显示载波的存在仅仅因为接收有效此脚作为PHYAD4(上电输入)PHY地址感应输入脚。36脚COL/RMII:三态输出,上电输入,拉低,冲突检测,在10M或者100M的半双工模式,高电平显示冲突状态,在全双工模式,此脚一直为低。简化的MII使能脚,此脚也用来选择正常的MII或者简化的MII,(上电是输入),0是正常的MII(默认),1是简化的MII,此脚经常被拉低,除非用于简化的MII。37 脚RXDV/TESTMODE:三态输出,上电输入,拉低,接收数据合法,高电平显示合法的数据在RXD 0:3中,测试模式控制脚(上电输入)0是正常的操作(默认)1为测试模式使能。38脚 RXER/RXD4/RPTR:三态输出,上电输入,拉低,接收数据错误或者5B情况下第五个接收数据位,高电平显示一个不合法的符号被检测到,在解码旁路模式(旁路4B5B)RXER变成RXD 4,5B符号的第五个接收数据位。这个脚也可以用来选择Repeater or Node mode.(上电输入)0 Node Mode (default),1 Repeater Mode.31 LEDMODE:LED模式选择,0,支持双灯,1正常的灯40 RESET#:低电平用来初始化DM9161A3,4脚 RX+RX-:输入脚,差分数据从媒体被接收7,8脚 TX+ TX-:输出脚,差分传输对,差分数据被传输到媒体,在TP模式下。11 脚 LED0/OP0:输出脚,上电输入,上拉。LED驱动输出0,op0:上电复位输入,此脚用来控制强制的或者是公布的操作模式,在上电后此值被写入寄存器。12脚 LED1/OP1:输出脚,上电输入,上拉。LED驱动输出1,op1:上电复位输入,此脚用来控制强制的或者是公布的操作模式,在上电后此值被写入寄存器。13脚 LED2/OP2:输出脚,上电输入,上拉。LED驱动输出2,op2:上电复位输入,此脚用来控制强制的或者是公布的操作模式,在上电后此值被写入寄存器。10 脚 PWRDWN:输入脚,掉电控制,高电平强制芯片到掉电模式,在掉电模式下大部分芯片的模块被关电,仅MII管理接口(MDC, MDIO)可利用(PHY对管理传输有用,在MII上不会产生假信号),要想离开掉电模式必须用软件或者硬件复位让PWRDWN脚为低。14脚 CABLESTS/LINKSTS:输出脚,上电输入,下拉,Cable Status or Link Status,此脚用来显示上电复位为输入的时候Cable是否是连接状态,0没有Cable连接,1有Cable连接。此脚也被用来显示上电复位输入为高的时候LINK的连接状态,0有LINK,1没LINK39 DISMDIX:HP自动翻转,1自动模式失效,0使能HP自动翻转4.3.2 DM9161标准协议说明DM9161A,快速以太单芯片传输,按IEEE 802.3u,标准,完整的100Base-TX模式和10Base-T模式,芯片提供一个MII借口按标准IEEE 802.3u,包含功能:图4.12 DM9161标准协议TXD是4位半字节数据,被TXCLK驱动,在TXEN使能情况下,每一个TXCLK始终TXD (3:0) 通过PHY被接收TXCLK(传输时钟)不间断时钟提供时间参考为TXEN, TXD, and TXER信号。TXEN传输使能,从物理层输入,显示物理层MII接口传输是存在的。TXER(传输码错误)与TXCLK同步,如果TXER在一个或多个时钟中置位,同时TXEN置位,PHY将发出一个或更多的信号在正在传输的数据帧中。RXD,4位数据被采样与RXCLK同步,每一个RXCLK,RXDV被置位,RXD (3:0)被传输从PHY到物理层。RXCLK(接收时钟)输出到物理层的不间断时钟为RXDV, RXD, andRXER signals.提供参考。RXDV(接收数据合法)从PHY输入,显示PHY存在恢复的和解码的半字节数据在物理层上,为了正确的被层解释接收帧,RXDV必须围绕着帧,开始不能晚于开始帧分隔符,不包括任何结束帧分隔符RXER(接收错误)转变与RXCLK同步,RXER将被置位在一个或更多的时钟周期当检测到任何一个错误在 从PHY到物理层的被传输过程中。CRS(载波感应)当传输或者接收中继没有空闲时有效(置高),当传输或者接收空闲时无效(置底),100Base-TX发射机接收4位数据在25M,输出一个5位编码MLT-3信号到媒介在100M,芯片把25M在内部变成125M供内部使用。图4.13 DM9161标准协议框图100Base-TX发射器如上图:把MII提供的数据4位同步数据转换后到SCRAMBLER, MLT-3.一百万个符号每秒。4.4 本章小结本章详细介绍了本设计所要用到的硬件模块STM32107作为主控制器,DM9161作为网络控制模块,用串口传输数据。5 以太网协议5.1 TCP/IP协议TCP/IP协议是由一系列网络协议组成的协议族,从名字可以看出TCP/IP协议族中最重要的且基本的两个协议为TeP(肠ansmissionControlprotoeol,传输控制协议)和IP(InternetProtoeol,网络互联协议)TCP/IP协议是当今互联网的基石最早的TCP/IP由文顿#瑟夫(VintonCerf)和罗伯特#卡恩(RobertKahn)开发出来,由于其优越的性能,应用范围逐渐扩大,20世纪90年代中期,由于HTML(Hyper介xtMarkupLanguage,超文本描述语言)技术以及浏览器的出现,使得互联网飞速发展起来TCP/IP对于低层(物理层与数据链路层)协议的支持非常好,常用的低层协议几乎都支持TeP/IP,如以太网!端对端协议(point一to一pointprotoeol,ppp)#光纤分布式数据接口!令牌环网等TCP/IP协议并不完全遵循传统051参考模型的七层结构它包括应用层!传输层!网络层!链路层,每一层都调用它的下一层所提供的网络来完成自己的需求TCP/IP协议通常被看作是一个四层结构的网络,如图5.1所示。图5.1TCP/IP四层结构应用层:该层包含与应用程序协同工作的各种协议,这些协议利用底层网络来传输应用程序发送与接收的数据应用层的处理过程如下:数据从应用程序开始传送,开始时数据格式为这个应用程序的内部格式,然后数据被编码为协议的标准格式,编码完成后,数据便被传输到TCP/IP协议栈中应用层的下一层。传输层:传输层的协议,能够解决端到端可靠性(即数据是否已经到达目的地)!保证数据按照正确的顺序到达此类的问题在通用的TCP/IP协议族中,传输层协议也包括所给数据应该送给哪个应用程序常用的传输层协议有TCP和UDP其中TCP是一个可靠的!面向连接的传输机制,它能保证数据完整!无损并且按顺序到达而UDP是一个无连接的不可靠的数据报协议它既不检查数据包到达目的地与否,也不保证它们到达的顺序。网络层:网络层也称作IP层或互联网层,它负责处理数据分组的选路等数据分组在网络中的活动在TCP/IP协议栈中,网络层的协议有IP!ICMP(InterneteontrolMessageProtoeol,互联网控制报文协议)和IGMp(IntemetGroupManagementprotocol,互联网组管理协议)Ip是TeP/lP协议族中最为核心的协议所有的TCP!UDP!ICMP及IGMP数据都是以IP数据报的格式传输的。链路层:链路层有时也称作数据链路层或网络接口层它是数据包在几个设备的网络层间传输所用的方法这个方法由网络设备驱动程序及网络接口卡实现。5.2 嵌入式TCP/IP协议栈要在嵌入式系统中实现上述TCP八P协议,主要有两种方案:一种是硬件实现,将TCP/IP协议栈固化在芯片中,对外提供协议栈的编程接口,如博控自动化公司的TCP/IP协议栈芯片WS100使用时将芯片连接到微处理器CPU上,在应用程序中直接调用协议栈的API(却licationInterface,应用程序接口)函数,这种方案的优点是应用简单,缺点是价格昂贵;另一种是软件实现,即在嵌入式系统中加入TCP江P协议栈代码这种方式的优点是可定制性强!成本低,缺点是开发阶段工作量较大本文选用软件实现方案大多数PC操作系统如WindowS及Linux操作系统都内置完整的TCP/IP协议栈而对于小型嵌入式系统,由于资源有限,通常不能直接使用通用TCP/IP协议栈利用嵌入式系统实现嵌入式以太网通信的技术难点是:如何利用嵌入式系统有限的资源对信息进行处理,使之变成可以在互联网上传输的数据包为了实现这个目的,很多人做了大量的工作具有代表性意义的嵌入式TCP/IP协议栈是Bso4.4(BerkeleysoftwareoistributionVersion4.4,伯克利软件套件)的TCP/IP源代码进行裁剪或与移植得到的TCP/IP协议栈以下是对几种常用的嵌入式协议栈的分析。LinuxTCP/IP协议栈:它的特点是与Linux系统的关系密切,只能在Linux系统或与Linux系统兼容的系统如协cLinux中使用它体积比较大,功能完善,支持BsD的套接字,应用广泛,有大量资料可供参考25,261但它的兼容性与体积都使得它在本项目中的应用成为不可能。pc/IP协议栈:pe/IP是Mierium公司为协C/05系统专门设计的TCP/IP协议栈,体积也同pC/OS一样比较小,是可裁减的协议栈它的缺陷是它只能部分实现TCP/IP协议,对网络应用的支持不足,功能不够完善而且这是一个付费的TCP/IP协议栈对本文来说也同样不合适。ulP协议栈:ulP不同于LinuxTCP/IP协议栈及pc/lP协议栈的一点是它的操作系统无关性,可以在没有操作系统的情况下运行,也可以移植到各种操作系统中缺点是移植过程复杂,应用程序接口也较复杂,而功能却比较简单,甚至不支持BSD套接字在专变采集终端中,对网络性能的要求较高,所以也不适合采用ulP协议栈LwIP(LightweightTeP/xP,轻量级TCP/xp)协议栈:与uIP协议栈一样,LwIP也具有操作系统无关性跟可移植性但与uIP协议栈相比,LwIP移植过程简单,应用层接口方式多种多样,且支持BSD套接字同时,它还有体积小,内存小的特点虽然它也只能部分地实现TCP/IP议栈,但能满足本文中专变采集终端以太网通信的全部要求由以上比较可知,针对微处理器STM32F107,采用LwIP协议栈是比较合适的。5.3 LwIP设计LwIP是瑞士计算机科学院的AdamDunkelS等人开发的一套TCP八P协议栈,它主要关注的是怎么样减少内存的使用和代码的大小,这样就可以让lwIP适用于资源有限的嵌入式系统LwIP是一种可以在前后台系统(无操作系统)中运行的协议栈同时,依赖它提供的操作系统模拟层,也可以容易地将其移植到各种操作系统中另外,这个协议栈是开放源码的,对于TCP/IP协议栈的研究很有帮助。LwIP能实现大多数TCP/IP协议栈的常用功能,它还支持IP片,TCP中提供阻塞控制!快速恢复等功能,支持IPv

温馨提示

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

评论

0/150

提交评论