0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

中科芯CKS32F107XX系列MCU的以太网介绍(二)

中科芯MCU 来源:中科芯MCU 2026-03-05 10:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

MCU微课堂

CKS32F107XX系列以太网介绍(二)

第七十二期 2026.03.03

MII/RMII接口概述

MII即媒体独立接口,也叫介质独立接口。它是IEEE-802.3定义的以太网行业标准。它包括一个数据接口,以及一个MAC和PHY之间的管理接口。

RMII即精简介质独立接口。规范降低了10/100 Mbit/s 下微控制器以太网外设与外部PHY 间的引脚数。根据IEEE 802.3u 标准,MII包括17 个数据和控制信号的引脚。RMII规范将引脚数减少为 9 个。图 1 和 图2分别为 MII、RMII 接口的信号示意图。

469875a8-16c7-11f1-90a1-92fbcf53809c.png

图1 MII接口信号

46ff4878-16c7-11f1-90a1-92fbcf53809c.png

图2 RMII接口信号

引脚定义说明:

4769d24c-16c7-11f1-90a1-92fbcf53809c.png

SMI 接口信号:MAC 通过此接口配置 PHY 工作在不同的通信模式。

数据发送信号:由 MAC 子层同步驱动,在 TX_EN 信号有效时才为有效信号(有效数据)。禁止 TX_EN 时,发送数据不会对 PHY 产生任何影响。MII 接口包括 4 根数据信号,RMII 接口是 2 根数据信号。

数据接收信号:由 PHY 同步驱动,在 DV 信号有效时才为有效信号(有效数据)。MII 接口包括 4 根数据信号,RMII 接口是 2 根数据信号。

发送使能信号:该信号表示 MAC 当前正针对 MII/RMII 发送半字节。该信号必须与报头的前半字节进行同步 (MII_TX_CLK / RMII_REF_CLK)。

时钟信号:MII 接口包括 TX_CLK、RX_CLK;RMII 接口 TX/RX 共用 REF_CLK 信号;该信号提供进行 TX/RX 数据传输时的参考时序。

MII 标称频率为:速率为 10 Mbit/s 时为 2.5 MHz;速率为 100 Mbit/s 时为 25 MHz。

RMII 标称频率为:速率为 10 Mbit/s 时为 5 MHz;速率为 100 Mbit/s 时为 50 MHz。

接收错误信号:该信号必须保持一个或多个周期 CLK,从而向 MAC 子层指示在帧的某处检测到错误。RMII 接口无此信号。

接收数据有效信号:该信号表示 PHY 当前正针对接收已恢复并解码的半字节。该信号必须与恢复帧的头半字节进行同步,并且一直保持同步到恢复帧的最后半字节。该信号必须在最后半字节随后的第一个时钟周期之前禁止。为了正确地接收帧,DV 信号必须在时间范围上涵盖要接收的帧,其开始时间不得迟于 SFD 字段出现的时间。RMII 接口此信号和载波侦听信号复用成1个信号引脚。

载波侦听信号:当发送或接收介质处于非空闲状态时,由 PHY 使能该信号。发送和接收介质均处于空闲状态时,由 PHY 禁止该信号。PHY 必须确保 CRS 信号在冲突条件下保持有效状态。该信号无需与 TX 和 RX 时钟保持同步。在全双工模式下,该信号没意义。RMII 接口此信号和接收数据有效信号复用成1个信号引脚。

冲突检测信号:检测到介质上存在冲突后,PHY 必须立即使能冲突检测信号,并且只要存在冲突条件,冲突检测信号必须保持有效状态。该信号无需与 TX 和 RX 时钟保持同步。RMII 接口无此信号。

CKS32F107XX通信实验

本实验由 CKS32F107 开发板 + DP83848 以太网模块配合完成。

1.MII模式配置

(1)DP83848 模块通过 J1 J2 J3 配置为 MII 模式;

(2)CKS32F107 开发板如下管脚通过杜邦线和 DP83848 模块连接;如图3;

