You are on page 1of 9

本文详细描述了用 TI 公司的 MSP430 单片机实现嵌入式因特网终端的设计,包括硬

件和软件两大部分。 MSP430 微控制器控制以太网控制器 CS8900A 实现本地局域网


的功能,通过 TCP/IP 协议提供与因特网进行连接的应用接口,使用该应用接口,可
以建立新的任务或改变现有的任务,实现与因特网中其它终端间的通信。在本文中,
给出了硬件原理图,说明了部分模块的工作流程。

【关键词】因特网; MSP430 ;终端;以太网; TCP/IP

1. 介绍

计算机通信系统尤其是因特网在日常生活中的作用越来越重要,并且呈加速发展的趋
势。如今,上网不再是个人电脑和网络工作站的专利,很多用微控制器(或称单片机)
控制的嵌入式系统也成为了因特网网络节点中的一员,通常,这种嵌入式系统可称为
嵌入式因特网终端。试想,如果通过网页浏览器,能够完成对远处的微控制器控制,
并能够接收到微控制器采集的信号,那将给人们的生活带来很大的便利和极大地推动
生产力的发展。打个比方,如果通过办公室的一台连接到因特网的电脑和安装在家里
的嵌入式控制器,人们就可以了解到家里或者发生的一切,那么家居防盗等一系列问
题将会等到很好的解决。

MSP430 是由于 TI ( Texas Instruments ,美国德州仪器公司)开发的 16 位微处理


器,其突出的特点是强调低功耗,非常适用于各种低功率要求的应用,有多个系列和
型号。由于其性价比比较高,所以,被广泛应用于家居自动化,医疗设备,安防系统,
楼宇控制系统等许多领域当中。本因特网终端设计方案中使用的 MSP430F149 是 TI
公司于 2000 年增加的 MSP430F1X 中的一员。

2. 协议基础

ISO ( Internet Standard Organization , 国 际 标 准 组 织 ) 于 1981 年 提 出 了


OSI ( Open System Interconnect ,开放系统互连)七层网络模型。七层网络模型的
最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一
层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本
层的服务。

因特网采用的四层网络模型是 OSI 七层网络模型的一个子集,其具体的四层:应用


层、传输层、因特网层和网络层,图 1 为因特网的四层网络模型与 OSI 七层网络模型
的对应关系图。因特网模型通过数据分段 (Segment) 中的序列号保证所有传输的数据
可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。

图 1   OSI 七层协议与因特网四层模型的对应关系
2.1 以太网(Ethernet)[1]

以太网是目前用得最广泛的一种局域网,它在因特网四层网络模型当中,属于网络层。以太网网络中的每

个节点具有相同的访问网络的权利,它们之间对网络占用是通过具有冲突检测的载波监听多路访问

( CSMA/CD )的方法来实现的。数据采用曼彻斯特编码,网络中的连接一般采用双绞线或同轴电缆。以太网

中每个节点具有一个 48 位、唯一编号的地址。每帧数据的最大长度为 1518 个字节,第一个 48 位为目标

地址,第二个 48 位为数据源地址,然后是 2 个字节的数据帧类型值,在数据帧的最后,自动生成 4 个字

节的循环冗余码校验(CRC)值,用于保证数据帧的完整性。

2.2 传输控制协议 TCP(Transmission Control Protocol)

TCP 提供了一种可靠的数据流服务,尽管 TCP 是 DARAP 协议组中的一员,但它却有很大的独立性。它对

下层网络协议只有最基本的要求,很容易在不同的网络上建成,因而非常流行。ISO/OSI 运输层标准中的

第四类 TP-4 就是以 TCP 作为原型建立的。TCP 可以在众多的网络上工作,可以提供虚拟电路服务和面向

数据流的传输服务。用户数据可以有序而且可靠的传送。在一个分组可能发生丢失、破坏、重复、延迟或失序

情况下,TCP 服务可提供一种可靠的进程间通信机制,协议可以自动纠正各种差错。

2.3 网际协议 IP(Internet Protocol)

第三层最重要的协议是 IP。它将多个网络联成一个互连网。IP 的工作是将一个以上的报文处理网络联成一

个网际网。IP 的基本任务是通过网际网传送数据报,各个 IP 数据报之间是相互独立的。主机上的 IP 层基于

