微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 用MSP430实现的嵌入式因特网终端设计

用MSP430实现的嵌入式因特网终端设计

时间:06-18 来源:互联网 点击:


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 ActionGroup)接口、晶振和复位电路。其中,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.5CS8900A与局域网的接口
  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.2TCP/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.3API(应用编程接口)
  为了使用户既能够使用现在的应用,也能够建立适用自己要求的嵌入式应用,在整个软件的编制过程中,应当留一下API函数,以便于用户无需对TCP/IP协议有过多的了解也能够在原有程序的基础上进行二次开发。本软件充分考虑了这一点,给用户留出了很多AIP函数,主要的有,TCPClose()、TCPReleaseRxBuffer()和TCPTransmitTxBuffer()等。其中,函数TCPClose()的主要用处是用于关闭打开了的连接,在关闭连接之前,发送的数据包还留在发送缓冲区中以保证正确发送,连接关闭之后,用户要重新建立连接的话,必须重新设置IP地下、重新分配I/O口和重新建立连接。TCPReleaseRxBuffer()的主要作用是,在读出缓冲区的数据之后,调用此函数,无需再保存已正确读出的数据包,这样就可以腾出缓冲区用于存放新的数据包。用户可以使用函数TCPTransmitTxBuffer()通过已建立的连接发送数据,但是,在使用该函数前,用户要先检查SOCK_TX_BUF_RELEASED标志,确定是否有可用的发送缓冲区。本设计中,还提供了检查连接状态和收发状态的变量(标志),如SOK_ACTIVE、SOCK_CONNEDTED等。
  4.4HTTP应用
在进行以上的工作之后,用户就可以建立HTTP服务器,通过TCP/IP协议,实现不同的微控制器或工作站之间的通信。HTML(超文本链接标示语言)网页数据可以保存在MSP430F149的片内FLASH存储器中。网页能够完成接收数据、发送网页数据、关闭连接和等待其它应用进行连接等。并且,用户建立的网页,能够动态实时的进行数据更新。当然,无论是在普通计算机或微控制器上运行HTML网页应用程序,要实现和其它计算机进行通信,都必须如前所述,设置单一、有效的MAC地址。
  5.结束语
  随着网络技术的发展,需要进行网络连接和通信的微型嵌入式因特网终端越来越多,这不仅可以应用于日常生活中,也可以应用于许多工业现场,特别是在那些分散、共享数据或需要共享某些信息的工业现场嵌入式网络终端的技术优质更加明显。此外,MSP430系列单片机的功耗非常低,很好的解决了在某些特殊场合下的电源问题。由此可见,本文所论述的设计方案具有很大的应用前景。
         

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top