打印

基于MSP430F149的串口服务器设计

[复制链接]
742|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
i1mcu|  楼主 | 2014-8-31 20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  摘要:MSP430微处理器具有功耗低和功能模块丰富的特点。采用MSP430F149为主控制器和以太网控制芯片CS8900A设计串口服务器,并且嵌入精简后的TCP/IP协议。以过程控制设备为目标进行调试,实现RS-232串口和网络接口RJ45的转换。使串口设备联入以太网,实现远程网络控制。

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

  1硬件电路设计

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

相关帖子

沙发
i1mcu|  楼主 | 2014-8-31 20:45 | 只看该作者
 以太网控制芯片CS8900A[2]是CirrusLogic公司生产的低功耗、性能优越的16位以太网控制器。其突出特点是使用灵活,物理层接口、数据传输模式和工作模式等都能根据需要而动态调整,通过内部寄存器的设置来适应不同的应用环境。

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


使用特权

评论回复
板凳
i1mcu|  楼主 | 2014-8-31 20:46 | 只看该作者
 电源通过5V电源适配器,经LD1117芯片转化为3.3V稳压电源给主控制器MSP430、以太网芯片CS8900A及SP3223供电。MSP430接8MHz的晶振,同时外接一个JTAG口,通过JTAG口接MSP430仿真器用于系统与MSP430开发软件IAR之间的程序调试。

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

使用特权

评论回复
地板
i1mcu|  楼主 | 2014-8-31 20:46 | 只看该作者
  2软件程序设计

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

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

使用特权

评论回复
5
i1mcu|  楼主 | 2014-8-31 20:48 | 只看该作者



图2程序工作流程

使用特权

评论回复
6
i1mcu|  楼主 | 2014-8-31 20:48 | 只看该作者
  2.1初始化模块

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

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

  staticvoidInitOsc(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

  }

使用特权

评论回复
7
i1mcu|  楼主 | 2014-8-31 20:48 | 只看该作者
  I/O口的初始化:P3.7和P3.6初始化用于控制CS8900A的IOW和IOR,P3.5和P3.4用于串口UART0,P3.3~P3.0用于CS8900的地址总线,P5用于CS8900A的数据总线,这些都在CS8900A的初始化程序中进行。

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

  voidInit8900(void)

  {

  unsignedinti;

  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));

  }

使用特权

评论回复
8
i1mcu|  楼主 | 2014-8-31 20:48 | 只看该作者
  2.2数据采集及处理

  这里包括网络数据和串口数据的采集和处理。程序设计中设置了全局变量DonetworkStuff函数来检查是否收到一个帧。当确定数据包是发给特定模块时,开始调用函数ProcessFrame()来对数据进行处理。

使用特权

评论回复
9
i1mcu|  楼主 | 2014-8-31 20:49 | 只看该作者
  2.3TCP/IP模块

  层次结构是描述协议栈普遍采用的方法,每一层都向上一层提供服务,同时使用来自下层提供的服务,低层的操作细节对上层来说是不透明的。根据嵌入式自身的特点和系统需求,对TCP/IP进行了精简,以更适合嵌入式系统的需要。TCP/IP的4层结构与OSI的7层参考模型对应关系如图3所示。


图3TCP/IP的4层结构

使用特权

评论回复
10
i1mcu|  楼主 | 2014-8-31 20:49 | 只看该作者
TCP/IP协议中应用层、传输层、互联网层和网络接口层的基本功能如表1所述。

表1TCP/IP协议各层功能


使用特权

评论回复
11
i1mcu|  楼主 | 2014-8-31 20:49 | 只看该作者
 当有串口数据需要发送或者收到网络数据后,系统进入TCP/IP协议模块对数据进行处理,TCP/IP协议模块的初始化程序如下:

  voidTCPInit(void)

  {

  BCSCTL1&=~DIVA0;

  //ACLK=XT1/4=2MHz

  BCSCTL1|=DIVA1;

  TACTL=ID_3+TASSEL_1+MC_2+TAIE;

  //选择ACLK为时钟源,1/8分频,连续计数模式

  Init8900();

  TransmitControl=0;

  TCPFlags=0;

  TCPStateMachine=CLOSED;

  SocketStatus=0;

  }

使用特权

评论回复
12
i1mcu|  楼主 | 2014-8-31 20:50 | 只看该作者
 目前市场成型的串口服务器产品大多采用高性能32位微处理器在RTOS(实时多任务操作系统)上开发,成本高,开发周期长。采用16位的MSP430的串口服务器,成本较低,而且功耗较低,配置以太网控制器CS8900A,有很广泛的应用场合。采用16位微处理器、网络接口芯片和精简TCP/IP协议的设计,实现RS-232串口和网络接口RJ45的转换,既经济,又简单。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

279

主题

8574

帖子

9

粉丝