数据链路层的服务向传输层提供服务。IP 从源运输实体取得数据,通过它的数据链路层服务传给目的主机

的 IP 层。网关通过下一网络数据报传到目的主机或下一网关。
2.4 地址转换协议 ARP(Address Resolution Protocol)

在 TCP/IP 网络环境下,每个主机分配的组位 IP 地址只是一种逻辑地址,这样在传送时必须转换成物理地

址,ARP 协议就是完成这一功能的。 ARP 使主机可以找到同一物理网络中任一物理主机的物理地址,

只需给出该主机的网际地址即可。可见,基本网络的物理编址对网络层服务是透明的。

2.5 其它协议

在因特网网络协议当中,还有其它相关的协议,如:反向地址转换协议 RARP(Reverse Address

Resolution Protocol)、用户数据报协议 UDP(User Datagram Protocol)、网际控制报文协议

ICMP(Internetwork control Message Protocol)、超文本传输协议(hypertext transfer protocol)等,

它们在因特网的数据交换当中都有什么重要的作用,本文限于篇幅,不一一详细介绍。

3. 硬件设计[1]

本设计中所用到的两个重要组件为 TI 公司的微处理器 MSP430F149 和 Crystal 公司的以太网控制器

CS8900A,下面简单介绍一下这两个组件,再论述硬件实施方案。

3.1 MSP430F149[2]

MSP430F149 具有 60K 字节的 FLASH 存储器和 2K 字节的 RAM、看门狗定时器(Watchdog Timer)、6

个 8 位的通用 I/O 口、12 位 A/D 转换器、2 个串行通信接口和 1 个硬件乘法器等。MSP430F149 的 60K 字

节 FLASH 存储器足以存储网页数据, 6 个通用 I/O 口既可以用来控制以太网控制器 CS8900A,也可以

用来执行其它的用户命令,12 位 A/D 转换器可以用来在终端采集数据,然后再通过网络发给用户.

3.2 CS8900A[3]

CS8900A 低功耗的以太网控制器,被广泛应用于工控机中。其高集成度的设计(在应用当中只需要极少

的外围元件)和简单容用的总线接口,非常适用于本设计。目前,许多的以太网控制器都只提供 PCI(周

边元件扩展接口)接口,而 CS8900A 可以直接和微控制器相连,所以,可以 MSP430F149 的 I/O 口来


直接对 CS8900A 进行控制,具体连接方式如图 2 所示。另外,CS8900A 可以直接 3V 供电,这有利于和

MSP430F149 之间的电平匹配。

3.3 MSP430F149 与 CS8900A 的接口

CS8900A 有三种工作模式:I/O 模式、存储器模式和直接存储器存储模式,默认为 I/O 模式,可通过程序

使其工作于其它模式。CS8900A 的各个工作模式各有优缺点,本设计当中,采用的是它的 I/O 模式。

CS8900A 共有 8 个 16 位的 I/O 口,这 8 个 I/O 口与片内的 8 个 16 位寄存器相对应。如图 2 所示,

CS8900A 采用 8 位的数据总线方式和 MSP430F149 的 P5 口相连,接口中共用到 14 个引脚。复位后,

CS8900A 默认选择 I/O 地址为 0x300,并且一直保持该默认地址工作。

3.4 系统硬件原理

整个系统的硬件原理如图 2 所示,下面详细分析图中的各个模块。
CS8900A 的 XTAL1(97)引脚和 XTAL2(98)引脚接一 20MHz 的晶振,由于其片内 XTAL 处集成了电容,

所以,不需要外接电容。CS8900A 的复位引脚为高有效,在芯片上电工作时,需要一个复位信号,这由

R9 和 C17 提供联合提供。CS8900A 有两个不同的 LED 控制引脚:LANLED(100)引脚和 LINKLED(99)

引脚,用于控制 LED 以显示 CS8900A 的工作状态。LANLED 引脚接一个红色 LED(D1),当 CS8900A


接收或发送数据时,该引脚输出低电平,点亮红色 LED。LINKLED 接一个黄色 LED(D2),当 CS8900A

和工作的以太网络连接时,黄色 LED 点亮。

和 MSP430F149 有关的电路,除了上述的和 CS8900A 连接的部分外,还有 JTAG(Joint Test Action

Group)接口、晶振和复位电路。其中,JTAG 接口用于编程和调试,用一个 14 引脚的接头引出了

