微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于MSP430F149的串口服务器设计

基于MSP430F149的串口服务器设计

时间:08-29 来源:互联网 点击:

摘 要: MSP430微处理器具有功耗低和功能模块丰富的特点。采用MSP430F149为主控制器和以太网控制芯片CS8900A设计串口服务器,并且嵌入精简后的TCP/IP协议。以过程控制设备为目标进行调试,实现RS-232串口和网络接口RJ45的转换。使串口设备联入以太网,实现远程网络控制。

本文采用了TI公司生产的16位超低功耗的混合信号处理器(mixed signal processor)和Cirrus公司生产的高集成度的全面支持IEEE802.3标准的以太网控制器CS8900A来设计嵌入式串口服务器终端,以模块化设计思想提供软件设计,鉴于嵌入式系统有限的内存,对TCP/IP进行了精简,并进行了调试。

1 硬件电路设计

主控制器MSP430[1]是美国Texas Instruments(TI)公司于1996年开始推向市场的超低功耗微处理器,拥有5种低功耗模式,以适应不同的需要。CPU从低功耗模式被唤醒,这个过程最多只需要6 μs。灵活的时钟使用方式也是MSP430的一大特点,除了片内集成一个晶体振荡器外,还可外接1~2个晶体振荡器。不同的内部功能模块可根据需要使用不同的晶体振荡器,在不需要时可以通过设置寄存器将其关闭,以减低功耗。MSP430采用了16位的RISC架构,具有125 ns的指令周期,且内部具有丰富的功能模块,集成了多通道10~14位的A/D转换器、双路12位D/A转换器、比较器、电源电压检测、串行口USART(UART/SPI)、硬件乘法器、Flash存储器、看门狗定时器及多个16位、8位定时器等功能模块。这些结构使得MSP430微处理器可以应用到更多的场合,有更广泛的应用,也使得串口服务器的设计更为简单化。

以太网控制芯片CS8900A[2]是Cirrus Logic公司生产的低功耗、性能优越的16位以太网控制器。其突出特点是使用灵活,物理层接口、数据传输模式和工作模式等都能根据需要而动态调整,通过内部寄存器的设置来适应不同的应用环境。

系统的硬件框图如图1所示。

图1 系统的硬件框图

电源通过5 V电源适配器,经LD1117芯片转化为3.3 V稳压电源给主控制器MSP430、以太网芯片CS8900A及SP3223供电。MSP430接8 MHz的晶振,同时外接一个JTAG口,通过JTAG口接MSP430仿真器用于系统与MSP430开发软件IAR之间的程序调试 。

主控制器负责控制以太网接口完成网络数据包的发送和接收,以及相应的封装和解包工作,根据上位机的指令完成相应的数据采集和处理,并且检测串口通信模块是否有事件发生然后做出相应的反应;负责完成系统上电复位、初始化以及低电压检测等功能。CS8900A内部的802.3介质访问控制[4]负责处理有关以太网数据帧的发送和接收,包括:数据检测、帧头的产生和检测、CRC校验码的生成和验证。以太网模块用于完成TCP/IP协议栈中的链路层功能,在发送时把网络层数据包转换成以太网物理帧格式用于物理信道上的传输;在接收时将物理信道上接收到的信号转换成网络层数据包。

2 软件程序设计

软件部分采用模块化的设计思想,把程序化繁为简,便于程序的设计、调试及维护。整个部分包括初始化模块、串口数据采集及处理模块、网络数据采集及处理模块和TCP/IP模块,另外还有定时器中断用于TCP的重发机制计时和数据采集计时、串口中断用于转发串口数据。

程序工作流程如图2所示。

图2 程序工作流程

2.1初始化模块

初始化模块包括对主控制器MSP430F149和以太网控制器CS8900A的初始化;包括时钟振荡器的设置、I/O口初始化设置、定时器A的初始化和CS8900A片内寄存器的初始化。

初始化XT1上的8MHz晶振,并用作系统主时钟MCLK。

static void InitOsc(void)

{

WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗

BCSCTL1 |= XTS; // XT1工作在高频模式

__bic_SR_register(OSCOFF); // 启动XT1晶振

do

{

IFG1 = ~OFIFG; // 清除振荡器失效标志 OFIFG

DelayCycles(100); // 延时130?滋s

}

while (IFG1 OFIFG); // 判断XT1是否起振

BCSCTL2 = SELM_3; // 选择MCLK为XT1

}

I/O口的初始化:P3.7和P3.6初始化用于控制CS8900A的IOW和IOR,P3.5和P3.4用于串口UART0,P3.3~P3.0用于CS8900的地址总线,P5用于CS8900A的数据总线,这些都在CS8900A的初始化程序中进行。

以太网模块CS8900A的初始化程序如下:

void Init8900(void)

{

unsigned int i;

P3OUT = IOR | IOW;

P3DIR = 0xff;

P5OUT = 0;

P5DIR = 0xff;

DelayCycles(40000);

DelayCycles(40000);

Write8900(ADD_PORT, PP_SelfCTL);

Write8900(DATA_PORT,POWER_ON_RESET);

do

Write8900(ADD_PORT, PP_SelfST);

while (!(Read8900(DATA_PORT) INIT_DONE));

}

2.2数据采集及处理

这里包括网络数据和串口数据的采集和处理。程序设计中设置了全局变量DonetworkStuff函数来

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

网站地图

Top