STM32F4_网络通信网口
STM32F4_网络通信(网口)
前言
STM32F4开发板上自带了网口。可以通过 开发板自带的网口和LWIP实现 :TCP服务器、TCP客服端、UDP以及WEB服务器等四个功能。
1. STM32 以太网简介
STM32F4 芯片自带以太网模块,该模块包括带有专用 DMA 控制器的 MAC 802.3(介质访问控制)控制器,支持介质独立接口(MII)和简化介质独立接口(RMII),并自带了一个用于外部PHY通信的SMI接口,通过一组配置寄存器,用户可以为 MAC 控制器和 DMA 控制器选择所需的模式和功能。
STM32F4必须外接PHY芯片,才可以完成以太网通信,外部PHY芯片可以通过 MII/RMII 接口与STM32F4 内部MAC连接,并且支持 SMI (MDIO&MDC)接口配置外部以太网PHY芯片。
SMI 接口:
SMI 接口,即站管理接口 ,该接口允许应用程序通过 2条线 : 时钟(MDC)和数据线(MDIO)访问任意 PHY寄存器 ,访问任意PHY寄存器。该接口支持访问多达32个PHY,应用程序可以从32个PHY中选择一个PHY,然后从任意PHY包含的32个寄存器中选择一个寄存器, 发送控制数据和接收状态信息 。任意给定时间内只能对一个PHY中的一个寄存器进行寻址。
MII 接口,即介质独立接口 ,用于 MAC层 与 PHY层 进行数据传输。
MII_TX_CLK:连续时钟信号 。该信号提供进行TX 数据传输时的参考时序。标称频率为:速率为 10 Mbit/s 时为2.5 Mhz;速率为 100 Mbit/s 时为25 Mhz。
MII_RX_CLK:连续时钟信号 。该信号提供进行RX 数据传输时的参考时序。
MII_TX_EN :发送使能信号。
MII_TXD[3:0] :数据发送信号。该信号是4个一组的数据信号。
MII_CRS :载波侦听信号。
MII_COL :冲突检测信号。
MII_RXD[3:0] :数据接收信号。
MII_RX_DV :接收数据有效信号。
MII_RX_ER :接收错误信号
RMII 接口:
RMII 接口,即精简介质独立接口 ,该接口降低了在10/100 Mbits/s 下微控制器以太网外设与外部PHY 间的引脚数。根据 IEEE 802.3u 标准,MII 包括16 个数据和控制信号的引脚。RMII 规范将引脚数减少为7个。
什么是PHY?
物理层芯片称为PHY、数据链路层芯片称为MAC 。 PHY的作用 就是 将差分信号转换为数字信号 (PHY数据是穿过网络接口的 差分信号 )。
LAN8720A 是低功耗的 10/100M以太网PHY层芯片 ,I/O 引脚电压符合 IEEE802.3-2005 标准,支持通过RMII 接口与以太网MAC 层通信。
2. TCP/IP LWIP简介
2.1 TCP/IP简介
TCP/IP 中文名为传输控制协议/因特网互联协议 ,又称为 网络通讯协议 ,是Internet最基本的协议,也是Internet国际互联网络的基础, 由网络层的IP协议和传输层的TCP协议组成 。TCP/IP定义了电子设备如何连入因特网,以及数据如何在他们之间传输的标准。
该协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求 。简单来说就是,TCP 负责发展传输的问题,一旦有问题就发出信号,要求重新传输,直到所有数据都安全正确的传输到目的地。IP是给因特网的每一台联网设备规定一个地址。
TCP/IP 协议不是TCP和IP这两个的协议的合称,而是指因特网整个 TCP/IP 协议族 。从协议分层模型方面来讲, TCP/IP 由四个层次组成:网络接口层、网络层、传输层、应用层 。
OSI模型将 TCP/IP 分为七层 : 物理层、数据链路层(网络接口层)、网络层(网络层)、传输层(传输层)、会话层、表示层和应用层(应用层) 。
在本节中: PHY层芯片LAN8720A相当于物理层,STM32F407自带的MAC层相当于数据链路层,LWIP提供的就是网络层、传输层的功能,应用层是需要用户自己根据自己想要的功能去实现的。
2.2 LWIP简介
LWIP 是瑞典计算机科学院开发的一个小型开源的 TCP/IP 协议栈 ,是TCP/IP的一种实现方式 。LWIP是轻量级IP协议,有无操作系统的支持都可以运行,LWIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM的占用,它只需十几 KB 的 RAM 和 40K左右的ROM就可以运行,这使 LWIP 协议栈适合在低端的嵌入式系统中使用。
LWIP 的主要特性如下:
- ARP协议,以太网地址解析协议;
- IP协议,包括 IPv4 和 IPv6 ,支持 IP 分片与重装,支持多网络接口下数据转发;
- ICMP 协议,用于网络调试与维护;
- IGMP 协议,用于网络组管理,可以实现多播数据的接收;
- UDP 协议,用户数据报协议;
- TCP 协议,支持 TCP 拥塞控制,RTT 估计,快速恢复与重传等;
- 提供三种用户编程接口方式:raw/callback API、sequential API、BSD-style socket API;
- DNS,域名解析;
- SNMP,简单网络管理协议;
- DHCP,动态主机配置协议;
- AUTOIP,IP地址自动配置;
- PPP,点对点协议,支持PPPoE