TCK、TDI、TDO/TDI 四个用于编程和调试的引脚,可直接和 MSP430 的调试工具 FET(FLASH

Emulation Tool)相连。用户也可以通过电平转换芯片 MAX3221 把 MSP430F149 的串行通信口也引出,

以实现需要的功能。MSP430F149 时钟电路部分,需要接一个 8MHz 的晶振和两个 15pF 的电容。

整个系统由 3.3V 的电源供电,绿色 LED(D4)为整个系统的电源指示灯。为了系统扩展的需要,也可以把

MSP430F149 所有未用到的 I/O 引脚都用接头引出。

进行 PCB(印制电路板)设计时,通过旁路电容滤波,以给 MSP430F149 和 CS8900A 提供稳压的电源信

号。为了得到更好的系统性能和减小电磁干扰,最好能够把 PCB 布置为四层板。

3.5 CS8900A 与局域网的接口

CS8900A 片内集成了一个 10M 的以太网收发器,其片内集成了所有用于和局域网通信的模拟和数字电

路,其可通过一个电磁隔离器 E2023 直接和局域网相连。电阻 R1 用于连接两根接收线,和两根发送线相

连的电阻 R2 和 R3 则用于阻抗匹配。RJ45 为网络接头,其可接 10M 或 100 的网络集线器(hub)。

4. 软件设计

本设计的软件部分主要分为四大部分:以太网模块、TCP/IP 模块、API(应用程序接口)和 HTTP(超文本传输

协议)服务模块,全部程序用 C 语言编写(便于与其它微控制器系统的接口的扩展),并通过 IAR

Workbench for MSP430 V2.10 编译。

4.1 以太网模块
以太网部分程序的主要作用是对以太网控制器 CS8900A 进行驱动、以函数的形式给其它模块提供读写

CS8900A 寄存器的接口、产生读写 CS8900A 的时钟等。以太网程序包含了网络接口的各种配置,其中,

最重要的是,MAC(介质访问控制)地址的配置。MAC 地址共 48 位,在程序中用 6 个无符号整型变量存储

MAC 地址值,每个 MAC 地址值必需为唯一的,并且不能是 0xFFFFFFFFFFFF。

以太网控制器的配置过程如下:在系统上电后,首先调用函数 Init8900()进行以太网控制器 CS8900A 的

初始化配置,然后 CS8900A 被复位,MSP430F149 把本机的 MAC 地址以配置序列字的形式发给

CS8900A,CS8900A 把 MAC 地址存储在寄存器中。配置完成后,MSP430F149 就可以对 CS8900A 读

写数据了。

4.2 TCP/IP 模块

TCP/IP 模块是整个系统软件的关键,定义了使用网络来收发数据的协议,使用以太网模块所提供的各种

读写函数来接收或发送数据,并给应用层提供简单易用的 API 接口。

TCP/IP 模块中,最重要的函数是 DoNetworkStuff(),该函数的主要作用是进行 TCP 事件处理,应该周

期性地被用户程序调用。在函数 DoNetworkStuff()中,定义了一些用于标志以 CS8900A 和

MSP430F149 工作状态的标志量,该函数的工作流程如图 3 所示。函数 DoNetworkStuff()被调用得周期

越短,系统执行 TCP/IP 协议的性能越好。


为 了更 好的 协调 接发 和发 送的 数据 ,给 TCP/IP 模 块在 SRAM 中 分配 了三 个缓 冲区,
TxFrame1 、TxFrame2 和 RxTCPBuffer 。其中, TxFrame1 的主要作用是给要发送
的 TCP 数据帧 ( 包括以太网、IP 、TCP 帧头 ) 提供缓冲内存; TxFrame2 的主要作用是
给 TCP 非数据帧 ( 包括以太网、IP 、TCP 帧头 ) 和 ARP 、CIMP 协议帧提供缓冲内存;
RxTCPBuffer 给接收到的 TCP 数据提供缓冲内存。所分配的缓冲区越大,收发速度
越快,因为这样可以减少因缓冲区不足造成的滞后。

可以通过主动或被动的方式调用函数 TCPPassiveOpen() 或 TCPActiveOpen() 建立


