摘要:电力抄表系统常通过网络采集和传输电网中的谐波等信息。本文提出了一种适合电力系统的网络设计方案。在STM32F207和DM9161A为核心的硬件平台上,完成了LwIP协议栈的移植,实现了远程终端和上位机通信。使电力系统更具实时性与交互性,并保证了通信的可靠性。
关键词:电力系统;LwIP协议;以太网

引言
    随着经济的迅猛发展,用电需求量及电力负荷急剧增大,谐波作为目前电网中影响最为重要的一项指标,对电力系统的影响越来越产重。通过网络传输采集和分析谐波数据,以实现对谐波的有效监测,便于更有效地控制谐波对电子系统的危害。
    本文给出了基于STM32F207及DM9161A的以太网具体实现方案,为电力系统设备提供便捷高效的网络实现方法。

1 硬件的实现
    
基于STM32F207的以太网接口实质是内部的MAC单元控制PHY的过程,两者通过MII/RMII接口传送数据。
    MAC(Media Access Control)即媒体访问控制子层协议。该协议位于OSI七层协议中数据链路层的下半部分,主要负责控制与连接物理层的物理介质。
    PHY(Physical Layer)是物理接口收发器,它实现物理层的数据编码与解码,直接提供可使用的数据流到MAC层。
    MII(Media Independent Interface,媒体独立接口)是指在不对MAC硬件重新设计或替换的情况下,任何类型的PHY设备都可以正常工作;RMII(Reduced Media Independant Interface,简化媒体独立接口),是标准的以太网PHY接口之一。
    MII数据接口总共需要16个信号,由于其信号线较多,在实际中应用较繁琐。而RMII只需要7根信号线,大大减少了实际的物理连线,有效地降低了硬件的复杂度及成本。因此,此次实现采用RMII物理层接口。
    意法半导体公司的STM32F207系列处理器自带IEEE802.3的MAC,只需增加PHY物理层芯片就可以连接到TCP/IP网络,此次实现是基于STM32F207ZGT6处理器。
    STM32F207以太网接口的特性如下:
    ◆支持10 Mb/s和100 Mb/s速率;
    ◆专用的DMA控制器能够高速地传输数据;
    ◆支持VLAN模式;
    ◆半双工/双工模式;
    ◆支持MAC控制层;
    ◆内置32位CRC校验。
    STM32F207的以太网连接方式有MII和RMII两种接口,以下以RMII接口方式概述DM9161A与STM32F207处理器的硬件连接。

STM32F207提供标准的RMII硬件接口,只需要按照数据手册的标识进行对应连接即可,此次实现的连接方式如表1所列。

DM9161A的实现电路如图1所示。DM9161A的RMII_REF_CLK信号由STM32F207的内部MCO提供,在简化了硬件设计的同时也可以减少硬件成本。HR911105A是电路的网络接口。


    网络控制部分的电路板如图2所示。

2 软件的实现
    
此部分的主要工作是在硬件平台的基础上实现TCP/IP协议栈,由于TCP/IP协议栈较复杂,功能实现比较困难,一般选择成熟的TCP/  IP协议栈进行移植,此次选择开源并且较成熟的LwIP以太网协议栈。
    LwIP(Light Weight IP)是瑞士计算机科学院开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈,可移植性强,对资源要求较低,在实现TCP/IP协议主要功能的基础上减少对RAM的占用。一般它只需要几百KB的RAM和40 KB左右的ROM就可以运行,这使得LwIP协议栈适合在低端的嵌入式系统中使用。
    移植工作在ST公司提供的STM32F207以太网接口驱动的基础上进行,针对DM9161A芯片更改部分底层驱动代码,包括时钟配置、端口配置及PHY地址配置等,移植工作一般需要几个小时即可完成。
    LwIP提供了在TCP/IP协议栈中比较常用的TCP及UDP两种功能。TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(transp ort layer)通信协议;UDP是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。TCP一般用于对数据可靠性要求较高,但是数据传输速度较低的情况。而UDP的传输速度较快,但是可靠性较低,需要应用层保证数据到达的有效性,而在此应用中需要传输的数据量较小,但是对可靠性要求较高,因此选择TCP通信模式。
    LwIP提供了两套API:底层的基于回调(callback)的raw API和高层的顺序模型的API(类似BSD Socket)。
    顺序模型的API为普通的顺序程序提供使用协议栈的API,和BSD风格的API很相似,也是基于阻塞的open-read-write-close模式。鉴于TCP/IP协议栈本身就基于时间,所以TCP/IP代码和应用程序的代码必须在不同的线程中,因此此种模式需要提供操作系统的支持。
    而raw API可以让应用程序和TCP/IP协议栈代码结合得更紧密。程序的执行也是基于事件的,使用回调函数的机制。这种方式TCP/IP代码和应用代码运行在同一个线程中,因此这种模式可以在没有操作系统支持的情况下使用。
    实际上,顺序模型的API也是基于raw API实现的。此次实现使用的是raw API,降低对硬件及软件资源的需求,而raw API是基于事件驱动的,在数据的响应速度上也存在一定的优势。
    raw API的操作方法与顺序模型基本类似,只是程序的运行模式不一样,需要采用回调式的编程思想。基本动作包括建立连接、发送数据、接收数据、关闭连接4类,每一类根据不同的需求提供了不同的接口函数。

结语
    
经过测试,在STM32F207处理器及DM9161A硬件平台上移植LwIP协议栈可以实现TCP、UDP等功能并稳定地运行,为后续基于此平台开发电力系统的通信网络提供良好的基础。

转自http://www.21ic.com/app/power/201301/156267_3.htm

