首页 > 其他分享 >基于STM32F407MAC与DP83848实现以太网通讯一(STM32以太网(ETH)外设)

基于STM32F407MAC与DP83848实现以太网通讯一(STM32以太网(ETH)外设)

时间:2024-02-22 16:59:32浏览次数:42  
标签:MII RMII STM32F407MAC STM32 PHY 寄存器 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写操作

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

3.3.SMI读操作

 

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

3.4.SMI时钟选择

SMI时钟源应为AHB时钟,分频系数取决于MII地址寄存器(MII Address register)设置的时钟范围。

ETH外设硬件主要就是了解MII/RMII与SMI接口,以及用于MAC DMA的AHB主从接口的数据流向(参考开头的系统框图)。 

标签:MII,RMII,STM32F407MAC,STM32,PHY,寄存器,ETH,以太网,时钟
From: https://www.cnblogs.com/fuyunxiansen/p/18027351

相关文章

  • stm32 中断处理函数注意事项
    一前记最近在公司的一个项目中碰到一个解决了定位很久的bug,bug找到的时候发现犯了很低级的错误——在中断处理函数中调用了printf函数,因为中断处理函数的调用了不可重入函数,导致接收到莫名其妙的数据。后面通过定位才发现这个是因为里面调用了不可重入函数导致的。那......
  • 微控制器STM32L475RCT7[IC MCU 32BIT 256KB]、AZ5A25-01F.R7G瞬态抑制二极管(TVS),AONS
    1、微控制器STM32L475RCT7[ICMCU32BIT256KBFLASH64LQFP]STM32L475RC器件是基于高性能ARM®Cortex®-M432位RISC内核的超低功耗微控制器,工作频率高达80MHz。Cortex-M4内核具有浮点单元(FPU)单精度,支持所有ARM单精度数据处理指令和数据类型。它还实现了完整的DSP指令集和存储......
  • STM32 ---SPI通讯
    I2C能够通过软件模拟,同样的,SPI通讯也可以通过软件模拟,具体需要掌握SPI的收发时序。但在本节,我们着重讲解STM32的硬件SPI外设。 我们知道SPI有以下几个特点1、时钟频率:Fpclk/2,4,8,16,32,64,128,256(Fpclk是时钟分频,APH2的Fpclk是72MHZ,APB1的Fpclk是36MHZ)2、支持多主机模型......
  • STM32笔记
    整理有道云笔记中,关于STM32的笔记Keil软件中map文件解析简单的说:map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。遇到内存越界,或者溢出的情况,可以通过map文件,去确定函数大小,入口地址等一些重要信息。我们在Keil中最常见的就是在编译之后,编译窗口会显示类......
  • 基于stm32的spi接口dma 数据收发实例解析
    一前记  SPI接口平时用的比较少,再加上对CUBEMX不是很熟悉,这里踩了不少坑才把问题解决。针对遇到了不少问题,是要值得梳理一下了。二源码解析1SPI的DMA发送端配置: 2主函数源码:uint32_tg_spi_cnt=0;voidHAL_SPI_TxCpltCallback(SPI_HandleTypeDef*hspi){......
  • STM32 SPI接口 DMA normal 和circual区别
     DMA有normal和circular两种模式。circular模式:就调用这个函数一次就可以了,DMA一直开启,一帧数据发送完毕之后里面发送下一帧,中间没有停顿。这样确实是快了,也释放了CPU,各路的数据采集因为缺少了等待串口发送的时间,所以就间接提高的了数据更新速率。但有个致命缺陷:数据采集和数......
  • 01. 初识STM32
    一、什么是STM32  STM32,从字面上来理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器。  STM32主要分两大块,MCU和MPU,MCU就是我们常见的STM32微控制器,不能跑Linux,而MPU则是ST在19年才推出的微......
  • stm32芯片的SPI接口调试总结之轮询模式
    一概念1组成SPI系统可直接与各个厂家生产的多种标准外围器件接口,它只需4条线:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有效的从机选择线(NSS)。(1)MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数......
  • STM32之红外遥控信号自学习实现
    一、序言很早前就想实现这个红外遥控自学习的这个实验,用于来自己控制房子里如空调等红外遥控设备的自动化,NEC的标准到具体的产品上可能就被厂家定义为不一样了,所以自学习就应该是接收到什么就发送什么,不用管内容是什么!二、硬件实现原理由上述原理图可知,当IE为高电平时发送红外......
  • 【STM32】成功创建Keil MDK工程的条件(可对照查缺补漏)
    文中所有文件夹数量和名称没有限制,按自己理解建也OK。首先:确保编码格式正确(UTF-8),可在小扳手那里更改。安装对应芯片器件支持包。建启动文件夹Start(记得在Keil项目界面添加同名分组导入文件),启动文件的最后字母为型号缩写。STM32F1系列的具体芯片型号缩写参照下表:建......