网络通信连接。函数 TCPPassiveOpen() 函数的作用主要是用于检测到有数据包送入
时,把数据包送入缓冲区,函数 TCPActiveOpen() 的主要作用是,把要发送的数据
包送入缓冲区。在主动发送数据包之前,先设置要接收该数据包的 MAC 地址,并把
本机地址包含进数据包。一旦连接建立完成,就可以开始发送数据,可以通过相应的
接口函数读出连接的状态。当数据发送完毕,可以通过函数 TCPClose() 关闭连接。

在数据包收发的过程当中,不同的任务需要不同的处理时间,这个时间可以使用
MSP430F149 的 定 时 器 Timer_A 来 提 供 , 不 过 必 须 注 意 的 是 , 在 使 用 定 时 器
Timer_A 之前,必须进行初始化,这点同使用其它微控制器是相似的。为了减少数据
包 发送 不成 功造 成的 错误 ,当 接收 机接 收到 数据 后, 其应 当返 回一 个接 收正 确信 号,
当发送机超过设定时间,仍接收不到正确的接收信号时, TCP/IP 模块自动进行数据
包重发,这个过程可以通过相应的变量和函数来实现。

虽然,各个公司的软件处理 TCP/IP 协议的程序不尽相同,但幸运的是,各个公司在


TCP/IP 协议上的兼容性都非常好,因此,只要用户按照 TCP/IP 协议进行程序编写,
不同的程序间的通信应该不存在多大的问题。
4.3 API( 应用编程接口 )

为 了使 用户 既能 够使 用现 在的 应用 ,也 能够 建立 适用 自己 要求 的嵌 入式 应用 ,在 整
个软件的编制过程中,应当留一下 API 函数,以便于用户无需对 TCP/IP 协议有过多
的了解也能够在原有程序的基础上进行二次开发。本软件充分考虑了这一点,给用户
留 出 了 很 多 AIP 函 数 , 主 要 的 有 , TCPClose() 、 TCPReleaseRxBuffer() 和
TCPTransmitTxBuffer() 等。其中,函数 TCPClose() 的主要用处是用于关闭打开了
的 连接 ,在 关闭 连接 之前 ,发 送的 数据 包还 留在 发送 缓冲 区中 以保 证正 确发 送, 连
接关闭之后,用户要重新建立连接的话,必须重新设置 IP 地下、重新分配 I/O 口和重
新建立连接。 TCPReleaseRxBuffer() 的主要作用是,在读出缓冲区的数据之后,调
用此函数,无需再保存已正确读出的数据包,这样就可以腾出缓冲区用于存放新的数
据包。用户可以使用函数 TCPTransmitTxBuffer() 通过已建立的连接发送数据,但是,
在使用该函数前,用户要先检查 SOCK_TX_BUF_RELEASED 标志,确定是否有可
用的发送缓冲区。本设计中,还提供了检查连接状态和收发状态的变量 (标志),如
SOK_ACTIVE 、 SOCK_CONNEDTED 等。

4.4 HTTP 应用

在进行以上的工作之后,用户就可以建立 HTTP 服务器,通过 TCP/IP 协议,实现不


同的微控制器或工作站之间的通信。 HTML( 超文本链接标示语言 ) 网页数据可以保存
在 MSP430F149 的片内 FLASH 存储器中。网页能够完成接收数据、发送网页数据、
关闭连接和等待其它应用进行连接等。并且,用户建立的网页,能够动态实时的进行
数据更新。当然,无论是在普通计算机或微控制器上运行 HTML 网页应用程序,要实
现和其它计算机进行通信,都必须如前所述,设置单一、有效的 MAC 地址。

5. 结束语

随 着网 络技 术的 发展 ,需 要进 行网 络连 接和 通信 的微 型嵌 入式 因特 网终 端越 来越 多,
这不仅可以应用于日常生活中,也可以应用于许多工业现场,特别是在那些分散、共
享数据或需要共享某些信息的工业现场嵌入式网络终端的技术优质更加明显。此外,
MSP430 系列单片机的功耗非常低,很好的解决了在某些特殊场合下的电源问题。由
此可见,本文所论述的设计方案具有很大的应用前景。

参 考 文 献
[1] Texas Instruments. MSP430 Internet Connectivity[Z].2004.2
[2] Texas Instruments. MSP430x13x, MSP430x14x, MSP430x14x1 MIXED
SIGNAL MICROCONTROLLER[Z].2000.7
[3] Cirrus Logic. CS8900A Product Data Sheet[Z] .2001.4

You might also like