历史上的今天
返回首页

历史上的今天

今天是:2024年12月23日(星期一)

正在发生

2020年12月23日 | 基于MSP430F149的串口服务器设计

2020-12-23 来源:elecfans

  摘 要: 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 系统的硬件框图


  图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 程序工作流程


  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函数来检查是否收到一个帧。当确定数据包是发给特定模块时,开始调用函数ProcessFrame()来对数据进行处理。


  2.3 TCP/IP模块

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

  

图3 TCP/IP的4层结构


  图3 TCP/IP的4层结构


  TCP/IP协议中应用层、传输层、互联网层和网络接口层的基本功能如表1所述。


  表1 TCP/IP 协议各层功能

  

表1 TCP/IP 协议各层功能


  当有串口数据需要发送或者收到网络数据后,系统进入TCP/IP协议模块对数据进行处理,TCP/IP协议模块的初始化程序如下:

  void TCP Init(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;

  }


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

推荐阅读

史海拾趣

Custom Mmic Design Services Inc公司的发展小趣事

CMDS深知技术创新是企业持续发展的关键。因此,公司不断加大研发投入,积极引进优秀人才和先进技术设备。通过持续的研发投入和人才培养,CMDS不断推出具有创新性和竞争力的新产品和解决方案。这些新产品不仅满足了客户不断变化的需求,也推动了整个行业的发展和进步。

Chipcon AS公司的发展小趣事

随着公司业务的不断发展,Chipcon AS公司开始将目光投向全球市场。公司通过参加国际电子展会、设立海外分支机构等方式,积极推广自己的产品和服务。同时,公司还针对不同国家和地区的市场需求,定制化开发了一系列符合当地标准的产品。这些举措使得Chipcon AS公司的产品在全球范围内得到了广泛应用和认可。

DESOUTTER公司的发展小趣事

近年来,Desoutter公司开始重视中国市场的发展,并加大了在中国的投资和布局。公司在中国设立了多个销售和服务中心,以便更好地服务中国客户。同时,Desoutter公司还与中国本土企业开展合作,共同开发适合中国市场的产品。这些举措使Desoutter公司在中国市场的份额不断扩大,品牌影响力也得到了提升。

以上五个故事涵盖了Desoutter公司在电子行业中的发展历程、技术创新、国际化战略、合并与扩张以及中国市场的发展等方面。这些故事基于事实描述,旨在展现Desoutter公司在电子行业中的成长和变化。

淩志比高公司的发展小趣事

在电子行业的浪潮中,淩志比高公司由几位充满激情的创业者创立。创业初期,公司面临着资金短缺、市场竞争激烈等挑战。然而,凭借对技术的深刻理解和敏锐的市场洞察力,淩志比高成功开发出一款具有创新性的电子产品,迅速在市场上获得了一席之地。

ECI公司的发展小趣事

ECI公司深知人才是企业发展的关键因素。因此,公司高度重视人才的引进、培养和激励。公司建立了完善的人才选拔机制,选拔具有潜力和才华的员工进行重点培养。同时,公司还提供了丰富的培训和发展机会,帮助员工提升自身素质和能力。此外,ECI还建立了科学合理的薪酬制度和激励机制,让员工在为公司创造价值的同时也能获得相应的回报。这种对人才的重视和投入让ECI公司汇聚了一批优秀的员工队伍,为公司的发展提供了有力的保障。

Easy Magnet Corp公司的发展小趣事

随着环保意识的提高,Easy Magnet Corp公司开始关注产品的环保性能。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还积极参与环保公益活动,倡导绿色消费理念。这些举措不仅提升了公司的社会形象,也吸引了更多注重环保的消费者。

问答坊 | AI 解惑

未来数字生活想实现,Windows Embedded缺不了!

近年来,信息家电、数码产品、智能手机及各种掌上型多媒体设备成为IT产业的潮流,除了以上所提到的电子产品以外,其实有更多的嵌入式应用隐身在不为人知的角落,从小到电子手表、电子体温计、翻译机等,到大如冷气机、电冰箱、电视机,甚至是路上 ...…

查看全部问答>

UCOS2在51上的移植

这是我大学的毕业设计,当时拿到题目时真不知道如何下手,花了我3个月的时间,直到论文写完,才真正理解ucos2的工作原理的,希望对有兴趣进入嵌入式系统学习的战友们有所帮助,同时也希望大家一起探讨学习。…

查看全部问答>

想学单片机

放假了,想学单片机,c语言二级水平,希望大家能给些建议…

查看全部问答>

请问大家知道24V输入转5V输出应该用什么芯片吗???

24V输入转5V输出是直接转还是分级转??? 有什么合适的芯片片吗?? 第一次做这种电路。。。。…

查看全部问答>

s3c2410驱动困惑!!

我根据周立功开发板带的led驱动例程,根据自己对驱动的理解,修改如下,可是驱动却不能实现。 我在这里没有使用内核自带的函数write_gpio_bit(leds_table[arg],cmd),而是直接包含进了周立功开发板提供的S3C2410.h的头文件,然后自己编写驱动,直 ...…

查看全部问答>

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or c

这么经典的问题都被我遇到了。 刚刚接触wince一周。写代码建立工程一直没有用MFC,而是使用的是Application 写的程序编译出来,完全没问题,可以下载到开发板跑。 今天下午试着建立个MFC工程。工程建立好之后,一句代码都没写,一句代码都没写 ...…

查看全部问答>

如何让我的WINCE系统具有象PC机一样的网上邻居?

我订制的操作系统上没有网上邻居,上网有些不方便,请问,如何添加自己的网上邻居?除了加入NETWORK USER INTERFACE组件外还需要其他什么组件? 谢谢…

查看全部问答>

飞行模式问题

我想屏蔽Windows Mobile下飞行模式的功能,就是不让用户点击关闭电话生效,该怎么做?…

查看全部问答>

单片机的问题

提高单片机 WR,RD 驱动能力一般用什么芯片啊…

查看全部问答>

请问大家如何选择控制变压器的容量

如题,在二次回路中经常用到36V的器件(比如接触器等),这时候我们应该怎么选择控制变压器的容量;…

查看全部问答>