STM32F4 以太网简介

STM32F407 芯片自带以太网模块,该模块包括带专用 DMA 控制器的 MAC 802.3(介质访
问控制)控制器,支持介质独立接口 (MII) 和简化介质独立接口 (RMII),并自带了一个用于
外部 PHY 通信的 SMI 接口, 通过一组配置寄存器,用户可以为 MAC 控制器和 DMA 控制器选
择所需模式和功能。

STM32F4 自带以太网模块特点包括:
 支持外部 PHY 接口,实现 10M/100Mbit/s 的数据传输速率
 通过符合 IEEE802.3 的 MII/RMII 接口与外部以太网 PHY 进行通信
 支持全双工和半双工操作
 可编程帧长度,支持高达 16KB 巨型帧
 可编程帧间隔(40~96 位时间,以 8 为步长)
 支持多种灵活的地址过滤模式
 通过 SMI(MDIO)接口配置和管理 PHY 设备
 支持以太网时间戳(参见 IEEE1588-2008),提供 64 位时间戳
 提供接收和发送两组 FIFO。
 支持 DMA

STM32F4 以太网功能框图如图

从上图可以看出, STM32F4 是必须外接 PHY 芯片,才可以完成以太网通信的,外部 PHY
芯片可以通过 MII/RMII 接口与 STM32F4 内部 MAC 连接,并且支持 SMI(MDIO&MDC)接
口配置外部以太网 PHY 芯片


SMI 接口,即站管理接口,该接口允许应用程序通过 2 条线:时钟(MDC)和数据线(MDIO)

访问任意 PHY 寄存器。该接口支持访问多达 32 个 PHY,应用程序可以从 32 个 PHY 中选择
一个 PHY,然后从任意 PHY 包含的 32 个寄存器中选择一个寄存器,发送控制数据或接收状态
信息。任意给定时间内只能对一个 PHY 中的一个寄存器进行寻址。


MII 接口,即介质独立接口,用于 MAC 层与 PHY 层进行数据传输。 STM32F407 通过 MII
与 PHY 层芯片的连接如图

MII_TX_CLK:连续时钟信号。该信号提供进行 TX 数据传输时的参考时序。标称频率为:速率为 10 Mbit/s 时为 2.5 MHz;速率为 100 Mbit/s 时为 25 MHz

MII_RX_CLK:连续时钟信号。该信号提供进行 RX 数据传输时的参考时序。标称频率为:速率为 10 Mbit/s 时为 2.5 MHz;速率为 100 Mbit/s 时为 25 MHz 
MII_TX_EN:发送使能信号
MII_TXD[3:0]:数据发送信号。该信号是 4 个一组的数据信号
MII_CRS:载波侦听信号
MII_COL:冲突检测信号
MII_RXD[3:0]:数据接收信号。该信号是 4 个一组的数据信号
MII_RX_DV:接收数据有效信号
MII_RX_ER:接收错误信号。该信号必须保持一个或多个周期(MII_RX_CLK),从而向 MAC子层指示在帧的某处检测到错误


RMII 接口,即精简介质独立接口,该接口降低了在 10/100 Mbit/s 下微控制器以太网外设与
外部 PHY 间的引脚数。根据 IEEE 802.3u 标准, MII 包括 16 个数据和控制信号的引脚。 RMII
规范将引脚数减少为 7 个。
RMII 接口是 MAC 和 PHY 之间的实例化对象。这有助于将 MAC 的 MII 转换为 RMII。
RMII 具有以下特性:
1,支持 10Mbit/s 和 100Mbit/s 的运行速率
2,参考时钟必须是 50 MHz
3,相同的参考时钟必须从外部提供给 MAC 和外部以太网 PHY
4,它提供了独立的 2 位宽(双位)的发送和接收数据路径
STM32F407 通过 RMII 接口与 PHY 层芯片的连接如图

从上图可以看出 RMII 相比 MII,引脚数量精简了不少。注意,图中的 REF_CLK 信号,是
RMII 和外部 PHY 共用的 50Mhz 参考时钟,必须由外部提供,比如有源晶振,或者 STM32F4
的 MCO 输出。不过有些 PHY 芯片可以自己产生 50Mhz 参考时钟,同时提供给 STM32F4,这
样也是可以的


