用MSP430实现的嵌入式因特网终端设计
展),并通过IARWorkbenchforMSP430V2.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()或TCPActiv
eOpen()建立网络通信连接。函数TCPPassiveOpen()函数的作用主要是用于检测到有数据包送入时,把数据包送入缓冲区,函数TCPActiveOpen()的主要作用是,把要发送的数据包送入缓冲区。在主动发送数据包之前,先设置要接收该数据包的MAC地址,并把本机地址包含进数据包。一旦连接建立完成,就可以开始发送数据,可以通过相应的接口函数读出连接的状态。当数据发送完毕,可以通过函数TCPClose()关闭连接。
在数据包收发的过程当中,不同的任务需要不同的处理时间,这个时间可以使用MSP430F149的定时器Timer_A来提供,不过必须注意的是,在使用定时器Timer_A之前,必须进行初始化,这点同使用其它微控制器是相似的。为了减少数据包发送不成功造成的错误,当接收机接收到数据后,其应当返回一个接收正确信号,当发送机超过设定时间,仍接收不到正确的接收信号时,TCP/IP模块自动进行数据 《用MSP430实现的嵌入式因特网终端设计(第4页)》
本文链接地址:http://www.oyaya.net/fanwen/view/143287.html
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()或TCPActiv
eOpen()建立网络通信连接。函数TCPPassiveOpen()函数的作用主要是用于检测到有数据包送入时,把数据包送入缓冲区,函数TCPActiveOpen()的主要作用是,把要发送的数据包送入缓冲区。在主动发送数据包之前,先设置要接收该数据包的MAC地址,并把本机地址包含进数据包。一旦连接建立完成,就可以开始发送数据,可以通过相应的接口函数读出连接的状态。当数据发送完毕,可以通过函数TCPClose()关闭连接。
在数据包收发的过程当中,不同的任务需要不同的处理时间,这个时间可以使用MSP430F149的定时器Timer_A来提供,不过必须注意的是,在使用定时器Timer_A之前,必须进行初始化,这点同使用其它微控制器是相似的。为了减少数据包发送不成功造成的错误,当接收机接收到数据后,其应当返回一个接收正确信号,当发送机超过设定时间,仍接收不到正确的接收信号时,TCP/IP模块自动进行数据 《用MSP430实现的嵌入式因特网终端设计(第4页)》