历史上的今天
返回首页

历史上的今天

今天是:2025年03月19日(星期三)

正在发生

2018年03月19日 | 基于STM32处理器的硬件电路连接图和软件程序设计

2018-03-19 来源:eefocus

    本文介绍了一款单片网络接口芯片W5100,该芯片内部集成了TCP/IP硬件协议栈,支持多种网络协议。给出了基于STM32处理器的硬件电路连接图和软件程序设计。目前,该系统已成功应用在多个建筑能耗监测项目中,运行结果表明该系统通信稳定可靠,能够满足项目对远程数据传输的需求。

    数据采集与传输系统一直是工业控制、环境参数监测、建筑能耗信息监测等多个领域共同关注的问题,尤其是针对远程数据传输问题。受传输距离的限制,传统的现场总线通信方式只适合于近距离的数据传输;而基于GPRS技术的数据传输系统虽然可以不受距离的限制,但其按照流量进行收费,对于大量数据连续传输而言资费不低,在实际的项目中应用也不是很广泛。目前,基于以太网的数据传输系统以其成本低廉、通信速率高和支持远距离通信等诸多优点,在监测领域得到了越来越多的应用。
    常见的网络驱动芯片有RTL8019、CS8900、ENC28J60、DM9000、W5100等,其中ENC28J60支持串行SPI接口通信方式,接口电路设计相对简单。RTL8019、CS8900和DM9000都是并行总线式驱动方式,需要连接较多的数据线、地址线以及读写控制引脚等。W5100既支持串行SPI接口,同时也支持并行总线方式。这几款芯片中除了W5100内置TCP/IP协议栈之外,其余都需要用户自己开发以太网驱动程序,需要占据大量的存储空间以及宝贵的RAM内存单元;而且,软件的实现方式与硬件集成相比,稳定性和可靠性也稍差。

1 W5100芯片介绍
    W5100是韩国Wiznet公司生产的一款多功能的单片网络接口芯片,内部集成有10/100M以太网控制器,且经过多年实际项目应用验证的硬件TCP/IP协议栈,提供全双工以太网解决方案。与该公司之前的产品W3100相比,W5100内部集成了物理层RTL8201CP核,它是一款集TCP /IP协议栈、以太网MAC和PHY为一体的网络接口芯片,具有更高的集成度和更稳定的工作性能,便于硬件实现。W5100芯片同时支持直接并行总线、间接并行总线和SPI串行总线共3种接口方式与主控芯片进行通信,可以满足不同场合的需求。这些性能使得用户不需要考虑以太网TCP/IP协议栈的移植等复杂的软件驱动程序,可以像访问外部存储器一样操作W5100,实现网络通信功能。W5100的性能特点如下:
    ①内嵌10/100BaseT以太网物理层;
    ②理论最大传输率可达25 Mb/s;
    ③支持自动MDI/MDIX,自动校正信号极性;
    ④支持ADSL连接(支持PPPOE协议中的PAD/CHAP认证模式);
    ⑤支持4个独立端口同时运行;
    ⑥内置16 KB存储器用于数据发送/接收缓存。
1.1 内部结构及引脚功能
    如图1所示,W5100将网络协议的处理分成一个由特定处理器执行的控制部分和一个硬件线路部分,实现硬件化的TCP、UDP、ICMP、IPv 4、ARP、IGMP以及PPPoE协议,含有连接以太网协议中的数据控制及MAC协议;按照功能可以将W5100的引脚分为与处理器接口的通信引脚、以太网物理层功能引脚、时钟引脚、LED工作状态指示引脚、电源引脚等几类。直接总线接口方式需要用到ADDR[0~14]共15个引脚;而间接总线接口方式只需要用到地址线0和地址线1,其余的地址线ADDR[2~14]通过电阻接地即可;使用SPI接口方式时需要注意,必须将SEN引脚接高电平,才能使SPI功能有效,后面在硬件电路部分介绍。

a.jpg?imageView2/2/w/550

    1.2 寄存器功能介绍
    W5100的寄存器可以分为通用寄存器和端口寄存器两类。其中,通用寄存器包括对W5100的网络配置、中断、超时参数以及缓冲区大小等设置;端口寄存器是针对W5100的4个独立的端口设置,包括端口模式寄存器、端口命令寄存器、端口中断寄存器和端口状态寄存器等在内的共17个寄存器。

        通用寄存器的详细信息如表1所列。针对中断寄存器IR共有7个中断源,当任何一个未被屏蔽的中断置为高电平时,W5100的中断输出引脚INT将会一直保持低电平,MCU通过读取IR寄存器定位中断源,并进行中断程序处理,之后清零IR中相应的位,INT引脚才恢复为高电平。

