基于单片机的网络通信模块设计.docx
- 文档编号:25971727
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:22
- 大小:566.55KB
基于单片机的网络通信模块设计.docx
《基于单片机的网络通信模块设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的网络通信模块设计.docx(22页珍藏版)》请在冰豆网上搜索。
基于单片机的网络通信模块设计
前言
随着Internet的普及和以太网的迅速发展,基于以太网的设备控制越来越多。
加之电子技术的飞快发展,各种工业过程数字仪表应运而生。
以太网是目前应用非常广泛的网络通信技术,它具有丰富而完善的通讯协议,支持现场设备的热拔插,提高系统运行的稳定性和抗干扰性,安装、维护成本低。
用以太网实现嵌入式系统的网络连接有多种方案,传统的多器件以太网连接解决方案,是通过MCU扩展以太网控制器来实现的,必要时还需要扩展外部RAM和ROM,虽然这个计划中的应用还不是很困难,但有大量的外部元件,系统开销较大,它以ATmega16单片机和带芯片ENC28J60和集成网络变压器的接口模块HR91105为核心。
分析了ATmega16的功能和特点,介绍ENC28J60芯片的结构特性和主要性能,并给出了接口的硬件设计和软件设计方案。
在此基础上。
这个方案不仅成本低,而且能实现500Kbps以上的传输速率,满足了嵌入式系统的Internet控制要求。
但设计师在为远程控制或监控系统提供以太网接入时,可选的以太网控制器均是专为个人计算系统设计的,那些超过80引脚
封装的以太网控制器大量运用于上述情况,这些器件不仅结构复杂,面积庞大,且系统开销较大。
无法很好地满足嵌入式网络应用系统。
在测控领域,以单片机为核心
符合IEEE802.3协议的ENC28J60只有28引脚,却具有早期器件相应的功能,满足系统设计的要求,ENC28J60以太网控制器采用业界标准的RJ45串行接口,只需4条连线即可与主控单片机连接,使得嵌入式应用系统的以太网接口变得极其简便。
不过到目前为止,基ENC28J60以太网应用却不是很多。
在测控领域,以单片机为核心的各种智能监控、测试系统因其高性价比等原因正得到越来越广泛的应用。
本项研究的目的是要利用ENC28J60在ATmega16+ENC28J60平台上实现以太网通信。
对于没有开放总线的单片机,虽然有可能是其他以太网控制器连接模拟并行总线,但不管从效率还是性能上来看,都不如用RJ45接口或采用一个通用I/O口模拟RJ45接口连接ENC28J60的方案。
随着国民经济的快速发展,互联网络硬件、软件也迅猛发展,网络用户的发展已成倍增长。
利用廉价的AVR单片机来控制ENC28J60实现以太网通讯这一做法,在使用计算机网络进行互联的各种家用电器及设备,仪器仪表,工业生产数据采集与控制设备逐步地走向网络化,以共享网络中巨大的信息资源的大背景下,仍然具有十分重要的意义。
它适用于现有的网络传输系统,有着广泛的应用前景,特别是数据采集、数据传输领域。
1.总体设计方案
1.1基于单片机的网络通信模块设计要求
该嵌入式以太网接口的通信设计是以ATmega16单片机配合带RJ45接口的独立以太网控制器ENC28J60,通过片上程序开发,将程序移植在此嵌入式系统中,就可以实现通过互联网对其进行远程控制或远程数据采集等功能。
本文将从硬件系统和软件系统两部分的设计和实施着手,对ATmega16单片机和ENC28J60的RJ45通讯进行阐述。
系统的硬件部分,包括各核心器件的功能特点、用法、应用电路以及调试过程等,如ATmega16单片机相关电路的设计及应用,网络控制器ENC28J60外围电路的设计。
软件部分包括网络控制器驱动程序设计与实现、单片机串口通讯程序的设计与实现。
论文的最后部分为系统的综合测试以及结论。
1.2基于单片机的网络通信模块设计方案
从硬件本质上看,RJ45接口就是两个简单的移位寄存器,RJ45传输的是8位的数据,ENC28J60可以与许多单片机的RJ45接口应当指出,当需要从ENC28J60中读取多个数据时,即使ENC28J60并不需要ATmega16串行输出数据,但每读取一个数据到发送缓冲区之前,都要向RJ45发送缓冲器写一个数据以启动RJ45接口的时钟。
由于RJ45系统的发送方向只有1个缓冲器,而在接收方向有2个缓冲器,所以在发送时一定要等到移位过程全部结束后,才能对RJ45数据寄存器执行写操作;而在接收数据时,需要在下一个字节移位过程结束之前通过访问RJ45数据寄存器读取当前接收到的数据,否则将导致第1个数据的丢失。
如果以太网连接采用最简单的TCP/IP协议集和微控制器,就可以连接各个最小功能设备。
当采用标准化和嵌入式以太网连接后,就可实现经济高效的目的。
以太网作为通用的网络接口,在WAN和MAN节点中的应用频率日渐增加。
当前,全球基于以太网的企业网络已有3亿多个,超过85%的已有网络连接是以太网。
这充分证明了以太网的成功。
以太网不仅拥有庞大的用户群体,而且保持着强劲的增长势头,所以很可能一统连接方式的天下。
为了实现以太网联网和因特网的连接,采用独特的单芯片16位以太网解决方案。
其拥有比8位解决方案更强的处理能力和更多的存储资源(共享8KB的RAM数据/消息存储区),可使吞吐量和存储空间使用之间的平衡得到改善,从而将大部分的MCU资源留给各种应用。
一些响应快速的微控制器对不同大小的IP数据包进行组装/拆卸时都有充分的时间,所以,在要求严苛的工业环境中,它依然能应付自如。
它之所以可以承担以太网联网的重任,是因为其兼有高速的内部总线和突出的寻址模式,并通过以太网进行远程监测和控制。
当前嵌入式研究领域的技术热点之一是以太网(Ememct)技术在嵌入式系统上的开发应用。
首先,与传统的RS-485、CAN等相比较,以太网更高速、通用,而且直接与Internet相连接,提供了更大范围的远程访问;其次,相对于新兴的USB2.0、IEEEl394等总线,以太网技术明显的优势集中体现在传输距离、布线成本以及控制软件的通用性上。
在今天的数字系统设计中,嵌入式微控制器能结合微处理器的内核与丰富的外围接口设备,不但能提供强大的运算和控制功能,还降低了系统成本和功耗,因而它作为数字系统的控制核心无可厚非,如有需要,再配以适当的专用芯片(例如音视频编解码器、数字调制解调整器等)。
这种体系结构适用于大多数复杂数字系统的设计。
1.3ENC28J60简介
ENC28J60是MicrochipTechnology(美国微芯科技公司)推出的28引脚独立以太网控制芯片,由于目前市场上大部分以太网控制芯片采用的封装均超过80引脚,所以它是目前以太网控制芯片中的最小封装形式。
另外,它符合IEEE802.3的全部规范,采用了一系列机制来限制传入数据包,它提供了一个内部DMA模块,使快速数据吞吐及硬件支持的IP校验和计算得以实现。
ENC28J60与主控单片机的通信通过两个中断引脚和RJ45实现,数据传输速率高达10Mb/s。
由于ENC28J60芯片带有RJ45接口,因此作为任何配备有RJ45接口的单片机系统的以太网接口芯片毫无问题。
对于没有开放总线的单片机,不管从效率还是性能上,采用单片机的RJ45接口连接ENC28J60的办法都是一个十分不错的方案。
即便有采用模拟并行总线的方式连接其他以太网控制器的可能。
1.4Atmega16介绍
在单片机中有很多型号供我们选择,在这里我们将着重介绍一下ATmega16。
它是一种微控制器,是AVRRISC结构的增强版,具有8位低功耗CMOS。
由于它的指令集足够先进,周期指令执行时间也非常短,因此ATmega16的数据收发率可高达1MIPS/MHz,这样就可以使得功率消耗问题与处理速度之间的矛盾得以减缓。
ATmega16AVR内核的指令是十分充足的指令集,此外还有它的通用工作寄存器也高达32个。
这些寄存器都是与运算逻辑单元(ALU)直接连接,这样就可以使得一条指令一个时钟周期内能够同时到达两个独立寄存器进行访问。
ATmega16还具有以下特点,比如:
在16K字节的系统内可进行Flash编程,也就是说这个系统具有同时读写能力,512BEEPROM,1KBSRAM,32个通用I/O口线,32个工作寄存器(能通用的),用于边界扫描的JTAG接口,支持片内调试与编程,有三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。
工作于空闲模式时CPU停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作;停电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有I/O模块的工作,以降低ADC转换时的开关噪声;Standby模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby模式下则允许振荡器和异步定时器继续工作。
该芯片是以Atmel高密度非易失性存储器技术生产的。
片内ISPFlash允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。
引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlashMemory)。
在更新应用Flash存储区时引导Flash区(BootFlashMemory)的程序继续运行,实现了RWW操作。
通过将8位RISCCPU与系统内可编程的Flash集成在一个芯片内,ATmega16成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。
ATmega16具有一整套的编程与系统开发工具,包括:
C语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。
2.系统功能
2.1单片机的网络通信模块的基本功能
以太网的核心思想是使用共享的公共传输信道。
今天我们知道的以太网是在1972年开创的,在20世纪70年代末出现了几十种局域网技术,其中有一种就叫做以太网在当时最著名的网络当中,包括以太网在内还有数据通用公司MCA、网络系统公司的Hyperchannel、Data'Point公司的ARCNET和Corvus公司的OMNINET。
经历了几十年的发展,以太网已经成为一种主流技术。
目前,以太网已经和我们的生活息息相关,无论是构筑信息高速公路,还是企业信息系统,以及平时的娱乐活动都离不开以太网。
这主要是应为以太网有如下优势:
(1)开放型好
(2)数据传输率高
(3)远程技术的应用
(4)易于信息网络集成,有利于资源共享
(5)支持多种的物理介质和拓扑结构
(6)成本和费用低廉
从工厂、办公室到家庭,我们正在经历一场革命式的网络连接。
商业和住宅用户可以发送及接收丰富多彩的数据、语音、图像、视频和先进的宽带服务。
随着越来越多的建筑、生产设备、智能家居、智能互联网设备相互连接到对方,巨大的商业机会呈现在先进半导体的面前。
网络将医院、大学校园、社区、企业和行业组织都相互连接起来还能连接至因特网。
随着网络的扩展,用户要在不同子网之间进行标准化、低成本的连接以太网是首选接口。
联网售货:
连接到网络后,通过自动售货机,销售商可以监控货物销售,处理实时信用卡交易,进行库存管理和维护,并回应恶意破坏行为。
联网医疗:
在病房中使用健康监控器后,护理人员能密切关视每个房间中的病人当有情况发生时,护士站的监控器界面会发出报警信号。
微控制器使这一切得以实现,并为各种应用提供了一个连接。
要在这些应用中进行高效通信,微控制器需要一些基本的组件,包括TCP/IP协议栈、媒介访问控制器(MAC)、物理层(PHY),以及足够的程序和数据存储空间资源。
TCP/IP协议将系统连接到互联网,是数据在网上传输的事实标准。
以太网协议,一般说,是指根据IEEE802.3规范制定的局域网协议(LAN,LocalNetwork)中酶CSMA/CD协议。
以太网通信目前常用的介质是双绞线和光纤。
其中,CSMA/CD协议
是CarriersensemultipleAccesswithCollisionDetection的缩写,是带检测冲突的载波侦听多路访问协议。
其工作原理是:
当你的网站希望传送时,它就等到线路空闲为止,否则就立即传输。
如果两个或多个站点同时对闲置的电路传输,它们就会发生冲突。
于是所有冲突站点终止传送,等待一个随机的时间,然后重复上述过程。
3.系统设计
3.1硬件设计与实现
3.1.1总体设计
图1系统硬件设计图
从硬件本质上看,RJ45接口就是两个简单的移位寄存器,RJ45传输的是8位的数据,ENC28J60可以与许多单片机RJ45接口直接相连就是因为它的通信接口是RJ45接口,所以它不过仅仅支持RJ45的模式。
应当指出,当需要从ENC28J60中读取多个数据时,即使ENC28J60并不需要ATmega16串行输出数据,但每读取一个数据到发送缓冲区之前,RJ45发送缓冲器写一个数据以启动RJ45接口的时钟。
RJ45系统的发送方向只有1个缓冲器,而在接收方向有2个缓冲器,所以在发送时一定要等到移位过程全部结束后,才能对RJ45数据寄存器执行写操作;而在接收数据时,需要在下一个字节移位过程结束之前通过访问RJ45数据寄存器读取当前接收到的数据,否则将导致第1个数据的丢失。
3.2单片机的网络通信模块电路设计
3.2.1系统供电电路
这是一个典型的线性稳压电路,降压稳定到3.3V给系统供电。
注意输入与输出端的去耦电容与旁路电容是必不可少的。
如图2所示:
图2系统供电电路
3.2.2ENC28J60通信电路
ENC28J60是10M的网络通信芯片,一方面它通过RJ45接口与外部控制电路交换数据信息,并且产生接收和发送中断信号,另一方面它将待发送的数据以10Mbit/s的速度发送到网络变压器。
如图3所示:
图3ENC28J60通信电路
电路中的主控制器采用通过RJ45接口与外部控制电路交换数据信息,并且产生接收和发送中断信号,本设计中ATmega16配置为主机模式,ENC28J60为从设备。
ATmega16的工作模式由CPOL、CPHA设置根据ENC28J60的读写时序,ATmega16的工作模式应设置为模式0.ATmega16通过将ENC28J60的CS引脚置低实现与其的同步。
时钟由写入到发送缓冲寄存器的数据启动,引脚上的数据发送秩序由寄存器SPCR的DORD位控制,置位时数据的LSB(最低位)首先发送否则数据的MSB(最高位)首先发送。
我们选择先发送MSB,同时接收到的数据传送到接收缓冲寄存器进行右对齐从接收缓冲器中读取接收到的数据。
应该注意当需要中读取多个数据时即使ENC28J60并不需要ATmega16串行输出的数据,每读取一个数据前都要向发送缓冲器写一个数据以启动SPI接口时钟。
由于SPI系统的发送方向只有1个缓冲器,而在接收方向有2个缓冲器,所以在发送时一定要等到移位过程全部结束后,才能对SPI数据寄存器执行写操作而在接收数据时,需要在下一个字节移位过程结束之前通过访问数据寄存器读取当前接收到的数据,否则第1个数据丢失。
3.2.3HR911105网络接口电路
HR911105网络接口电路集成了网络变压器RJ45接口和LED,电感L1是必须要的,在这里可以选择电感或者是铁氧体磁珠。
图4HR911105网络接口电路
3.2.4MAX232芯片串口通信模块图
图5MAX232芯片串口通信模块图
MAX232CSE标准规定了25针连接器DB-25,并且规定在DTE一端的插座为插针型DCE一端为插孔型。
既可以用于同步通信,也可以用于异步通信。
在进行异步通行时最多也只需要9个信号:
2个数据信号,6个控制信号,1个公共信号地。
因此从286微机到现在微机一般都采用DB-9型号连接器,作为多功能I/O口或主板上COM1和COM2两个串型口的连接器
3.2.5网络通信模块的PCB设计图
图7PCB设计图
3.2.6硬件电路
图8硬件电路图
硬件电路如图8。
本设计中ATmega16单片机和ENC28J60以太网控制芯片通过RJ45接口进行通信,其中采用Atmel公司的ATmega16单片机为主控制器,配置为主机模式它具有先进的RISC(精简指令集计算机)结构、16KB可编程Flash存储器、512的EEPROM和1KB片内SRAM,还有丰富的外设接口,其RJ45接口允许ATmega16与外设进行高速的同步数据传输。
ENC28J60为从设备。
ATmega16的RJ45工作模式由CPOL、CPHA设置,根据ENC28J60的RJ45读写时序,应将模式0设置为ATmega16的RJ45工作模式ATmega16为了与ENC28J60同步,将其CS引脚置低。
RJ45时钟由写入到RJ45发送缓冲寄存器的数据启动,RJ45MOSI(PB5)引脚上的数据发送秩序由寄存器SPCR的DORD位控制置位时数据的最低位首先发送,否则数据的最高位首先发送。
此方案选择先发送最高位同时接收到的数据传送到接收缓冲寄存器,CPU进行右对齐,从接收缓冲器中读取接收到的数据。
3.3软件设计
3.3.1工作流程图
否
图9控制工作流程图
由流程图可知,ENC28J60作为网络控制器进行数据包的发送和接收之前,必须对该器件进行相应的初始化设置。
根据不同的应用,可能会更改不同的配置选项。
一般来说初始化的操作应在复位后立即完成,并且不再需要更改。
3.3.2ENC28J60软件初始化
在使用ENC28J60器件时,对其进行初始化设置之后才能发送和接收数据。
为了适用于不同的应用需要改变不同的配置选项。
初始化设置工作主要包括缓冲器的接收和发送、PHY寄存器、MAC寄存器、过滤器的接收、晶振启动时间。
首先要关闭中断输入才能初始化单片机芯片,让一个持续的低电平作用在RESET引脚上以开始复位,然后设置相应的寄存器。
当所有需要的寄存器设置完成后,再判断以太网中的时钟启动标志位是否已经置位,检查所有的一切正常之后,打开中断。
当系统初始化后,主程序开始循环执行。
以太网传输部分的主要作用有两个:
第一是按照以太网数据帧格式对要发送的数据进行封装然后发送;第二是解压从以太网接收的数据帧,供应用程序使用。
如流程图所示:
否
是
图10初始化流程图
3.3.3RJ45通信程序设计
标准的RJ45接口通常使用4条引线:
SCK(串行时钟线)、MISO(主机输入/从机输出线)、MOSI(主机输出/从机输入线)以及SS(从机选择线—低电平有效)。
RJ45(SerialPeripheralInterface)也就是串行外围接口,用于处理器与外围低速器件的通信,它是一种同步串行传输数据的通信接口。
在主器件产生的移位脉冲作用下,数据按高低位前后顺序进行传输,这就是RJ45的通信方式。
RJ45是进行全双工通信的,可以达到几MB/s。
RJ45的接口工作方式是主从的,从器件可能会有多个,但主器件通常只有一个。
RJ45协议是一种简单又高效的协议,因为RJ45的工作方式是全双工的,而且RJ45接口也不需要进行复杂的寻址操作。
当空闲时,RJ45的接口要求SCK引脚为低电平,RJ45接口也不支持时钟极性的选择在SCK处于上升沿时,通过MOSI引脚,数据和命令被送入元器件中。
数据会在SCK引脚处于下降沿时从MISO引脚输出。
在执行操作的过程中,CS引脚必须保持低电平状态,在操作完成之后才能返回高电平。
图11与图12为具体时序图。
ENC28J60的内部寄存器要进行初始化才能进行正常通信,前文已述,需要进行对接收和发送缓冲区、MAC和PHY的初始化设置。
ATmega16是主设备,ENC28J60是从设备,两者具有不同的工作模式。
ATmega16通过RJ45对ENC28J60实现初始化和读、写操作。
其中,RJ45参数具体设置如下:
ENC_CS_IO=1;
ENC_CS_TRIS=0;
ENC_SCK_TRIS=0;
ENC_SDO_TRIS=0;
EDN_SDI_TRIS=1;
ENC_RJ45STAT=0;
ENC_RJ45CON=0x1F;
ENC_RJ45CONbits.CKE=1;
ENC_RJ45CONbits.MSTEN=1;
ENC_RJ45STATbits.RJ45EN=11;
图11输入时序
图12输出时序
3.3.4ENC28J60发送数据包
首先对写缓冲存储器(WBM)命令掌握,才能进行数据包发送或接收。
WBM允许主控制器向8KB发送和接收缓冲存储器中写入字节。
如果ECON2寄存器中的AUTOINC位置1那么在写完每个字节的最后一位之后,EWRPT指针将会自动地递增指向下一个地址(即当前地址加1)。
如果写入地址1FFF且AUTOINC置1,则写指针加1指向0000h。
将CS引脚拉低,启动WBM命令。
然后将WBM操作码及随后的5位常量1Ah送入ENC28J60。
在发送WBM命令和常量之后,由EWRPT指向的存储器中的数据将移入ENC28J60,首先移入最高位。
在接收到8个数据位后,如果AUTOINC置1,写指针将自动递增。
主控制器可以在保持CS为低电平的同时,继续在SCK引脚提供时种信号,在SI引脚发送数据从而可以连续写入存储器。
当AUTOINC被使能时,以该方式可无需多余的RJ45命令就能连续地向缓冲存储器写入字节。
拉高CS引脚电平可结束WBM命令。
MAC可根据配置生成填充和CRC字段。
主控制器必须生成所有其他帧字段,将它们写入缓冲存储器,以待发送。
此外ENC28J60还要求在待发送的数据包前添加一个包控制字节。
主控制器应:
1、正确编程ETXST指针,使之指向存储器中未用的单元。
它将指向包控制字节,在本方案中,指针应编程为0120h;2、使用WBMRJ45命令写入包控制字节、目标地址、源MAC地址、类型/长度和数据有效负载;3、正确编程ETXND指针。
它应指向数据有效负载的最后一个字节,在本设计中,指针应编程为0156h;4、将EIR.TXIF位清零,将EIE.TXIE位和EIE.INTIE位置1,如果需要,允许在发送完成后产生中断;5、将ECON1.TXRTS位置1开始发送。
这种等待是必需的,因为DMA和发送引擎共享同一个存储器访问端口。
同样如果在TXRTS已置1后,ECON1中DMAST位才置1,DMA在TXRTS位清零前不会采取任何动作。
如果正在进行发送,不应通过RJ45读取或写入任何待发送的字节。
主控制器将TXRTS位清零可取消发送。
一个7字节的发送状态向量将被写入由ETXND+1指向的单元,EIR.TXIF会被置1并产生中断(如果允许)。
要验证数据包是否成功发送,应读取ESTAT.TXABRT位。
3.3.5ENC28J60接收数据包
假设接收缓冲器已完成初始化,MAC已正确配置且接收过滤器已配置为接收以太网时产生一个中断,就要将EIE.PKTIE和EIE.INTIE置l;如果需要在由于缓冲空间不足导致数据包丢失时产生一个中断,就要EIR.RXERIF清零,并将EIE.RX一RIE和EIE.INTJE置1;并且要将ECONI.RXEN置1使能接收。
主控制器将TXRTS位清零可取消发送在将RXE置1后,将不能修改双工模式和接收缓冲器起始和结束指针。
此外,要阻止不期望接收的数据包,在更改接收过滤器配置寄存器(ERxFcoN)和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 网络 通信 模块 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)