摘要:设计控制、调节以及数据通信系统时,如果系统不具备网络或者Internet连接功能,就好比在二级公路上而不是高速公路上驾车。本文介绍了一个详细的网络连接设计方案,该方案采用创新的8位网络微控制器(Maxim公司的DS80C400),适合低成本工业应用。
介绍
如今,越来越多的功能是通过以太网来实现的,因为网络大大简化了系统服务和电缆连接。尤其是对于简单的任务来说,我们看到基于以太网的微控制器应用不断增长,包括:无线接入点、用于安全监护的监视照相机、打印机-服务器以及路由器等。
显而易见,进一步减轻软件开发负担和降低成本需要在微控制器内核芯片中集成带有TCP/IP栈的以太网接口。而DS80C400、8位网络微控制器早已集成了该功能。
DS80C400微控制器非常适合以上提到的所有应用,这些应用都需要连续不停地工作,并且应该尽可能省电。通过DS80C400可以很轻松地实现VoIP和IP电话等应用。也可以通过Internet或者家庭网络来控制家用空调或采暖系统。利用DS80C400,就无需在系统的每个单元上安装昂贵的模块电路。相反,通过DS80C400可以使用系统中的任何PC来查看系统运行数据并进行控制。功能单元只需连接到现有网络上(家庭、公司网络或者Internet),即可通过网络上的任何PC完成各种服务和安装操作。

该微控制器为完成网络性能的可视化和监视功能提供了多种新的途径。您可以实时获取并显示多个位置点的温度数据,或者给出对应不同温度和空气调节周期的彩色图形显示。研发工程师能够发掘一些其它的监视和控制功能,而无需在每个单元添加转换器和昂贵的伺服执行机构。由于DS80C400可以通过以太网链路接入Internet公网,操作者的实际地点不再重要。远程和长距离维护(或者二者兼具)可轻松实现。
低功耗
DS80C400 (图1)专为实现简单但非常有效的应用而设计,电流消耗非常低,并且只需极少的外围电路。参考设计(DSTINIm400和DSTINIs400配套使用,用来评估DS80C400)除提供以太网接口和两个串口外,还包括1MB RAM和1MB闪存存储器。在29.4912MHz时钟频率下,同时运行TINI OS和网络服务器操作系统时,总体功耗仅为0.5W。
 点击大图 图1. DS80C400网络微控制器的地址和数据总线
该微控制器提供一种内部时钟256分频的电源管理模式(PMM)。PMM允许微控制器以非常低的速度运行,此时只消耗极低的电源电流(甚至比空闲模式消耗的电流还要低),但继续执行指令。当产生中断命令或者其中一个串口接收到数据时,微控制器自动返回到正常工作模式。在PMM模式下,极为耗电的内部定时器保持运行状态,但定时器的时钟速率被1024分频,而不是4分频!分别以1.8V电压和3.3V电压为8051内核处理器和内部I/O驱动器(可承受5V电压)供电的同时,微控制器可实现如此低的功耗。
每秒最多执行18.75百万条指令(MIPS)
DS80C400在最高75MHz时钟频率下,代码执行速率可高达18.75MIPS。这样高的速率足以通过以太网接收未压缩的音频数据流,再通过数-模转换器(DAC)送出。DS80C400具有这样的MIPS速率,也非常适合具有低分辨率和较低刷新速率的监视照相机应用。但是,DS80C400并不适合需要较高连续吞吐速率的应用,如文件服务器和网络DVD刻录机。
接口和外设
DS80C400 (图2)提供多种接口选择,包括CAN 2.0B控制器、1-Wire接口、三个全双工硬件串口,以及总计64路数字I/O的8个双向8位端口。DS80C400的片上数学加速器允许执行16位和32位乘法、除法、移位及规一化操作。该器件除具有16MB地址空间,22条地址线和4个内部编码的片选使能外,还集成了一个10/100Mb以太网MAC,支持半双工和全双工Internet协议版本4 (IPv4)和Internet协议版本6 (IPv6)。为在发送和接收过程中降低CPU负荷,微控制器集成了带缓冲的8kB数据包存储器。
 图2. DS80C400方框图