b.jpg?imageView2/2/w/550


     W5100内部共有16 KB发送/接收缓冲区,发送和接收各占8 KB,默认每个端口的发送和接收均为2 KB,即RMSR=TMSR=0x55,在实际使用过程中,用户可以根据实际情况调整发送/接收缓冲区大小。如图2所示,通过修改每个端口对应的S1和S0寄存器可以修改相应的端口缓冲区大小。

c.jpg?imageView2/2/w/550

 

    
    端口寄存器是分别针对4个独立Socket的寄存器,以Sn_xx的形式表示,其中n取值为0、1、2、3。端口模式寄存器Sn_MR定义了该端口工作在TCP模式或者是UDP模式,不同模式下端口寄存器的表现形式不一,本文对此不作过多的阐述。

2 系统方案设计
    本文核心处理器采用的是STM32F103VET6,它是一款基于Cortex—M3内核的ARM处理器芯片,内部集成了512K Flash程序存储空间和64K的SRAM数据存储空间。STM32F103VET6最高工作频率72 MHz,含有资源外设接口,包括2个12位数/模转换器、7个定时器、CAN总线接口、SPI通信接口、3路USART串行通信接口等资源。图3展示了基于STM32F103VET6的W5100通信系统结构图,包括电源电路、时钟电路、复位电路、
JTAG调试电路和W5100以太网通信电路。

d.jpg?imageView2/2/w/550

    2.1 硬件电路设计
    本系统中STM32F103VET6处理器采用SPI串行接口方式与W5100进行通信,硬件电路连接如图4所示。13F-60FGYDPNW2滤波器带有网络变压器的RJ45接口元件。W5100的通信、控制引脚分别与STM32F103-VET6相连接,其中INT引脚连接PC4(外部中断4),该引脚低电平有效。当W5100产生连接、断开、发送数据完成、接收到数据或者通信超时等情况时,该引脚将会产生一个从高电平到低电平的跳变,触发一次中断。W5100的RST_BG引脚需要通过一个12.3 kΩ的电阻接地,由于没有标称12.3 kΩ的电阻,因此采用12 kΩ电阻+300 Ω精密电阻的方式连接。

e.jpg?imageView2/2/w/550

    W5100工作频率较高,为了保证通信的稳定性、可靠性,在设计PCB电路板的时候有几点需要注意:
    ①RJ45接口元件与W5100之间的距离要足够的小;
    ②终端匹配模块要尽量地靠近网络变压器;
    ③晶振布局要远离网络变压器和TX、RX导线,避免对高速信号造成干扰;
    ④去耦电容距W5100的位置越近越好,导线相对越宽越好。


    2.2 软件程序设计
    W5100的程序设计包括初始化和Socket驱动两个部分,初始化过程主要对芯片内部的各寄存器编程来实现芯片的复位、收发缓冲器设置等底层工作,初始化过程涉及的寄存器包括:
    ①RMSR(接收缓冲区寄存器)和TMSR(发送缓冲区寄存器)设置为0xAA(默认为0x55),本系统中只用到了Socket0和Socket1两个端口,冈此将缓冲区设置为4 KB,增大发送和接收空间。
    ②RTR(重发时间寄存器)按照默认值设置,即200 ms(0x07D0)。通信过程中,当发出连接、断开等命令后,在200 ms内没有收到对方的响应时,将会触发重发机制。
    ③RCR(重发计数寄存器)设置为8次。
    ④IMR(中断屏蔽寄存器),通过向相应的中断屏蔽位写入1使能相应的中断源,指出了IMR的每一位对应的中断源,本系统中需要开启7、6、1、0即可。即设置IMR寄存器为0xC3,中断产生后,STM32F103VET6可以通过访问IR寄存器获得中断来源,从而进行相应的中断程序处理。中断屏蔽寄存器如下。

