STMCU小助手
发布时间:2022-2-19 17:59
|
一. 前言 STM32Fxx7 系列(互联型产品)中内置了 MAC,配合外置的 PHY 可以实现以太网通讯。这篇文档将介绍以太网接口的信号定义,重点介绍时钟电路的设计,并给出在实践中已成功应用的设计方案,希望可以对需要进行以太网电路设计的朋友提供帮助。 二.以太网接口 STM32 的以太网支持 10M/100M bits 的全双工和半双工的工作方式,其中的 MAC 通过 MII 接口或者RMII 接口与 PHY 通讯。 1. MII
如图 1 所示,MII 接口标准定义了 16 跟信号线,根据功能将其可以分为 3 组(发送,接收,载波侦听和冲突监测),另外还有用于对 PHY 进行配置的 SMI 接口。 发送 TX_CLK:MII 接口需要 25MHz 的时钟(100Mbits 传输速率时),当以 10Mbits 的速率工作,PHY 内部的电路会对 25MHz 的信号进行十分频以得到 2.5MHz 的时钟。 TXD[3 :0] : 根据时钟速率,不难算出 TXD 需要 4 根数据线。数据线需要与时钟保持同步。 TX_EN : 发送使能信号,也需要与时钟保持同步。 TX_ER : 发送错误指示信号,MAC 通过此信号向 PHY 表示数据无效。需要注意的是在许多 PHY和 MAC 中,这个信号是没有的(STM32 就没有这个信号,图中用虚线表示),由于在另一端的接收信号中包含 RX_ER,因此这个信号是不必要的。 接收 RX_CLK: 接收时钟与发送时钟完全类似。 RXD[3 :0]: 与发送数据线完全类似。 RX_ER:接收错误指示信号,PHY 通过此信号向 MAC 层表示在某一帧数据中发现问题。需要与RX_DV 一起使用。 RX_DV:与 RX_ER 一起进行出错分析。 载波侦听和冲突监测 CRS,COL:这两根信号线在半双工工作方式下提供载波侦听和冲突监测功能,全双工下无用。 SMI 接口 MDC,MDIO:对 PHY 进行配置的接口。可以通过 GPIO 口进行模拟。 2. RMII
RMII 接口可以简单的理解为(Reduce-MII)接口,即减少了 MII 接口中信号线的数量。基本原理是通过提高时钟速率来完成的(RMII 的时钟为 50MHz),因此发送/接收数据线都只需要两根,并合并了一定功能引脚。如图 2 所示,与图 1 对比,仅有一根信号线有差异。 CRS_DV:此信号是 MII 接口中 CRS 和 RX_DV 的复合信号。 三. 时钟电路设计 仔细观察图 1 和图 2,细心的读者会发现两者在时钟电路上有着明显的区别。在 MII 接口电路中,时钟由 PHY 向 MAC 提供(时钟源由通讯的一方来提供);在 RMII 接口电路中,MAC 和 PHY 共同使用来自外部的时钟信号(数据的发送方和接收方采用同一个时钟源)。 由于 MAC 和 PHY 的通讯速率相对较快,为保证硬件电路的可靠性,在设计中应该通过器件的数据手册了解相关参数以确定具体的电路方式。一般需要注意的有: 上升时间/下降时间 t_rise/t_fall : STM32 的 GPIO 口可以进行摆率的设置,不同摆率下上升时间和下降时间是不同的。尤为需要注意的是,当使用 MCO(Main Clock Output 需要了解此功能的读者请阅读参考手册)对多个 PHY 提供时钟,需考虑负载的增加,对输出能力的要求的影响。 时钟抖动(短周期)jitter(short term):特别需要注意的是此项参数,不同的 PHY 对此项参数的有不同的要求,一般多要求 jitter 小于几十个 ps,有些 PHY 的则要求 jitter 小于几百个 ps。STM32 的MCO 直接输出 HSE 的时钟抖动一般在 30~40ps,但若使用 PLL 对 HSE 倍频后,再由 MCO 输出会带来几百个 ps 的时钟抖动。 下面将分别介绍目前在实践中应用最为广泛的两种接口电路。 3. MII 接口设计
如图 3 所示,此系统是典型的 MII 接口电路设计,PHY 所需的时钟由 STM32 的 MCO 管脚输出(直接输出 HSE 的信号,没有经过 PLL 处理)。需保证 MCO 输出的时钟满足 PHY 的要求。 4. RMII 时钟电路
如图 4 所示,此系统是典型的 RMII 接口电路设计,MAC 和 PHY 所需的时钟由外部的有源晶振(50MHz)提供,需保证 OSC 输出的时钟满足 MAC 和 PHY 的要求。 四. 结语 尽管本文讨论的是以太网电路的设计要点,事实上,在数字电路接口的设计中,了解信号链走向和器件的参数要求都是必要的,也只要如此,才可以保证数字电路接口的硬件可靠性。 |
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版