历史上的今天
返回首页

历史上的今天

今天是:2025年02月22日(星期六)

2021年02月22日 | 基于MSP430单片机和CS8900A的以太网终端设计

2021-02-22 来源:eefocus

1. 概述

计算机通信系统尤其是因特网在日常生活中的作用越来越重要,并且呈加速发展的趋势。如今,上网不再是个人电脑和网络工作站的专利,很多用微控制器(或称单片机)控制的嵌入式系统也成为了因特网网络节点中的一员,通常,这种嵌入式系统可称为嵌入式因特网终端。试想,如果通过网页浏览器,能够完成对远处的微控制器控制,并能够接收到微控制器采集的信号,那将给人们的生活带来很大的便利和极大地推动生产力的发展。打个比方,如果通过办公室的一台连接到因特网的电脑和安装在家里的嵌入式控制器,人们就可以了解到家里或者发生的一切,那么家居防盗等一系列问题将会等到很好的解决。


MSP430是由于TI(TexasInstruments,美国德州仪器公司)开发的16位微处理器,其突出的特点是强调低功耗,非常适用于各种低功率要求的应用,有多个系列和型号。由于其性价比比较高,所以,被广泛应用于家居自动化,医疗设备,安防系统,楼宇控制系统等许多领域当中。本因特网终端设计方案中使用的MSP430F149是TI公司于2000年增加的MSP430F1X中的一员。


2.协议基础

ISO(InternetStandardOrganization,国际标准组织)于1981年提出了OSI(OpenSystemInterconnect,开放系统互连)七层网络模型。七层网络模型的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务。


因特网采用的四层网络模型是OSI七层网络模型的一个子集,其具体的四层:应用层、传输层、因特网层和网络层,图1为因特网的四层网络模型与OSI七层网络模型的对应关系图。因特网模型通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。


图1OSI七层协议与因特网四层模型的对应关系


图1OSI七层协议与因特网四层模型的对应关系


2.1以太网(Ethernet)[1]

以太网是目前用得最广泛的一种局域网,它在因特网四层网络模型当中,属于网络层。以太网网络中的每个节点具有相同的访问网络的权利,它们之间对网络占用是通过具有冲突检测的载波监听多路访问(CSMA/CD)的方法来实现的。数据采用曼彻斯特编码,网络中的连接一般采用双绞线或同轴电缆。以太网中每个节点具有一个48位、唯一编号的地址。每帧数据的最大长度为1518个字节,第一个48位为目标地址,第二个48位为数据源地址,然后是2个字节的数据帧类型值,在数据帧的最后,自动生成4个字节的循环冗余码校验(CRC)值,用于保证数据帧的完整性。


2.2传输控制协议TCP(TransmissionControlProtocol)

TCP提供了一种可靠的数据流服务,尽管TCP是DARAP协议组中的一员,但它却有很大的独立性。它对下层网络协议只有最基本的要求,很容易在不同的网络上建成,因而非常流行。ISO/OSI运输层标准中的第四类TP-4就是以TCP作为原型建立的。TCP可以在众多的网络上工作,可以提供虚拟电路服务和面向数据流的传输服务。用户数据可以有序而且可靠的传送。在一个分组可能发生丢失、破坏、重复、延迟或失序情况下,TCP服务可提供一种可靠的进程间通信机制,协议可以自动纠正各种差错。


2.3网际协议IP(InternetProtocol)

第三层最重要的协议是IP。它将多个网络联成一个互连网。IP的工作是将一个以上的报文处理网络联成一个网际网。IP的基本任务是通过网际网传送数据报,各个IP数据报之间是相互独立的。主机上的IP层基于数据链路层的服务向传输层提供服务。IP从源运输实体取得数据,通过它的数据链路层服务传给目的主机的IP层。网关通过下一网络数据报传到目的主机或下一网关。


2.4地址转换协议ARP(AddressResolutionProtocol)

在TCP/IP网络环境下,每个主机分配的组位IP地址只是一种逻辑地址,这样在传送时必须转换成物理地址,ARP协议就是完成这一功能的。ARP使主机可以找到同一物理网络中任一物理主机的物理地址,只需给出该主机的网际地址即可。可见,基本网络的物理编址对网络层服务是透明的。


2.5其它协议