我们采用 RMII 接口和外部 PHY 芯片连接,实现网络通信功能 ,探索者 STM32F4 开发板使用的是 LAN8720A 作为 PHY 芯片


LAN8720A 是低功耗的 10/100M 以太网 PHY 层芯片, I/O 引脚电压符合 IEEE802.3-2005 标
准,支持通过 RMII 接口与以太网 MAC 层通信,内置 10-BASE-T/100BASE-TX 全双工传输模
块,支持 10Mbps 和 100Mbps。
LAN8720A 可以通过自协商的方式与目的主机最佳的连接方式(速度和双工模式),支持 HP
Auto-MDIX 自动翻转功能,无需更换网线即可将连接更改为直连或交叉连接。 LAN8720A 的主
要特点如下:
 高性能的 10/100M 以太网传输模块
 支持 RMII 接口以减少引脚数
 支持全双工和半双工模式
 两个状态 LED 输出
 可以使用 25M 晶振以降低成本
 支持自协商模式
 支持 HP Auto-MDIX 自动翻转功能
 支持 SMI 串行管理接口
 支持 MAC 接口

LAN8720A 功能框图如图

LAN8720A 的引脚数是比较少的,因此,很多引脚具有多个功能。这里,我们介绍几个重
要的设置。

1, PHY 芯片地址设置
LAN8720A 可以通过 PHYAD0 引脚来配置,该引脚与 RXER 引脚复用,芯片内部自带下
拉电阻,当硬复位结束后, LAN8720A 会读取该引脚电平,作为器件的 SMI 地址,接下拉电阻
时(浮空也可以,因为芯片内部自带了下拉电阻),设置 SMI 地址为 0,当外接上拉电阻后,
可以设置为 1。本章我们采用的是该引脚浮空,即设置 LAN8720 地址为 0。

2, nINT/REFCLKO 引脚功能配置
nINT/REFCLKO 引脚可以用作中断输出,或者参考时钟输出。通过 LED2(nINTSEL)引
脚设置, LED2 引脚的值在芯片复位后,被 LAN8720A 读取,当该引脚接上拉电阻(或浮空,
内置上拉电阻),那么正常工作后, nINT/REFCLKO 引脚将作为中断输出引脚(选中 REF_CLK
IN 模式)。当该引脚接下拉电阻时,正常工作后, nINT/REFCLKO 引脚将作为参考时钟输出(选
中 REF_CLK OUT 模式)。
在 REF_CLK IN 模式,外部必须提供 50Mhz 参考时钟给 LAN8720A 的 XTAL1(CLKIN)
引脚。
在 REF_CLK OUT 模式, LAN8720A 可以外接 25Mhz 石英晶振,通过内部倍频到 50Mhz,
然后通过 REFCLKO 引脚,输出 50Mhz 参考时钟给 MAC 控制器。这种方式,可以降低 BOM
成本。这里我们设置 nINT/REFCLKO 引脚为参考时钟输出(REF_CLK OUT 模式),用于给
STM32F4 的 RMII 提供 50Mhz 参考时钟

3, 1.2V 内部稳压器配置
LAN8720A 需要 1.2V 电压给 VDDCR 供电,不过芯片内部集成了 1.2V 稳压器,可以通过
LED1(REGOFF)来配置是否使用内部稳压器,当不使用内部稳压器的时候,必须外部提供 1.2V
电压给 VDDCR 引脚。这里我们使用内部稳压器,所以我们在 LED1 接下拉电阻(浮空也行,
内置了下拉电阻),以控制开启内部 1.2V 稳压器。


我们来看下 LAN8720A 同我们探索者 STM32F4 开发板的连接关系

从上图可以看出, LAN8720A 总共通过 10 跟线同 STM32F4 连接,注意: MDIO 同串口 2的 TX 信号有共用,所以串口 2 和以太网功能不能同时使用,使用时需要注意这个问题

