当前位置:首页 > 电源 > 数字电源
[导读]摘要:论述了在STM32系列的MCU上移植TCP/IP协议栈LwIP,并利用新型以太网控制器ENC24J600实现网络数据传输功能。该系统主要完成的功能是接收上位机发送的数据,并将这些数据转换成通用串行接口输出。ENC424J600是Mi

摘要:论述了在STM32系列的MCU上移植TCP/IP协议栈LwIP,并利用新型以太网控制器ENC24J600实现网络数据传输功能。该系统主要完成的功能是接收上位机发送的数据,并将这些数据转换成通用串行接口输出。ENC424J600是Microchip新推出的一款以太网控制器,其速度优于ENC28J60,同时为用户提供两种接口模式。本文介绍了其基于SPI接口模式下的实现过程,详细描述了该网卡驱动的硬件电路和软件流程。
关键词:以太网控制器;STM32;LwIP串口输出

引言
    随着Internet的发展和应用,越来越多的设备需要接入网络以实现远程控制或资源共享。以太网接口布线方便,通信带宽较宽,可达100 Mb/s甚至1000Mb/s。嵌入式系统由于具有体积小、价格低、专用性能高的优势,被广泛应用于各种电子设备和工业测试设备中。随着嵌入式系统与网络的日益紧密结合,在嵌入式系统中引入TCP/IP协议栈已成为嵌入式系统领域的重要研究方向。
    本义在以太网接口实现基本数据传输的基础上将其转换成其他通用串行接口(如SPI、UART、CAN),更利于应用在广泛的工业控制领域中。目前市面上的以太网控制芯片大多功耗高、功能复杂,不适合用在中低端的嵌入式系统中。之前Microchip推出的芯片ENC28J60的网络接口速度只能达到10 Mbps,其SRAM buffer也不大容易造成接收溢出,而ENC424J600速度可达100 Mbps,功能将更加完善,并提供两种接口给嵌入式开发者选择,是一款很好的网络接口芯片。STM32F103RET6是一款ARM处理器,它的功耗低、价格低廉、功能强大、具备丰富的串行接口,具有512 KB的Flash,在一般的应用中可以不用外扩Flash,是中低端嵌入式开发系统的最佳选择之一。将两者结合不但能实现网络通信,而且可以灵活转换成其他串行接口,用途广泛。

1 ENC424J600简介
    ENC424J600是Microchip公司推出的单独可用的快速以太网控制器。其与MCU的连接方式可采用具有工业标准的串行总线SPI或灵活的并行接口。SPI接口数据速率可达14 Mb/s、并行接口速率可达140 Mb/s。ENC424J600满足10 basc-TX全双工、半双工模式、100base-TX全双工、半双工模式,4种模式均符合IEEE802.3协议。芯片内置PHY物理层及MAC媒体访问控制层。引擎具有RSA、DiffieHelman、AES、MD5、和SHA-1算法。芯片具有44引脚TQFP和QFN两种封装形式。该芯片另一个突出特点是具有24 KB的SRAM Buffer,基本不需要外接SRAM。芯片SRAM Buffer的分配如图1所示。


     SRAM Buffer被分为两个区域,一般将General Purpose Buffer设为发送区,RX FIFO Burfer设为接收区,通过指针ERXST区分两个区域,通常将接收区设置较大以防止接收帧溢出。
[!--empirenews.page--]
2 系统硬件电路设计
2.1 网络控制器外围硬件电路
    ENC424J600网络控制器外围硬件电路设计需要注意的几点有:ENC424J600的SPISEL引脚需要通过100kΩ电阻上拉至电源,这样系统上电时就能进入SPI模式,同时引出INT引脚作为接收中断使用;每个电源引脚与地之间都应连接一个电容,为更好地防止干扰在设计时加了两个电容,布线时使0.01μF电容更靠近电源引脚;RBIAS引脚需接一个12.4 kΩ的电阻到地;另外RD+、RD-差分信号处的接法与一般的网络控制器不同,它不是直接通过电阻接到电源上,需要特别注意。以太网接口则采用HR961160C,该插座集成以太网隔离变压器、LED灯于一体,同时是贴片式的,节约PCB制板空间。在PCB布线时需要注意的是RD+、RD-和TD+、TD-两对高频差分线的走线应对称并尽可能短。


    ENC424J600外围硬件电路及HANRUN以太网变压器插座外围电路图如图2、图3所示。[!--empirenews.page--]
