随着8位微控制器(MCU)处理能力的增强,将嵌入式TCP/IP协议栈集成到MCU中已经非常容易。许多年来,TCP/IP协议栈一直由MCU制造商及其第三方工具供应商提供,这些协议栈是专门针对具有程序内存和RAM的8位MCU开发的。由于对协议栈进行了最优化,8位MCU的联网功能强大。图1显示了一个非常简单的传感器应用,其中一个带有12位A/D转换器的8位MCU被连接至10Base-T以太网接口控制器,并被用于显示传感器信息。
人们通常存在的一种误解是,当10Base-T设备被放置在具有100Base-T设备的网络中时,将使网络速度降低到10Mbps。事实上,现在采用的大多数交换机和路由器将在上行链路中将信道中的10Mbps数据流转换为100Mbps或更快的数据流,因此不会降低网络速度。下面让我们从头开始讨论如何设计这样一个系统。
1. 选择以太网接口
目前市面上已有许多以太网接口器件提供,但大多是针对高速并行总线的。这些器件对于8位MCU而言可能非常棘手,因为他们占用了多个I/O引脚。这迫使设计工程师采用引脚数更多的器件,从而导致TCP/IP协议栈的性能降低(因为以太网接口是由人工操作而不是通过8位MCU上的标准外围器件来操作)。针对这一应用,本文中选用的是Microchip Technology公司的ENC28J60以太网接口芯片(如图2所示),该器件外型尺寸小(28引脚QFN封装)、具有SPI接口并集成了8KB的RAM。
|
图1:在简单的传感器应用中,一个带有12位A/D转换器的8位MCU被连接至10Base-T以太网接口控制器。 |
2. 选择微控制器
对MCU的选择涉及到内存需求和外围器件。一个典型的TCP/IP协议栈需要用到大约20KB的程序内存。这意味着应该采用具有32KB容量的MCU,从而应用程序可以获得12KB的内存。对于网络传感器来说,将12KB用于存储主应用程序代码已经绰绰有余。例如,Microchip Technology公司的PIC18F2523微控制器就提供了一个10通道12位A/D转换器、双路模拟比较器、PWM、SPI、I2C以及USART外围器件。
3. 选择存储器
在创建嵌入式Web服务器时须考虑的一个问题是Web页面将存放在哪里。一些包含一个或两个页面的简单设计可以存放在MCU的内部程序内存中。不过,对于具有更多页面的设计,就需要采用外部存储器。外部存储器可以有几种选择,包括串行EEPROM和闪存。串行EEPROM可提供512Kb的存储空间,而串行闪存器件提供的存储空间高达32Mb。
4. 选择协议
在设计嵌入式TCP/IP应用时的一个重要步骤是选择协议以便传输信息。TCP提供了一个鲁棒性的握手协议来可靠地传输数据。该协议的大小超过用户数据报协议(UDP)的三倍。如果该应用必须支持Web页面,则需要用到TCP协议。 不过,如果该应用仅需与一个采集点交换信息,则可以在UDP协议中加入固件使其更具鲁棒性,但UDP仍比TCP协议要小得多。 其它所需的协议包括DHCP(用来动态配置IP地址)、ARP(解决寻址问题)以及IP协议。对于ping命令,ICMP可能同样很有用。它允许应用响应回声请求或ping命令,这些请求和命令有助于调试网络中设备的连接。图3所示为典型的TCP/IP协议栈。
|
图3:一个典型的TCP/IP协议栈。 |
5. 创建Web页面
设计的最后一步是创建Web页面。Web页面创建软件将许多额外的信息加入HTML页面中,但这需要占用存储空间。设计工程师不希望用注释来填满宝贵的EEPROM空间,因此创建HTML代码的最佳工具也许是Windows Notepad和一本关于HTML的好书。 需要记住的是,虽然图形会消耗许多内存,但它们提供了丰富的用户界面。限制该项目所需内存量的一个创新解决方案是在网络的服务器上存储图形,然后让Web页面链接到这些图形。
本文小结 一旦完成硬件配置并创建了Web页面,就能够将页面下载至内存并启动传感器。然后只需将该设备连接到网络中并在浏览器上键入IP地址,便可以浏览显示的传感器信息。
作者:Rodger Richey
先进微控制器架构部应用经理
Microchip Technology公司 *博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。