基于STM32F407MAC与DP83848实现以太网通讯一(STM32以太网(ETH)外设)
STM32F4xx 可以通过以太网按照 IEEE 802.3-2002 标准发送和接收数据。支持与外部物理层 (PHY) 相连的两个工业标准接口:默认情况下使用的介质独立接口 (MII)(在 IEEE 802.3 规范中定义)和简化介质独立接口 (RMII)。
具体的以太网(ETM)特性参考:STM32F4xx中文参考手册
这里将重要的地方进行说明
一、STM32F4xx以太网(ETH)框图

以太网外设包括带专用 DMA 控制器的 MAC 802.3(介质访问控制)。默认使用MII接口,可通过配置寄存器(SYSCFG_PMC)切换位RMII接口,后面的DP83848使用的就是RMII接口。
DMA控制器通过AHB主接口用于控制数据传输,DMA从接口用于访问CSR(Control and Status Registers)
二、MII/RMII接口
2.1.MII/RMII接口
MII/RMII接口主要用作以太网数据传输


- TX CLK:数据发送参考时钟.10Mbis / s时为2.5 mhz, 100 mbit / s时为25兆赫。(MII)
- RX_CLK:数据接收参考时钟。10Mbis/s时为2.5MHz, 100Mbit/s时为25MHz。(MII)
- TX_EN:数据发送使能。数据发送过程保持有效。
- TXD[3:0]/[1:0]:数据发送信号线, RMII为TXD[3:0]4位, RMII为TXD[1:0]2位。
- CRS:载波侦听信号,PHY芯片驱动,发送或接收介质处于非空闲状态时使能。全双工时该信号线无效。(MII)
- COL:冲突检测信号,PHY芯片驱动,检测到介质上存在冲突,使能该信号。全双工时该信号线无效。(MII)
- RXD[3:0]/ [1:0]:数据接收信号线,PHY芯片同步驱动, RMII为TXD[3:0]4位, RMII为TXD[1:0]2位, MII模式时RX_DV禁止, RX_ER使能时RX_D[3:0]用来传输特定信息(参考STM32F4xx中文参考手册-表164 RX接口信号编码)。
- RX_DV:接收数据有效信号,PHY芯片驱动。(MII)
- CRS_DV: CRS与RX_DV功能的整合信号线,PHY芯片驱动,介质在不同状态会自动切换,(RMII)
- RX_ER:接收错误信号。PHY芯片驱动,只有当RX_DV与RX_ER同时有效时错误有效。(MII)
- REF_CLK: RMII模式外部50MHz参考时钟。可以直接使用外部晶振接入MAC和PHY,也可以通过STM3的PLL来驱动。(RMII)
2.2.MII/RMII时钟源


MII使用25MHz时钟源,RMII使用50MHz时钟源。
使用MII接口时,STM32F4可使用外部25MHz高速时钟(HSE),通过MCO引脚输出25MHz驱动PHY,PHY也可单独使用外部25MHz时钟源。
使用RMII接口时,STM32F4使用外部25MHz时钟源时,可通过STM32内部PLL生成50MHz来驱动PHY,也可直接使用外部50MHz时钟源。
三、SMI接口
SMI接口(station management interface)通过时钟线(MDC)以及数据线(MDIO)访问PYH寄存器。
STM32F4xx的SMI接口支持访问32个PHY,可通过应用程序选择一个PHY,然后从PHY包含的32个寄存器选择一个,发送控制数据或者接受状态信息。任一时间只能对一个PHY中的一个寄存器寻址。

MDC (PC1复用):周期性时钟输出,最大频率2.5MHz,最小高低电平时间必须均为160ns,最小时钟周期必须为400ns。,最小时钟周期必须为400ns。
MDIO (PA2 复用):数据输入/输出同步传输 PYH 设备状态信息。
3.1.SMI帧字段

