微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于BF537的双冗余以太网的设计与实现

基于BF537的双冗余以太网的设计与实现

时间:11-28 来源:互联网 点击:
3.2 程序设计

可以通过操作BF537的寄存器EMAC_STAADD完成其对LAN8187寄存器的读写。

对LAN8187寄存器读写的函数定义为:

u16 RdPHYReg(u16 PHYAddr,u16 RegAddr);

void WrPHYReg(u16 PHYAddr,u16 RegAddr,u32 Data);

其中PHYAddr为芯片的物理地址,RegAddr为寄存器地址。

对Basic Status Register的监测采用轮询的机制,即设定一个信号量Link_status,其周期为2ms,因此每隔2 ms,Ether_moniter线程被触发一次。在Ether_moniter中通过调用RdPHYReg()函数,读取Basic Status Register的值,并判断Link位。Ether-moniter线程流程图如图4所示。



对于设计方案1来讲,当检测到需要进行网络切换时,需要停用当前网卡初始化备用网络LAN91C111并设定相同的lP地址以及MAC地址。对于方案2,则只需要通知CPLD将通道切换至备用的LAN8187接口。

4 冗余切换测试

用Visual C++6.O开发简单的上位机测试程序,每隔1 ms发送一个UDP数据报,并给每个数据报编写不同的序号。在BF537中编写程序不断接收上位机发来的数据报。然后制造网络通信故障,本文构建的冗余网络将会自动切换到备用通道继续接收上位机的数据报。最后通过检测接收到数据报的序号来确定冗余切换所消耗的时间。分别对两种方案所构建的冗余网络的切换进行测试,结果如表2所示。



从实验结果可以看出方案2具有快速切换的优点,丢包率低;方案1平均丢包数远大于方案2,并且切换时间长。

5 结语

提出了两种基于BF537构建双冗余以太网的方案,分别论述了其原理、器件选择、连接方法,并做出软件设计。最后经过测试,方案2的切换效果和时间非常理想,最终在实际项目中得到了应用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top