现在电子技术发展很迅速,互联网发展也很迅猛,就日常的生活中我们能接触到的很多产品都不再是以前那些简单的单体产品,很多都具备接入网络的功能了。
从事嵌入式开发的朋友应该都有经历过某些产品是需要接入网络的,尤其是搞物联网开发的,网络开发是必不可少的。
现在不少的产品在开发时都要求单片机(MCU)能接入以太网,从而实现网络通讯的功能。比如工业控制、物联网网关、远程监控、嵌入式服务器等等,很多产品的应用场景都有网络的身影。
本文就个人的经验以及结合不同单片机硬件资源、性能、应用场景等因素,简单分享单片机接入以太网的一些方案,供有需要的朋友做个参考。
一、外置以太网方案 — 适用于单片机无内置MAC
有些单片机本身并无内置MAC,如STM32F1、51单片机等,这类单片机想要实现接入以太网就要考虑外置的以太网模组。实现上一般都是用SPI/UART接口与外置模组通信,从而实现接入网络的功能。
这种方案常见于一些老项目改造,可能起初并不需要网络功能,后面因为新需求需要增加额外的网络功能。
常用的外置以太网通讯模块有:
(1) ENC28J60(Microchip)
ENC28J60 是微芯科技 (Microchip Technology Inc)生产的一款独立以太网控制器芯片。
通过串行外设接口(SPI)与主控制器(如微处理器或微控制器)连接,实现 IEEE 802.3 兼容的MAC层和PHY层功能,使得任何具备 SPI 接口的单片机能够接入以太网。
ENC28J60 的一些关键参数:
1)封装小:ENC28J60 体积比较小巧,适合在空间有限的嵌入式系统中使用。
2)内置MAC和PHY:减少了对外部组件的需求,可以简化硬件设计。
3)支持10Base-T PHY:最大提供 10Mbps 的数据传输速率。
4)独立的包缓冲区:拥有8KB双端口RAM作为数据包缓冲区,用于接收和发送数据包。
5)低功耗:适用于电池供电的应用。
(2) W5500(WIZnet)
W5500 是由 WIZnet 推出的一款 TCP/IP 协议栈以太网控制器,专为嵌入式系统设计,支持包括TCP、UDP、IPv4、ICMP、ARP、IGMP和PPPoE在内的多种网络协议。
开发生态上,WIZnet 提供许多丰富的文档、参考设计以及SDK。此外,开源社区也为W5500提供了多种库和支持,有很多开发者也分享很多的使用案例和经验。
W5500的一些优势:
1)硬件TCP/IP协议栈:W5500内置了完整的硬件TCP/IP协议栈,能够独立处理复杂的网络协议,减轻主控芯片的负担。
2)SPI接口:采用标准的SPI接口(支持模式0和3),可以方便地与各种微控制器或处理器连接。
3)8个独立的socket:允许同时建立最多8个独立的TCP或UDP连接,适合需要多连接的应用场景。
4)10/100Mbps以太网MAC/PHY:支持10Base-T和100Base-TX标准,兼容IEEE 802.3。
5)静态IP地址分配:支持静态或动态(DHCP)IP地址配置。
6)支持安全协议:不直接支持HTTPS或TLS等高级安全协议,但可以通过软件实现更复杂的安全功能。
7)低功耗和小封装:适用于对功耗和空间有要求的嵌入式应用。
二、外置PHY方案 — 适用于单片机有内置 MAC 但无 PHY
对于自身带 MAC 控制器的单片机(如STM32F4/F7/H7、NXP Kinetis等),实现网络通信需要外部电路增加 PHY 芯片用于信号转换,并且移植 TCP/IP 协议栈便可以实现通讯。
这种方式需要在单片机中自行移植TCP/IP协议栈,通过结合 TCP/IP协议栈 + MAC内核 + PHY芯片构建网络通信的骨架。
常见的TCP/IP协议栈:
常用的 PHY 芯片有:
这种方案下实现网络通信的硬件组成示意如下:
三、使用集成以太网的MCU
有些MCU比较强劲,它自身就集成了MAC + PHY 或者本身就具备无线功能,可以实现网络通信,无需增加太多的硬件设计,可以极大简化电路设计。适用于高性能或单芯片解决方案。
常见的实现方案有两种:无线和有线。
(1) 无线方案:ESP32/ESP8266等(Wi-Fi + 以太网)
这种方式一般是使用无线模组或者本身就具备无线通信的芯片,使用上只要配合相应的软件TCP/IP协议栈即可实现网络功能。
比如市面上常见的ESP8266/ESP32,不仅功能强大,价格还不贵,使用的也很多,资料也好找。
在项目设计中,如果功能不是很复杂,要求不是很高的情况下,可以用这类模组直接作为控制单元,直接实现产品功能,既可以实现一些控制逻辑也有网络通信功能。一般常见一些支持无线联网的终端设备中。
(2) 无线 + MCU方案:ESP32/ESP8266等 + MCU(Wi-Fi + MCU)
这种方式一般是使用无线模组 +MCU组合方式,通信上两者之间可能使用SPI、IIC、UART等进行交换数据。
在产品中,MCU一般用于实现产品逻辑,无线模组实现网络接入功能,从而为产品提供无线上网的功能。
只是这样的方式也是有缺点的,受限与无线通信距离的影响,通信范围会比较小,网络通信的稳定性依赖于无线模组。
这种方案的数据交互速度受限与通信方式,即使无线能支持较高的速率,也要考虑MCU与模组之间互相通信所支持的最高速度。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43866583/article/details/148689882
|