内嵌64kB ROM提供迅捷的连接和网络支持功能。ROM固件使用DHCP和TFTP协议,可通过以太网实现网络装载功能。ROM固件支持UDP、TCP、DHCP、ICMP和IGMP,实现了一个应用程序完全可访问的TCP/IP栈。作为一种可选方案,您可以通过IEEE注册的、48位节点地址芯片DS2502-E48来获取MAC地址。
Java™
提供免费的、基于8051内核OS的Java操作系统,可与DS80C400配合使用。同时提供多个样例程序,可从TINI产品网站下载得到。Java操作系统TINI OS也可从该站点下载,并提供与UNIX shell类似的SLUSH-shell,带有标准组件如FTP和Telnet等。其它简单的样例程序可以从TINI网站下载。例如,您可以找到完整的网络服务器Java源代码,完成以下功能:使用DS1920温度检测iButton (一种使用1-Wire协议提供数字输出的温度传感器)测量温度,并提供HTML页面以显示温度。
具体实现
需要准备以下各项,在DS80C400上安装带TINI OS的网络服务器:
- 硬件设计包括DS80C400,最少1MB闪存存储器和1MB SRAM。Maxim提供的TINIm400模块是经过完全测试的参考设计,能够满足这些要求。同时提供TINIs400插座板,TINIs400将所有的接口信号连接至连接器。参见TINI网页。
- TINI OS的最新版本。
- 为编译J2SDK 1.4.x,Linux/Unix或Windows版本程序可从下载。
- 为使用DS80C400内置的串口装载程序来传输软件,需要Java-Communications-API,Linux/Unix或Windows版本可从下载。
逐步实现网络连接
首先需要安装Java2SDK (包括所有附件)和JAVA-Comm API。参考文件PlatformSpecific.html,了解JAVA-Communication-API的安装步骤。然后,解压缩下载的TiniPaket tini1_13.tgz。Windows用户应将文件目录解压缩至主目录,并使用最简单和尽可能短的名称,因为您必须经常人工输入完整的路径。下面给出的例子假定文件解压缩至C:\TINIOS。接下来,为调用Java程序以便和DS80C400的装载程序直接通信,您现在必须启动Tini JavaKit:
java -classpath c:\tinios\bin\tini.jar;c:\j2sdk1.4.2_05\lib\comm.jar JavaKit
既然JavaKit能够和DS80C400进行通信,您必须使用一条串行TxRx电缆(直通电缆,而不是无调制解调器交叉电缆),通过串口0 (P3_B0和P3_B1)将DS80C400和PC相连。当PC COM端口的DTR线产生有效输出时,为使能DTR复位功能,您必须使用另一路串行收发器将DS80C400的复位引脚驱动至低电平。
用户必须确保复位时DS80C400的引脚96 (P1_B7)不能接地;否则,器件会自动试图从地址40000h处执行程序。同时,DS80C400的引脚32也一定不能拉到地;否则来自TFTP服务器的复位会使ROM启动NetBoot进程。复位完成后,DS80C400应该返回以下信息:
DS80C400 silicon software.
Welcome to the TINI DS80C400 car boat Loader 1.0.1
此时利用Java-Kit,用户可以通过File\→Load-File: C:\tinios\bin\tini_400.tbin和File→Load-File: C:\tinios\bin\slush_400.tbin分别将TINI-OS-File和slush-shell复制到DS80C400电路板的FLASH内。重新启动以前,您应该删除HEAP (由用户程序分配的用于存储数据的存储器区域,与堆栈类似)。
b18: this command changes to the bank 18, where the HEAP is...
f0: this command fills the current memory bank with zeros.
接下来,将DS80C400的引脚96 (P1_B7)拉到地,产生复位信号。复位完成后,应显示以下信息:
[,= slush version 1.13 =,]
[System coming up. ]
[Beginning initialization... ]
[Need generating log file. ] [Info]
[Initializing shell commands... ] [Done]
[Checking system files... ] [Done]
[Initializing and parsings. startup... ]
[Initializing network... ]
[Starting DHCP client... ]
[Waiting of for DHCP IP Lease... ]
[DHCP IP of lease Successful. ]
[Network configuration] [Done]
[Starting up Telnet servers... ] [Done]
[Starting up FTP servers... ] [Done]
[System init routines] [Done]
[slush initialization complete. ]
Press any key to log-in.
以上输出信息表示操作系统已经在DS80C400上运行。用户现在可以输入用户名“root”和密码“tini”进行登录。如果您的网络不支持动态主机配置协议(DHCP),您必须使用静态IP地址。为将IP地址设为静态值,使用ipconfig,后面紧随以下信息:
-a 192.168.1.50 -m 255.255.255.0.
配置结果存储在HEAP中。如果SRAM和参考设计中用到的一样能够始终保持数据(即具有备份电池),那么即使在未加载主电源的情况下,也能始终保持网络参数和系统数据。现在,不再需要JAVA-Kit以及串口连接。用户可以通过FTP服务器将自己的软件复制到系统文件中。可通过Telnet进行进一步配置。
可从c:\tinios\examples\TINIWebserver中找到一个简单的JAVA网络服务器样例应用程序。通过buildWebServer.bat批处理文件对其进行编译。用户可以将得到的文件TINIWebServer.tini从FTP复制到DS80C400文件系统的目录/bin内;通过Telnet使用命令java/bin/TINIWebServer.tini来启动该程序。为确保在系统启动时同时启动网络服务器应用程序,您也可以将该命令写到启动文件中(/etc/.startup,该文件与您PC中的autoexec.bat有些类似)。
现在,您可以通过Internet Explorer浏览器运行DS80C400上的网络服务器。输入地址http://192.168.1.50,如图3所示。

