Proteus提供了ENC28J60以太网接口模型,它具备以下的仿真功能:
●SPI接口。
●8KB的内部RAM。
●通用、MAC、MII和PHY寄存器。
●网络封包的发送和接收。
●DMA操作(计算校验和,内存拷贝)。
●包接收过滤(单播、多播、广播、Magic Packet、模式匹配、Hash表、校验和)。
●省电模式。
●LED输出。
●中断逻辑。
●复位逻辑。
限制:
●内置的自检控制器没有模型。
在使用该模型前,需要安装网络封包截取软件WinPcap,可以从WinPcap的官方网络免费下载使用。
在使用ENC28J60发送和接收数据包前,必须先进行初始化设置。一些配置选项需要根据应用情况进行修改。通常应在复位后立即完成初始化任务,并且不再更改。在初始化过程中,需要配置一些MAC寄存器。这些寄存器只需配置一次,而编程的顺序并不重要。根据不同的应用,还需要对3个PHY模块寄存器中进行配置。
在接收数据包前,必须对接收缓冲器进行初始化。使用大量数据并经常交换数据包的应用,需要把大部分存储空间分配为接收缓冲器。需要保存已发数据或有一些数据包需要发送的应用,应分配较少的接收存储空间,所有未被用作接收缓冲器的存储空间都作为发送缓冲器。要发送的数据应写入未使用的空间。但在发送完一个数据包后,硬件会在存储器中数据包最后一个字节后写入一个7B的状态向量。因此,主控制器应在接收缓冲器的开始和每个包之间预留至少7B,不需要对发送缓冲器进行特定的初始化。
下面的例子中移植了Microchip提供的一种TCP/IP协议栈,该协议栈服务于标准的、基于TCP/IP的应用程序(HTTP服务器或邮件客户机等)。
Microchip TCP/IP协议栈为多层结构,如图5-19所示。每层的实现代码唯一个独立的源程序文件,而服务和应用程序接口(API)则通过头文件或包含文件定义。与TCP/IP参考模型不同的是,Microchip TCP/IP协议栈中各个层之间可以直接访问,而不需要逐层访问。关于一个层是否绕过相邻模块来获得所需的服务,主要根据服务开销的大小来决定。另外还添加了两个新模块:StackTask和ARPTask,StackTask用于管理协议栈及其所有模块的操作,而ARPTask用于管理地址解析协议(ARP)层的服务。
图5-19 Microchip TCP/IP协议栈的多层结构
TCP/IP协议栈的某些层必须能异步执行某些定时操作。为了能满足这个要求,并与使用其服务的主应用程序保持相对独立,Microchip TCP/IP协议栈使用了一种称为“协同式多任务处理”技术。在协同式多任务处理系统中,同时存在多个任务,每个任务执行完自己的作业后交回控制权,这样下个任务才能够执行作业。新增加的StackTask和ARPTask都是协同式任务。
Microchip TCP/IP协议栈被设计为独立于任何操作系统,它可实现自己的协同式多任务处理,因此它可以独立使用而不必依赖其他操作系统。但是,使用Microchip TCP/IP协议栈的应用程序自身必须使用协同式多任务处理方法。需要注意的是,Microchip TCP/IP协议栈没有提供一般TCP/IP协议栈中的全部模块,但是在需要时可以将它们作为单独的任务或模块来实现。
另外,本例中还采用了Microchip公司提供的MPFS文件系统,这是一个基于ROM的简单文件系统,适合于小型嵌入式环境。Microchip公司提供了一个命令行应用工具:MPFS.exe,用于将网页转换为MPFS文件系统映像,该映像可以是bin格式,可以直接用来更新服务器的页面,也可以是C语言文件格式,需要与服务器源程序一起重新进行编译。
MPFS命令格式为MPFS.exe.\Webpages MPFSimg.c/c
如果希望更新网页内容,则需要进行如下操作:
1)把生成的文件"MPFSimg.c"放到IAR项目的INC目录下。
2)将#include"..\Include\Compiler.h"改为#include"Compiler.h"。
3)将MPFS_Start[]数组中的最后一组数据{0x04,0xffffff,...}改为{0x04,MPFS_END,...}。
4)重新编译整个项目。
例5-7图5-20所示为LPC2138与ENC28J60的接口应用电路。LPC2138通过SPI1(即SSP)与ENC28J60接口,P0.16、P0.17、P0.18、P0.19、P0.29和P0.31分别连接ENC28J60的INT、SCK、SI、SO、RESET和CS端。本例虚拟了一个HTTP服务器,它的IP地址是192.168.0.128,可以通过任何一款网页浏览器进行访问。启动运行之前,先将计算机的IP地址设置为192.168.0.100,在图5-19所示电路中运行Proteus仿真程序,然后启动IE浏览器,在地址栏输入192.168.0.128,即可访问虚拟HTTP服务器,如图5-21所示。
图5-20 LPC2138与ENC28J60的接口应用电路
图5-21 虚拟HTTP服务器网页
在IE浏览器中,可以通过超链接对Proteus仿真电路进行控制,单击网页上的LED1和LED2按钮,可以点亮或关闭仿真电路中的发光二极管,仿真电路中4个按键的状态也会反映到IE浏览器的网页上来。
本例最好使用两台电脑联网进行实验,在一台电脑上可能会遇到无法访问的问题。
本例中ENC28J60的驱动程序包括在ENC28J60.C模块中,具体如下:
(www.daowen.com)
进入主程序后首先进行引脚配置,规定ENC28J60的片选、复位等端口信号,完成SPI1初始化,以及ENC28J60芯片的初始化,并实现HTTP服务器功能。
主程序文件main.c列表如下:
本例中还包括其他一些程序模块,限于篇幅,这里不再列出,读者可以从本书附带的光盘中找到这些模块程序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。