报头:与 PHY 建立同步
起始:验证 1->01 转变
操作:事务类型(读 or 写)
PADDR: PYH 地址,5 位,MSB
RADDR: PHY寄存器地址,5位,MSB
TA:周转字段,主要用于避免读取时的竞争。
数据:先发送 ETH_MIID 位 15
空闲:MDIO 高阻态(PHY 内部上拉为 1)
3.2.SMI写操作

- 初始化MAC MII地址寄存器(ETH_MACMIIAR)写入PHY地址、PHY寄存器地址、时钟范围(CR),初始化MAC MII数据寄存器(ETH_MACMIIDR)
- 将写入位(MW)、繁忙位(MB)置1
- 触发对PHY寄存器写操作事务(事务期间对ETH_MACMIIAR与ETH_MACMIIDR的写操作无效)
- 写操作完成
- 复位繁忙位(MB)
3.3.SMI读操作

- 初始化MAC MII地址寄存器(ETH_MACMIIAR)写入PHY地址、PHY寄存器地址、时钟范围(CR),初始化MAC MII数据寄存器(ETH_MACMIIDR)
- 将写入位(MW)清0,繁忙位(MB)置1
- 触发对PHY寄存器读操作事务(事务期间对ETH_MACMIIAR与ETH_MACMIIDR的写操作无效)
- 复位繁忙位(MB)
- 将从PHY中读取的数据更新到MII数据寄存器(ETH_MACMIIDR)
3.4.SMI时钟选择