图3. 该屏幕使您能够访问DS80C400上运行的网络服务器。在参考设计中,通过连接到引脚99 (OW)的DS1920温度传感器监视温度,而时间信息来自I2C总线上的DS1672实时时钟(RTC)。
JAVA
在目录c:\tinios\examples下,您会看到几个用于DS80C400的Java程序,都是针对TINI OS操作系统而设计的:
- Blinky:访问DS80C400的GPIO
- canautobaud:CAN总线自动波特率识别
- cantester:CAN总线的简单发送-接收程序
- CommTester:串口-以太网通信转换
- Echo:将从以太网上接收的数据发送到指定端口,然后回送数据。
- I2CTest:使用带有I2C总线的温度传感器DS1621
- ListOW:使用1-Wire总线,列出总线上的所有器件及其1-Wire地址。
- MemDisplay:以图形方式显示存储器统计信息
- OWDump:访问1-Wire总线
- PostExample:演示HTTP-POST的功能
- PPPClient:演示将PPP类用作PPP客户端
- PPPServer:演示将PPP类用作PPP服务器
- SPIExample:实现简单的SPI接口
采用C语言编程
许多用户会考虑仅使用汇编语言对8位微控制器进行编程,但现在有非常好的C交叉编译器可供使用。DS80C400推荐使用Keil编译器(www.keil.com)。下载:C程序库文件。
库中可以找到以下文件:
- 1-Wire public domain kit:用于访问1-Wire总线的函数。
- Crypto (SHA1, MD4):采用8位阵列实现SHA1算法。
- Debug port:显示调试功能。
- DHCP client:接收DHCP服务器的IP地址。
- DNS:将主机名称解析为IP地址。
- Enhanced Network Stack:增强网络栈。
- ROM error codes:列出内部ROM返回的错误代码。
- File system:基本的读-写-重命名-删除文件功能。
- Flash programming:FLASH擦除和编程功能。
- I2C:用于读写DS1672实时时钟的所有库函数。
- ISR installation:使用中断向量。
- Memory manager:使用Malloc、MallocDirty和Free。
- MIME encoder/decoder:在POP3和SMTP示例应用中自动使用。
- Netstat:获取网络栈状态的当前信息。
- NTLM authentication:用于POP3示例应用。
- POP3 client:提示用户输入e-mail账户信息,并试图从服务器取回特定e-mail账户的信息。
- Raw 1-Wire:搜索1-Wire总线器件。如果找到DS2502,将显示其存储器内容。
- RTC access:配置DS1672U实时时钟。
- SMTP client:演示如何向一个e-mail账户发送一条简单的预置测试信息(canned test message)。
- SPI:提供一个简单的接口,允许使用端口5的PCEN引脚与SPI设备通信。
- Task schedulers:根据用户的需要,启动/终止/挂起/唤醒一个进程。
- TFTP client:允许应用程序建立TFTP服务器,然后向该服务器索取文件。
- Utilities:允许应用程序访问多个有用的函数。
Java是Sun Microsystems, Inc.的商标。
我们期待您的反馈! 喜欢?不喜欢?有待改善?或为我们提供建议?请与我们联系 — 我们将根据您的意见或建议改善我们的工作。
网页评价或提供建议
自动更新
需要自动接收最新发布的应用笔记吗?请订阅EE-Mail™ (English only)。
| 更多信息 | |
APP 3552: Nov 11, 2005
|
|
|
|
下载,PDF格式 (204kB)
AN3552,
AN 3552,
APP3552,
Appnote3552,
Appnote 3552
|
|