网络通信实验(1)STM32F4 以太网简介的更多相关文章

  1. HCIA-Datacom 3.1 实验一:以太网基础与VLAN配置实验

    实验介绍: 以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术.当主机数目较多时会导致 ...

  2. 网络通信实验(2)TCP/IP LWIP 简介

    TCP/IP 简介 TCP/IP 中文名为传输控制协议/因特网互联协议,又名网络通讯协议,是 Internet 最基本的协议. Internet 国际互联网络的基础,由网络层的 IP 协议和传输层的 ...

  3. HCIA-Datacom 3.3 实验三:以太网链路聚合实验

    实验介绍 随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求.在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够 ...

  4. 《FPGA全程进阶---实战演练》第四章之实验平台软硬件使用简介

    本章主要是讲解读者在进行FPGA逻辑设计之前的准备工作,需要下载Quartus II软件和 Modelsim 软件,一个是用来进行FPGA逻辑设计,一个是用来对逻辑进行理论分析与验证. 1.1 qua ...

  5. Android网络通信框架LiteHttp2.0 开篇简介和大纲目录

    本帖最后由 移动天宇 于 2015-10-26 10:42 编辑 LiteHttp2.0很多东东焕然一新,旧的能力也得到增强,没有使用的同学来了解一下吧. Android网络框架为什么可以选用lite ...

  6. 实验一linux 系统简介和实验二基本概念及操作

    作业 zy e

  7. ELK学习实验010:Logstash简介

    Logstash是具有实时流水线功能的开源数据收集引擎.Logstash可以动态统一来自不同来源的数据,并将数据规范化为您选择的目标.清除所有数据并使其民主化,以用于各种高级下游分析和可视化用例. 虽 ...

  8. 转载:10G以太网光口与Aurora接口回环实验

    10G以太网光口与高速串行接口的使用越来越普遍,本文拟通过一个简单的回环实验,来说明在常见的接口调试中需要注意的事项.各种Xilinx FPGA接口学习的秘诀:Example Design.欢迎探讨. ...

  9. VLAN实验2(配置Trunk接口)

    本实验基于<HCNA网络技术实验指南> 本实验使用eNSP软件 原理概述: 在以太网中,通过划分VLAN来隔离广播域和增强网络通信的安全性.以太网通常由 多台交换机组成,为了使VLAN的数 ...

随机推荐

  1. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  2. nmcli配置ipv6

    nmcli配置ipv6 作者:Eric 微信:loveoracle11g [root@racooler ~]# nmcli connection show eno16777736 | grep ipv ...

  3. windows下获取文件描述

    一 背景 前几天, 在公司写的获取文件描述的一段小程序出现了点小问题, 对于一般文件是正常的, 对于win10 C:\Program Files\WindowsApps目录下的通用程序,就是死活获取不 ...

  4. OpenCV中Mat的使用

    一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...

  5. java——什么是浅表副本

    ArrayList.clone(),hashtable.clone()方法返回此ArrayList的浅表副本(不复制这些元素本身),那么什么是浅表副本? 一个集合的浅度拷贝意味着只拷贝集合中的元素,不 ...

  6. Spring Boot+Spring Security:获取用户信息和session并发控制

    说明 (1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hiber ...

  7. Android 开发 图片网络缓存加载框架Fresco

    简介 Fresco是一个在Android应用程序中显示图像的强大系统. Fresco负责图像的加载和显示.它将从网络.本地存储或本地资源加载图像,图像加载完成前会显示一个占位图片.它有两个级别的缓存: ...

  8. [持续交付实践] Jenkins Pipeline 高可用设计方法

    前言 这篇写好一段时间了,一直也没发布上来,今天稍微整理下了交下作业,部分内容偷懒引用了一些别人的内容.使用Jenkins做持续集成/持续交付,当业务达到一定规模的时候,Jenkins本身就很容易成为 ...

  9. 常用LINUX命令汇总

    一.基本命令bash Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shellpwd 查看当前所在目录ls 查看目录内所有文件cd 进入目录cd .. 返回上一层p ...

  10. PHP语言入门的学习方法十要素

    对于PHP程序设计语言来说.每个人的学习方式不同,写这篇文章的目的是分享一下自己的学习过程,仅供参考,不要一味的用别人的学习方法,找对自己有用的学习方式.经常在某些论坛和QQ群里看到一些朋友会问“怎样 ...