f.jpg?imageView2/2/w/550

    除了上面几个寄存器之外,还需要设置MAC地址、IP地址、网关地址等,根据实际应用向对应的控制位写入相应的地址即可,这里不再赘述。
    W5100可以工作在TCP和UDP两种通信模式下,在不同的通信模式下又分为客户端和服务器两种工作状态,TCP是面向连接的以太网通信,相比UDP可以提供更可靠的通信服务。本文通过W5100建立TCP的客户端工作模式,将采集到的数据通过以太网发送至数据中心的服务器。如图5所示,客户端首先向服务器发起请求连接,成功建立连接之后,当周期性数据采集任务结束后,将向服务器发送数据包;如果遇到网络阻塞,会产生通信超时或者没有响应等情况,将会终止一次通信连接,关闭Socket,然后重新发起新的连接请求,循环反复。

g.jpg?imageView2/2/w/550

    
    3 系统应用
    目前,通过本文开发的基于W5100的远程数据采集与传输系统已经成功应用在辽宁省建筑能耗监测平台、太原理工大学节约型校园监管平台、大连市公共机构能耗监管平台等多个能耗监测项目当中。其中,辽宁省项目覆盖范围最广,涉及到省内14个地级市共50栋建筑的能耗采集与传输工作。调试期间,因能耗采集周期和上传周期均一致,并且各客户端的时间信息通过服务器进行同步,导致所有的客户端均在同一个时刻向数据中心发起连接或者发送能耗信息数据,如图6所示(上传周期为5 min),第1分钟的C1~Cn表示各地的数据采集器在同一时刻向服务器发起连接请求,第5 min的C1~Cn表示各数据采集器在同一时刻向服务器发送能耗数据信息,从而造成服务器偶尔因连接负载过多造成采集软件死机等情况发生。

h.jpg?imageView2/2/w/550

    
    解决该问题的方法其实很简单,设置各客户端分时发送数据即可,但如果对不同的客户端下载不同版本的程序,从而达到分时的目的,实际操作过程中很不方便,而且造成程序版本不唯一,容易出现问题。经过进一步分析发现,各客户端的网络通信质量不一,与服务器成功建立连接的时间不同,通过下面的方法巧妙地将该问题解决,如图7所示。

i.jpg?imageView2/2/w/550

    
    通过在程序中加入下面两行代码:
    Write_W5100(W5100_S0_CR,S_CR_SEND KEEP);
    //监测网络状态
    SSR0_state=Read_W5100(W5100_S0_SSR);
    //读取当前网络状态
    对当前的网络进行监测,客户端与服务器成功建立连接之后,寄存器ssr0_state变为0x17,记录从发起连接到建立连接之间的时间差△T,发送数据时顺延△T时刻再发送,从而零成本解决了负载过大的难题。辽宁省项目自2010年7月开始运行,至今已经连续运行2年多时间,结果表明该系统能够准确地将数据上传,工作稳定可靠。

     结语
    本文以STM32F103VET6为核心处理器,通过单片网络控制芯片W5100建立了以太网远程数据传输系统,该系统具有高集成度、低成本、开发周期短等优势。针对建筑能耗监测系统多个客户端同时发起连接和上传数据造成的服务器压力过大问题,文中通过监测客户端与服务器之间的连接时间点,在发送数据时顺延时间差△T,巧妙地解决了该问题。实际项目运行结果表明,该系统运行可靠稳定,应用前景良好。


推荐阅读

史海拾趣

EPSON公司的发展小趣事

EPSON一直注重环保和可持续发展。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。同时,EPSON还致力于研发环保型电子产品,如节能型打印机、环保型投影机等,以减少电子产品对环境的影响。此外,EPSON还积极参与各种环保公益活动,推动电子行业的绿色发展。

Dionics Inc公司的发展小趣事

为了进一步拓展国际市场,Dionics Inc开始寻求与国际知名企业的战略合作。经过多次洽谈,公司最终与一家国际知名电子企业达成战略合作协议,共同开发新一代智能穿戴设备。通过这一合作,Dionics Inc不仅获得了宝贵的技术支持和市场资源,还成功将其产品推向了国际市场。

DURAKOOL公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,DURAKOOL公司始终保持着对创新的追求。公司不断投入研发资源,推动产品升级和技术进步。同时,公司也关注行业趋势和未来发展,积极探索新的业务领域和市场机会。展望未来,DURAKOOL将继续致力于成为全球电子行业的领先者。

请注意,以上故事均为虚构,旨在提供与DURAKOOL公司发展相关的故事概要。如需了解更多关于DURAKOOL公司的详细信息,建议查阅相关报道或公司官方资料。