2.2 系统硬件结构
    网络转串行通信接口的系统结构框图如图4所示。STM32F103RET6通过SPI1串行通信接口、一个GPIO引脚作为中断引脚与网络控制器相连,系统再引出SPI2、CAN总线通信接口的引脚。将UART1串行接口作为控制台供调试使用。STM32F103RET6具有串口ISP下载功能,将BOOT0接高电平,BOOT1接低电平即可进入ISP下载模式。该系统可以通过跳线选择ISP下载功能。



3 系统软件设计
    软件的设计主要是移植LwIP协议栈,添加各串行通信接口的初始化程序,编写网络控制器底层驱动,编写上层应用程序。
3.1 网络控制器底层驱动实现过程
    网络控制器底层驱动初始化程序放在low_level_init函数中,整个过程为:初始化SPI1接口,对网络控制器进行系统复位;设置发送、接收缓冲区指针;初始化PHY层为100 Mbase全双工模式,使能接收中断。网络控制器底层发送程序放在low_level_output函数中,整个过程为:将以太网包拷贝至SRAM buffer,设置发送起始地址;发送帧长,置高TXRTS位使能发送,直到TXRTS被硬件清零才能进行第二次发送。网络控制器接收程序放在low_level_input函数中,当接收中断发生时系统通过上层应用程序调用low_level_input函数。该函数主要内容为:读取PKTIF位以确定是否有以太网帧等待接收;设置接收指针地址,读取该帧的前8个字节,其中前两个字节为下一帧接收地址,第3、4个字节为这一帧的长度,申请当前帧长的缓冲区,将接收数据读入缓冲区,置高PKTDEC为下一帧接收做准备。
3.2 LwIP协议栈分析
    LwIP协议栈可以在无操作系统的软件平台下移植,LwIP实现的重点是在保持TCP/IP协议主要功能的基础上减少对RAM的占用,因此它也适合在中低端的嵌入式系统中应用。LwIP主要是完成IP层和TCP/UDP数据传输层的任务,它与底层网络控制器的接口主要体现在etherneti f.c函数中。在以太网帧的接收过程中以太网数据包通过底层接收程序传至IP层,IP层判断是TCP数据包还是UDP数据包,送至相应数据传输层处理,数据传输层再将收到的数据传至用户应用程序。在以太网帧的发送过程中,用户程序选择是通过UDP还是TCP发送数据包,将数据包送至相应的传输层,再传至IP层,IP层再将数据传至底层,发送程序将数据发送出去。
3.3 系统软件流程
    系统软件流程如图5所示。


    软件主要完成初始化、等待接收以太网帧、通过串行接口将数据帧发送出去的任务。初始化包括创建netif网络接口、SPI1接口、网络控制器的PHY层、MAC层,使能接收中断、初始化TCP服务器端。初始化完成后,等待上位机软件TCP的客户端与底层软件的TCP服务器端建立连接。连接建立后整个系统就循环等待接收TCP客户端发送的以太网数据帧,当有以太网数据帧到达时,产生接收中断,接收到的数据帧从PHY层传到MAC层,再传到IP层,最终传到TCP层进行数据接收处理。应用程序收到处理过的以太网数据帧,处理相应的数据,根据数据传递的信息通过SPI2或CAN总线串行通信接口将信息发送出去,以实现相应的控制功能。[!--empirenews.page--]
3.4 TCP/UDP上位机与系统通信
    TCP/UDP上位机采用周立功公司的UDP/TCP调试工具,上位机作为TCP客户端与系统服务器端建立连接,系统循环等待接收以太网数据包,收到数据包后通过TCP协议传输出去。在程序中设定系统服务器的IP为192.168.1.99,子网掩码为255.255.255.0,默认网关为192.168.1.254,TCP端口为3838,上位机TCP发送接收数据包如图6所示。



结语
    文中介绍了利用ENC424J600网络控制器和LwIP协议栈实现以太网通信的过程,该系统不但体积小巧而且速度快、稳定可靠,具有良好的应用前景。
    此系统目前已应用于网络转SPI通信来控制继电器板卡的测试设备中。该继电器测试设备称为MATRIX-RELAY(即矩阵继电器),每块继电器板卡上有46行×8列个继电器,共有5块继电器板卡,即46×8×5个继电器,通过打通该设备上的某一行或多行上的某两点来对待测产品进行相应的测试。测试员通过电脑上的上位机指定需要打开的继电器序号,向该系统发一帧网络数据,这帧数据包括需要打开的继电器属于哪块板卡、哪一行、哪一列等信息。通过该系统的处理,将数据转为SPI串行数据,再通过一系列移位寄存器的移位来控制相应继电器的打开从而达到测试产品某两端的目的。该测试设备在实际的运行中非常稳定可靠。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