STM32F207和DM9161A的以太网实现方案的更多相关文章

  1. 新华龙电子推出最新网络开发板(W5100&W5500方案)

    2014/12/16 | Filed under: TCP/IP芯片 and tagged with: C8051, W5100, W5500, 新华龙电子, 网络开发板 42 Views 深圳新华龙 ...

  2. 车载以太网第二弹|测试之实锤 -DoIP测试开发实践

    前言 车载以太网测试之实锤系列,之前我们已经从环境设备组成.被测对象组成再到测试过程和测试结果分析,分享了完整的PMA测试 .IOP测试 .TC8中的TCP/IP协议一致性测试 .也分享了1000BA ...

  3. Arduino Due, Maple and Teensy3.0 的 W5200性能测试

    开源平台中以太网连接方案里W5100是众所周知的,W5200正在此领域越来越受欢迎.这个测试结果是在Arduino Due(Atmel CortexM3-84Mhz), Maple(ST Cortex ...

  4. W7500P硬件TCP/IP+硬件物理层PHY+Cortex-M0处理器(48MHZ)

    W7500P 硬件TCP/IP+硬件物理层PHY+Cortex-M0处理器(48MHZ) 硬件TCP/IP+硬件物理层PHY+Cortex-M0处理器(48MHZ) 如果您发现商品信息不准确,欢迎纠错 ...

  5. 关于CLOS架构的举例 网络级 设备级 FATTREE网络 网络级CLOS 以及CLOS涉及的调度算法RR

    1.概述 CLOS来自于传统电路交换概念,这个概念年代太久远,在当前数据通信网络中,内涵有所变化.本文主要谈的是实际上赋予的与原来略微有所差异的内涵. CLOS架构本身概念比较宽泛,有设备级的CLOS ...

  6. IEEE1588精密网络同步协议(PTP)

    1  引言 以太网技术由于其开放性好.价格低廉和使用方便等特点,已经广泛应用于电信级别的网络中,以太网的数据传输速度也从早期的10M提高到100M,GE,10GE.40GE,100GE正式产品也于20 ...

  7. MQTT 协议学习:008-在STM32上移植MQTT

    前言 通过前面了解MQTT有关概念.分析了有关的报文,我们对于这个协议也有了更深的认识.但纸上谈来终觉浅,绝知此事要躬行. 本文参考:<STM32+W5500+MQTT+Android实现远程数 ...

  8. 如何做好智能家居工业物联网串口转WiFi/4G/以太网无线AP方案的物联网WiFi模块选型

    2020年一场突如其来的灾难袭来,各大经济市场在不同程度被按下了"暂停键".物联网控制作为新兴行业优势凸显出来,其无接触式的交互方式,远程控制,智能控制车间,给人民带来安全.智能的 ...

  9. 以太网EMC(浪涌)中心抽头方案(节约空间)

随机推荐

  1. web一周

      学习web有一周了,老师进度有点小快,但是我还是感觉挺不错的.   对于一开始什么都不认识到能看懂是什么意思,并且可以写一些内容,我感觉还是比较欣慰,老师还是比较负责的,我每次都去找更远的代码学习 ...

  2. 如何在mac本上安装android sdk

    众所周知的原因,google的很多网站在国内无法访问,苦逼了一堆天朝程序员,下是在mac本上折腾android 开发环境的过程: 一.先下载android sdk for mac 给二个靠谱的网址: ...

  3. 使用mysqldump进行mysql数据库备份还原

    mysqldump是mysql自带的备份还原工具,默认在安装目录的bin下 可通过cmd命令行启动,然后运行: 还原一个数据库: mysql -h 主机 -u 用户名 -p密码 数据库名 < 指 ...

  4. 安装Ubuntu时的硬盘分区方案

    如果你准备在硬盘里只安装Ubuntu一个操作系统的话,建议你采用一个“/”.一个“swap”和一个“/home”的三分区方案:/ :10GB-15GB.swap:物理内存小于或等于 512MB,建议分 ...

  5. css3实践之摩天轮式图片轮播+3D正方体+3D标签云(perspective、transform-style、perspective-origin)

    本文主要通过摩天轮式图片轮播的例子来讲解与css3 3D有关的一些属性. demo预览: 摩天轮式图片轮播(貌似没兼容360 最好用chrome) 3D正方体(chrome only) 3D标签云(c ...

  6. 设置svg图片大小

    background-image: url(/resources/img/liveSupport/tx_1.svg); background-size: 16px 16px; width: 16px; ...

  7. HoloLens开发手记 - Unity之Recommended settings 推荐设置

    Unity提供了大量的设置选项来满足全平台的配置,对于HoloLens,Unity可以通过切换一些特定的设置来启用HoloLens特定的行为. Holographic splash screen 闪屏 ...

  8. web性能优化——浏览器相关

    简介 优化是一个持续的过程.所以尽可能的不要有人为的参与.所以能自动化的或者能从架构.框架级别解决的就最更高级别解决. 这样即能实现面对开发人员是透明的.不响应,又能确保所有资源都是被优化过的. 场景 ...

  9. AngularJS 日期转换字符串

    日期转换成字符串的办法有很多种,其中最简单的方法是 使用AngularJS的filter来实现. $filter('date')(date, 'yyyyMM'): $filter('date')(da ...

  10. 如何升级Ceph版本及注意事项

    升级软件版本在日常运维中是一个常见操作. 本文分享一下Ceph版本升级的一些经验. 一般升级流程和注意如下: 1.  关注社区Release notes 和 ceph-user邮件订阅列表,获取社区发 ...