Facon公司的发展小趣事

在2010年代初,随着科技的飞速发展,电子行业正迎来新一轮的创新浪潮。这时,一群充满激情和梦想的工程师在硅谷创立了Facon公司,他们怀揣着改变世界的愿景,立志在电子行业中留下自己的印记。初始阶段,Facon主要专注于研发高性能的半导体芯片,为智能手机、平板电脑等电子产品提供强大的计算能力。通过不懈努力和持续创新,Facon逐渐在市场中树立了良好的口碑。

BLT Circuit Services公司的发展小趣事

BLT Circuit Services公司深知人才是企业发展的根本。因此,公司注重人才培养和引进,建立了一套完善的人才培训体系。公司不仅为员工提供系统的职业技能培训,还鼓励员工参与各种行业交流活动,提升个人综合素质。这些举措不仅提高了员工的技能水平,也为公司的长期发展提供了有力的人才保障。

普芯达电子(Chipswinner)公司的发展小趣事

企业文化和团队建设是企业持续发展的基石。普芯达电子注重企业文化建设和团队建设,倡导“诚信、创新、协作、共赢”的价值观,营造了一个积极向上、团结和谐的工作氛围。公司注重员工的培训和发展,为员工提供了广阔的发展空间和良好的福利待遇。同时,普芯达电子还建立了完善的激励机制和绩效考核体系,激发了员工的工作积极性和创造力。这些措施的实施为公司的持续发展提供了有力的保障。

请注意,以上仅为故事框架的概述,你可以根据这些框架进一步扩展和详细化每个故事的内容。

问答坊 | AI 解惑

2007年嵌入式系统设计师考试试题下载

2007年下半年的嵌入式系统设计师考试大纲及试题 …

查看全部问答>

各位高手,请教一哈,有一个很急很急的问题

      谁能告诉我 如何设计一个 由四个寄存器组成的队列?               我一点思路都没,高手能告诉我一下设计的 方法 和要用到的芯片就行了(最好给点详细的这几步骤) ...…

查看全部问答>

C语言实现卡尔曼滤波的问题

现在要用C语言做一个用卡尔曼滤波求平均值的程序, 以前没有做过关于卡尔曼滤波的东西, 所以不知道如何下手.. 请各位达人帮忙指点一下,谢谢! 要求: 1.输入有5个参数(A,B,C都是整型数组,数组维数是可变的 取值范围是0~0xFFFFFFFF,D:A的异常值,E: ...…

查看全部问答>

供应光网络存储及光纤通道产品

深圳丰泽主营:Adaptec光纤卡、IBM光纤卡、HP光纤卡、Qlogic光纤卡、 Emulex光纤卡、SUN光纤卡、jni光纤卡、Agilent光纤卡等品牌SCSI磁盘阵列卡、 光纤通道HBA卡、SAS HBA控制卡,差分卡及SCSI硬盘等服务器配件;Brocade(博科) 光纤交换机及全新 ...…

查看全部问答>

几天了,还是没有一点头绪。。。

我们公司现在准备做轮船上的智能阀门遥控系统。就是通过控制电机来打开和关闭阀门。。  采用的体系是  通过工业pc或触摸屏连到PLC通过用网线(RJ45),plc上通过can总线连接无数个电机。。我们通过pc或触摸屏就可以控制每一台 ...…

查看全部问答>

问个STM32F103C8T6串口多机通讯的问题

采用多机通讯机制,主机(PC)先发寻址字节,再发固定长度的数据字节。 设计的时候发生失误,没有想到其地址只支持4位数据(16个地址),而实际需要128个节点。因此想从软件上想办法弥补,计划是用元件判断寻址地址的完整值。 所以想问一下 ...…

查看全部问答>

共基极放大倍数

看了晶体管电路设计里有这么一节   为什么共基极放大电路 这里直接是RC/RE呢   我翻查了大学时候的笔记和《电子设计从零开始》   里面都是Av= beta*RC//RL / rbe   感觉《晶体管电路设计》里 共射级 共集电极 共基 ...…

查看全部问答>

新手求 指点STM32F103 晶振

买了块开发板 调试了USART GPIO等驱动后。 发现8M的晶振坏了。然后换了一个11.2M的。 然后重新调试串口的时候看到输出的都是乱码。 我想请问下 需要更改哪些设置么…

查看全部问答>