在因特网网络协议当中,还有其它相关的协议,如:反向地址转换协议RARP(ReverseAddressResolutionProtocol)、用户数据报协议UDP(UserDatagramProtocol)、网际控制报文协议ICMP(InternetworkcontrolMessageProtocol)、超文本传输协议(hypertexttransferprotocol)等,它们在因特网的数据交换当中都有什么重要的作用,本文限于篇幅,不一一详细介绍。


3.硬件设计[

本设计中所用到的两个重要组件为TI公司的微处理器MSP430F149和Crystal公司的以太网控制器CS8900A,下面简单介绍一下这两个组件,再论述硬件实施方案。


3.1MSP430F149[

MSP430F149具有60K字节的FLASH存储器和2K字节的RAM、看门狗定时器(WatchdogTimer)、6个8位的通用I/O口、12位A/D转换器、2个串行通信接口和1个硬件乘法器等。MSP430F149的60K字节FLASH存储器足以存储网页数据,6个通用I/O口既可以用来控制以太网控制器CS8900A,也可以用来执行其它的用户命令,12位A/D转换器可以用来在终端采集数据,然后再通过网络发给用户.


3.2CS8900A

CS8900A低功耗的以太网控制器,被广泛应用于工控机中。其高集成度的设计(在应用当中只需要极少的外围元件)和简单容用的总线接口,非常适用于本设计。目前,许多的以太网控制器都只提供PCI(周边元件扩展接口)接口,而CS8900A可以直接和微控制器相连,所以,可以MSP430F149的I/O口来直接对CS8900A进行控制,具体连接方式如图2所示。另外,CS8900A可以直接3V供电,这有利于和MSP430F149之间的电平匹配。


图2:硬件电路原理图

图2:硬件电路原理图


3.3MSP430F149与CS8900A的接口

CS8900A有三种工作模式:I/O模式、存储器模式和直接存储器存储模式,默认为I/O模式,可通过程序使其工作于其它模式。CS8900A的各个工作模式各有优缺点,本设计当中,采用的是它的I/O模式。CS8900A共有8个16位的I/O口,这8个I/O口与片内的8个16位寄存器相对应。如图2所示,CS8900A采用8位的数据总线方式和MSP430F149的P5口相连,接口中共用到14个引脚。复位后,CS8900A默认选择I/O地址为0x300,并且一直保持该默认地址工作。


3.4系统硬件原理

整个系统的硬件原理如图2所示,下面详细分析图中的各个模块。


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(JointTestActionGroup)接口、晶振和复位电路。其中,JTAG接口用于编程和调试,用一个14引脚的接头引出了TCK、TDI、TDO/TDI四个用于编程和调试的引脚,可直接和MSP430的调试工具FET(FLASHEmulationTool)相连。用户也可以通过电平转换芯片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语言编写(便于与其它微控制器系统的接口的扩展),并通过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协议的性能越好。

图3:系统工作流程图


图3:系统工作流程图


为了更好的协调接发和发送的数据,给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系列单片机的功耗非常低,很好的解决了在某些特殊场合下的电源问题。由此可见,本文所论述的设计方案具有很大的应用前景。


推荐阅读

史海拾趣

Genesis Microchip公司的发展小趣事

在20世纪中期,GI作为一家新兴的电子设备制造商,以其对新兴技术的敏锐洞察力和创新精神而崭露头角。公司创始人意识到半导体技术的巨大潜力,决定投入大量资源进行研发。通过不懈努力,GI成功推出了多款基于半导体技术的创新产品,如早期的晶体管收音机和电视机,这些产品不仅在当时市场上引起了轰动,也为公司后续的快速发展奠定了坚实基础。这一阶段的成功,标志着GI在电子行业技术创新的道路上迈出了坚实的一步。

GAPTEC Electronic GmbH & Co. KG公司的发展小趣事

背景:2000年代初,随着全球对数字设备需求的激增,Galaxy Microelectronics在硅谷成立。公司创始人是一群来自斯坦福大学的工程师,他们看到了闪存技术在便携式设备中的巨大潜力。

发展:Galaxy Microelectronics的初创团队专注于研发高性能、低功耗的NAND闪存芯片。他们成功开发出了一种创新的电荷撷取闪存(CTF)技术,这项技术有效解决了当时浮栅架构的串扰问题,使得闪存芯片的耐用性和速度大幅提升。这一创新迅速吸引了市场关注,公司开始获得风险投资的支持。

Comtronic Gmbh-Verbindungstechnik公司的发展小趣事

背景:随着全球对环保和可持续发展的重视,Galaxy Microelectronics也开始关注其生产过程中的环保问题。

发展:公司投入巨资建设绿色工厂,采用先进的环保技术和设备,减少生产过程中的能源消耗和废弃物排放。同时,Galaxy Microelectronics还积极推广环保理念,与供应商和客户共同构建绿色供应链。这些举措不仅提升了公司的社会形象,还为其在竞争激烈的市场中赢得了更多客户的青睐。

First Switchtech公司的发展小趣事

随着物联网、智能家居等新兴技术的兴起,First Switchtech公司(或类似公司)看到了跨界合作的新机遇。公司积极与智能家居厂商、物联网平台等合作伙伴开展深度合作,共同研发具有创新性的智能开关产品。这些产品不仅实现了开关的远程控制、智能联动等功能,还为用户提供了更加便捷、舒适的智能生活体验。通过跨界合作,First Switchtech公司成功拓展了业务领域,并在智能家居市场中占据了重要位置。

东晶(ECEC)公司的发展小趣事

面对日益激烈的市场竞争和环境保护的压力,东晶电子坚持品质至上和绿色生产的理念。公司引进了先进的品质管理体系和环境管理体系,通过ISO9001、ISO14000等认证,确保产品质量的稳定性和可靠性。同时,公司还积极推广绿色生产理念,采用环保材料和工艺,降低生产过程中的能耗和排放,实现可持续发展。

歌普(GEPU)公司的发展小趣事

近年来,随着电子信息技术的快速发展和智能化趋势的加剧,东晶电子也面临着新的机遇和挑战。为了适应市场变化和满足客户需求,公司开始实施战略转型和升级。公司加大了对新型电子元器件的研发力度,推动产品向微型化、功能化、高精度方向发展。同时,公司还积极开拓新领域和新市场,拓展业务范围和市场份额。这些举措为公司未来的发展奠定了坚实的基础。

请注意,这些故事是基于已知信息的概括性描述,并非具体的历史事件。在实际情况中,东晶电子的发展历程可能更加复杂和多样化。

问答坊 | AI 解惑

一些经典CC++程序源码

这是一些经典的C或C++得程序源码,希望对大家的学习有帮助…

查看全部问答>

2005年全国电子大赛作品文集含源码

本帖最后由 paulhyde 于 2014-9-15 09:08 编辑 2005年全国电子大赛作品文集含源码,(凌阳单片机)希望对大家有帮助  …

查看全部问答>

跪求单片机控制无线模块的程序

本帖最后由 paulhyde 于 2014-9-15 09:43 编辑 rt  …

查看全部问答>

TI2000系列DSP开发应用【视频】

传一个小视频 TI2000系列DSP开发应用【视频】…

查看全部问答>

声纳传感器有人用过吗

来自EEWORLD合作群:arm linux fpga 嵌入0(49900581)…

查看全部问答>

3D电视国标制定完成或试水亚运会

本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 中国拥有完整知识产权的3D电视系统已经制定完成。昨日(7月21日),《每日经济新闻》从数字音视频解码技术标准工作组 (以下简称“AVS工作组”)获悉,最新版本的标准已经于六月底完成定稿,今日将 ...…

查看全部问答>

开关电源启动时间慢

14串14并驱动原理图如下: 反激式,输出51v恒流420ma; 上电有3-4秒延迟; 如果将启动电阻R9,R10,R21,R22改成总电阻110K的电阻时,并且电容C6 改成47U,启动时间会变快;才不到1秒 电阻起到缓冲电流的作用,减小充电电流;同时降低IC启动功耗 ...…

查看全部问答>

IIC地址问题

我们公司的一个项目,W78E52往W78E58传送数据, W78E52用的是P3^2、P3^3发送,W78E58用P2^0、P2^1来接收; 想问下是通过什么传送的呢,IIC吗?那怎么知道这2个芯片的地址呢? 还是其它传送? 请高手指教,帮帮忙,谢谢! …

查看全部问答>

求助!帮我看看无线通信模块代码哪里错了

要实现的功能: 主机按一个键P3^4,发送一次数据从机对比数据是不是需要的数据,是的话从机蜂鸣器响 出现的问题是: 1、按下键,主机一直在发数据,从机始终没有接收到,从机不做任何反应 2、另外可能是程序不稳定,还会出现一个问题:没有把24L ...…

查看全部问答>