用MSP430实现的嵌入式因特网终端设计
javascript:window.open(this.src);" style="cursor:pointer;"/>
为了更好的协调接发和发送的数据,给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