SMI时钟源应为AHB时钟,分频系数取决于MII地址寄存器(MII Address register)设置的时钟范围。
ETH外设硬件主要就是了解MII/RMII与SMI接口,以及用于MAC DMA的AHB主从接口的数据流向(参考开头的系统框图)。
基于STM32F407MAC与DP83848实现以太网通讯一(STM32以太网(ETH)外设)的更多相关文章
- STM32F412应用开发笔记之五:结合W5500实现以太网通讯
因实际使用需求我们测试一下网络通讯,在NUCLEO-F412ZG测试板上没有以太网部分,我们选择外接一个W5500的实验板.W5500支持SPI接口通讯,DC3.3V供源.而NUCLEO-F412ZG ...
- ACE框架 基于共享内存的进程间通讯
ACE框架将基于共享内存的进程间通讯功能,如其它IO组件或IPC组件一样,设计成三个组件.流操作组件ACE_MEM_Stream,连接器组件ACE_MEM_Connector,以及接收连接组件ACE_ ...
- 西门子S7系列以太网通讯处理器功能介绍
北京华科远创科技有限研发的远创智控型号ETH-YC模块适用于西门子S7-200/S7-300/S7-400.SMART S7-200.西门子数控840D.840DSL.合信.亿维PLC的PPI/MPI ...
- 西门子S7200/300/400以太网通讯处理器选型分类
北京华科远创科技有限研发的远创智控转以太网模块适用于西门子S7-200/S7-300/S7-400.SMART S7-200.西门子数控840D.840DSL.合信.亿维PLC的PPI/MPI/PRO ...
- 共享式以太网与交换式以太网的性能比较(OPNET网络仿真实验)
一.实验目的 比较共享式以太网和交换式以太网在不同网络规模下的性能. 二.实验方法 使用opnet来创建和模拟网络拓扑,并运行分析其性能. 三.实验内容 3.1 实验设置(网络拓扑.参数设置. ...
- 基于dubbo框架下的RPC通讯协议性能测试
一.前言 Dubbo RPC服务框架支持丰富的传输协议.序列化方式等通讯相关的配置和扩展.dubbo执行一次RPC请求的过程大致如下:消费者(Consumer)向注册中心(Registry)执行RPC ...
- [iOS 基于CoreBluetooth的蓝牙4.0通讯]
一.首先大致介绍下蓝牙4.0的模式,中心和周边: 一般情况下,iPhone作为中心,接收来自周边传感器(比如手环等)采集的数据. 二.那整一个数据通讯的协议是怎样的呢? 为什么要一层层搞这么复杂呢?据 ...
- 多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)
老有人觉得MSComm通讯控件很土,更有人大声疾呼:忘了它吧.确实当我们对串口编程有了一定的了解后,应该用API函数写一个属于自己的串口程序,由于编程者对程序了解,对程序修改自如.但我一直没有停止过用 ...
- C#应用视频教程1.4 实现完整以太网通讯
对于事件和委托机制不够理解的读者可以参考本节提供的委托相关的范例程序,这个是控制台的程序,比较简洁(书店发布一本书的事件注册到某个读者A身上,原理跟前面一小节讲的是一致的,只不过没有通过委托对外发送数 ...
- C#基于RabbitMQ实现客户端之间消息通讯实战演练
一.背景介绍和描述 MQ消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.何时需要消息队列?当你需要使用 ...
随机推荐
- 【6】python生成数据曲线平滑处理——(Savitzky-Golay 滤波器、convolve滑动平均滤波)方法介绍,推荐玩强化学习的小伙伴收藏
相关文章: Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图 先上效果图: 由于高频某些点的波动导致高频曲线非常难看,为了降低噪声干扰,需要对曲线做平滑处理,让曲线过 ...
- Python 排序与查找算法收集
Python 语言实现几种不同的排序算法,代码来自于老男孩Python全栈开发,学习教程! import random import time import copy import sys def c ...
- Redis安装及使用详解篇
一.什么是Redis? Redis(Remote Dictionary Server ),即远程字典服务. Redis是是现在最受欢迎的NoSQL数据库之一,是一种支持key-value等多种数据结构 ...
- 苹果正在测试新款Mac mini:搭载M3芯片 配备24GB大内存
据悉苹果目前正在测试新的Mac机型,亮点是采用最新的M3芯片. 据报道,首款搭载M3芯片的设备应该是13英寸的MacBook Pro和重新设计的MacBook Air,Mac mini机型并不在名单上 ...
- 进程状态|操作系统|什么是pcb|什么是僵尸进程 |什么是孤儿进程 【超详细的图文解释】【Linux OS】
说在前面 今天给大家带来操作系统中进程状态的详解. 本篇博主将通过从进程状态的广泛概念,深入到Linux操作系统详细的一些进程状态.在解释进程状态的过程中,博主还会穿插一些操作系统一些重要概念!本篇干 ...
- SecureCRT终端显示中文乱码问题的解决方案
错误描述:在windows10下通过SecureCRT远程连接Linux终端时,如果Linux里面存放有带有中文的文件或文件名,那么SecureCRT终端就会显示乱码. 错误记录:如下图所示,在我的文 ...
- 100 行代码实现用户登录注册与 RESTful 接口 - 手把手教程附 Python 源码
在开发大多数应用时,用户系统都是必不可少的部分,而我们总是需要开发围绕用户的登录,注册,获取,更新等接口.在这篇文章将带你用一百多行代码简洁地实现一套这样的用户鉴权与 RESTful 接口,并使用 S ...
- Windows OhmGraphite 配置
Windows OhmGraphite 配置 由于windows_exporter无法监控温度相关的指标,那么就需要使用OhmGraphite进行监控该指标. 下载 访问 https://github ...
- Centos8 单机配置 Zookeeper3.6.3 集群
安装 Zookeeper 3.6.3 前提 已经安装好 JDK8+. 如果使用JDK8, 版本需要在211以上. 下载, 解压 使用root用户 wget https://downloads.apac ...
- 【Unity3D】UI Toolkit简介
1 前言 UI Toolkit 是一种基于 Web 技术的 GUI 框架,是为了解决 UGUI 效率问题而设计的新一代 UI 系统(UGUI 的介绍详见→UGUI概述).与 UGUI 不同,UI ...