482cc7c0-16c7-11f1-90a1-92fbcf53809c.png

图3 MII硬件连接示意图

(3)配置如图3 GPIO管脚为 Ethernet 功能;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinRemapConfig(GPIO_Remap_ETH, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOD, &GPIO_InitStructure);

(4)配置以太网模块为 MII 模式;

GPIO_ETH_MediaInterfaceConfig(GPIO_ETH_MediaInterface_MII);

(5)配置 PA8 输出25M 时钟;

/* PA8: MCO pin configuration */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

RCC_MCOConfig(RCC_MCO_HSE); //输出 MCU HSE 25M,MII模式 4*25M=100M

2.RMII模式配置

(1)DP83848 模块通过 J1 J2 J3 配置为 RMII 模式;

(2)CKS32F107 开发板如下管脚通过杜邦线和 DP83848 模块连接;

4891b2c0-16c7-11f1-90a1-92fbcf53809c.png

图4 RMII硬件连接示意图

(3)配置如图 GPIO管脚为 Ethernet 功能;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinRemapConfig(GPIO_Remap_ETH, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 ;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOD, &GPIO_InitStructure);

(4)配置以太网为 RMII 模式;

GPIO_ETH_MediaInterfaceConfig(GPIO_ETH_MediaInterface_RMII);

(5)配置以太网为 RMII 模式;

/* PA8: MCO pin configuration */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Set PLL3 clock output to 50MHz (25MHz /5 *10 =50MHz) */

RCC_PLL3Config(RCC_PLL3Mul_10);

RCC_PLL3Cmd(ENABLE);

while (RCC_GetFlagStatus(RCC_FLAG_PLL3RDY) == RESET);

RCC_MCOConfig(RCC_MCO_PLL3CLK); //输出 MCU PLL3 50M,RMII模式: 2*50M=100M

3.实验结果

通过以上配置,无论 MII /RMII 都可以正常通讯,如下图 5。

48fd1fc4-16c7-11f1-90a1-92fbcf53809c.png

图5 实验结果

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19232

    浏览量

    405187
  • 以太网
    +关注

    关注

    41

    文章

    6291

    浏览量

    181928
  • 接口
    +关注

    关注

    33

    文章

    9635

    浏览量

    157801

原文标题:MCU微课堂|CKS32F107XX系列以太网介绍(二)

文章出处:【微信号:中科芯MCU,微信公众号:中科芯MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    中科CKS32F107XX系列MCU的独立看门狗介绍

    中科CKS32F107xx系列产品内部提供两个看门狗定时器单元,独立型看门狗IWDG(Independent Watchdog)和窗口型看门狗WWDG(Window Watchdog
    的头像 发表于 11-28 14:51 4106次阅读
    <b class='flag-5'>中科</b><b class='flag-5'>芯</b><b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的独立看门狗<b class='flag-5'>介绍</b>

    中科CKS32F107XX系列MCU的窗口看门狗介绍

    中科CKS32F107xx系列产品内部提供两个看门狗定时器单元,独立型看门狗IWDG(Independent Watchdog)和窗口型看门狗WWDG(Window Watchdog
    的头像 发表于 11-28 14:48 4420次阅读
    <b class='flag-5'>中科</b><b class='flag-5'>芯</b><b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的窗口看门狗<b class='flag-5'>介绍</b>

    中科CKS32F107XX系列MCU的bxCAN介绍

    CKS32F107xx系列产品的bxCAN支持CAN协议2.0A和2.0B标准。 该CAN 控制器支持最高的通讯速率为1Mb/s;可以自动地接收和发送CAN报文,支持使用标准ID和扩展ID的报文
    的头像 发表于 01-22 09:06 4044次阅读
    <b class='flag-5'>中科</b><b class='flag-5'>芯</b><b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的bxCAN<b class='flag-5'>介绍</b>

    CKS32F4xx系列ETH通信详解

    CKS32F4xx系列芯片自带以太网模块,该模块包括带专用DMA控制器的MAC 802.3(介质访问控制)控制器
    的头像 发表于 11-10 11:13 2352次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ETH通信详解

    CKS32F4xx系列芯片以太网模块主要功能及框图解析

    CKS32F4xx系列芯片自带以太网模块,该模块包括带专用DMA控制器的MAC 802.3(介质访问控制)控制器,支持介质独立接口(MII)和简化介质独立接口(RMII),并自带了一个用于外部PHY通信的SMI接口,通过一组配置
    的头像 发表于 11-10 11:15 2510次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>芯片<b class='flag-5'>以太网</b>模块主要功能及框图解析

    中科CKS32F107XX系列MCU以太网介绍(一)

    以太网(Ethernet)是一种计算机局域网技术。IEEE 802.3制定了以太网的技术标准,它规定了包括物理层的连线、电子信号、介质访问控制的内容。
    的头像 发表于 03-05 10:01 5461次阅读
    <b class='flag-5'>中科</b><b class='flag-5'>芯</b><b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的<b class='flag-5'>以太网</b><b class='flag-5'>介绍</b>(一)

    STM32F105/107系列以太网PHY设计

    STM32F105/107系列以太网PHY设计资料。图说的很详细,废话就不说了,自己看图吧。Technorati 标签: STM32F107
    发表于 08-05 06:55

    MCU微课堂 | CKS32F4xx系列产品SPI通信

    MCU微课堂 | CKS32F4xx系列产品SPI通信
    的头像 发表于 10-24 17:12 1889次阅读
    <b class='flag-5'>MCU</b>微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品SPI通信

    MCU微课堂 | CKS32F4xx系列产品GPIO口配置

    MCU微课堂 | CKS32F4xx系列产品GPIO口配置
    的头像 发表于 10-24 15:14 1783次阅读
    <b class='flag-5'>MCU</b>微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品GPIO口配置

    CKS32F107xx系列时钟系统具体配置方法讲解

    上一章节对CKS32F107xx系列时钟做了整体介绍,本章节以使用HSI内部高速时钟为例对时钟具体配置方法进行讲解。
    的头像 发表于 05-28 10:05 1806次阅读
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>时钟系统具体配置方法讲解

    CKS32F107xx系列MCU中ADC介绍

    CKS32F107xx系列产品提供2个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
    的头像 发表于 06-22 11:04 2153次阅读

    CKS32F107xx系列MCU的GPIO内部硬件结构和工作模式

    16个引脚,如型号为CKS2F107VET6型号的芯片有GPIOA、GPIOB、GPIOC至GPIOE共5组GPIO,芯片一共100个引脚,其中GPIO就占了一大部分,所有的GPIO引脚都有基本的输入输出功能。
    的头像 发表于 07-22 09:23 2087次阅读
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的GPIO内部硬件结构和工作模式

    详解CKS32F107xx系列的定时器同步功能

    CKS32F107xx系列部分定时器在内部是相连的,可用于定时器同步或链接,方便用户配置不同的同步模式,以便在电机控制、数据采集和PWM信号生成等应用中,实现复杂的时间序列和多通道的同步操作。本节课
    的头像 发表于 11-26 17:51 1956次阅读
    详解<b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>的定时器同步功能

    CKS32F107xx系列USART的LIN模式

    CKS32F107xx系列在支持正常USART功能的同时,亦支持LIN(局域互联网)模式。
    的头像 发表于 02-18 17:18 1444次阅读
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>USART的LIN模式

    中科CKS32F107XX系列MCU的电源控制介绍

    CKS32F107xx的工作电压(VDD)为2.0~3.6V,通过内置的电压调节器提供内核所需的1.5V电源,图1为电源系统框架。
    的头像 发表于 03-25 16:34 665次阅读
    <b class='flag-5'>中科</b><b class='flag-5'>芯</b><b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的电源控制<b class='flag-5'>介绍</b>