MCU微課堂
CKS32F107XX系列以太網(wǎng)介紹(二)
第七十二期 2026.03.03
MII/RMII接口概述
MII即媒體獨立接口,也叫介質(zhì)獨立接口。它是IEEE-802.3定義的以太網(wǎng)行業(yè)標準。它包括一個數(shù)據(jù)接口,以及一個MAC和PHY之間的管理接口。
RMII即精簡介質(zhì)獨立接口。規(guī)范降低了10/100 Mbit/s 下微控制器以太網(wǎng)外設(shè)與外部PHY 間的引腳數(shù)。根據(jù)IEEE 802.3u 標準,MII包括17 個數(shù)據(jù)和控制信號的引腳。RMII規(guī)范將引腳數(shù)減少為 9 個。圖 1 和 圖2分別為 MII、RMII 接口的信號示意圖。

圖1 MII接口信號

圖2 RMII接口信號
引腳定義說明:

SMI 接口信號:MAC 通過此接口配置 PHY 工作在不同的通信模式。
數(shù)據(jù)發(fā)送信號:由 MAC 子層同步驅(qū)動,在 TX_EN 信號有效時才為有效信號(有效數(shù)據(jù))。禁止 TX_EN 時,發(fā)送數(shù)據(jù)不會對 PHY 產(chǎn)生任何影響。MII 接口包括 4 根數(shù)據(jù)信號,RMII 接口是 2 根數(shù)據(jù)信號。
數(shù)據(jù)接收信號:由 PHY 同步驅(qū)動,在 DV 信號有效時才為有效信號(有效數(shù)據(jù))。MII 接口包括 4 根數(shù)據(jù)信號,RMII 接口是 2 根數(shù)據(jù)信號。
發(fā)送使能信號:該信號表示 MAC 當前正針對 MII/RMII 發(fā)送半字節(jié)。該信號必須與報頭的前半字節(jié)進行同步 (MII_TX_CLK / RMII_REF_CLK)。
時鐘信號:MII 接口包括 TX_CLK、RX_CLK;RMII 接口 TX/RX 共用 REF_CLK 信號;該信號提供進行 TX/RX 數(shù)據(jù)傳輸時的參考時序。
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 接口無此信號。
接收數(shù)據(jù)有效信號:該信號表示 PHY 當前正針對接收已恢復(fù)并解碼的半字節(jié)。該信號必須與恢復(fù)幀的頭半字節(jié)進行同步,并且一直保持同步到恢復(fù)幀的最后半字節(jié)。該信號必須在最后半字節(jié)隨后的第一個時鐘周期之前禁止。為了正確地接收幀,DV 信號必須在時間范圍上涵蓋要接收的幀,其開始時間不得遲于 SFD 字段出現(xiàn)的時間。RMII 接口此信號和載波偵聽信號復(fù)用成1個信號引腳。
載波偵聽信號:當發(fā)送或接收介質(zhì)處于非空閑狀態(tài)時,由 PHY 使能該信號。發(fā)送和接收介質(zhì)均處于空閑狀態(tài)時,由 PHY 禁止該信號。PHY 必須確保 CRS 信號在沖突條件下保持有效狀態(tài)。該信號無需與 TX 和 RX 時鐘保持同步。在全雙工模式下,該信號沒意義。RMII 接口此信號和接收數(shù)據(jù)有效信號復(fù)用成1個信號引腳。
沖突檢測信號:檢測到介質(zhì)上存在沖突后,PHY 必須立即使能沖突檢測信號,并且只要存在沖突條件,沖突檢測信號必須保持有效狀態(tài)。該信號無需與 TX 和 RX 時鐘保持同步。RMII 接口無此信號。
CKS32F107XX通信實驗
本實驗由 CKS32F107 開發(fā)板 + DP83848 以太網(wǎng)模塊配合完成。
1.MII模式配置
(1)DP83848 模塊通過 J1 J2 J3 配置為 MII 模式;
(2)CKS32F107 開發(fā)板如下管腳通過杜邦線和 DP83848 模塊連接;如圖3;

圖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)配置以太網(wǎng)模塊為 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 開發(fā)板如下管腳通過杜邦線和 DP83848 模塊連接;

圖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)配置以太網(wǎng)為 RMII 模式;
GPIO_ETH_MediaInterfaceConfig(GPIO_ETH_MediaInterface_RMII);
(5)配置以太網(wǎng)為 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.實驗結(jié)果
通過以上配置,無論 MII /RMII 都可以正常通訊,如下圖 5。

圖5 實驗結(jié)果
-
mcu
+關(guān)注
關(guān)注
147文章
18934瀏覽量
398491 -
以太網(wǎng)
+關(guān)注
關(guān)注
41文章
6000瀏覽量
180907 -
接口
+關(guān)注
關(guān)注
33文章
9525瀏覽量
157060
原文標題:MCU微課堂|CKS32F107XX系列以太網(wǎng)介紹(二)
文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
中科芯CKS32F107XX系列MCU的獨立看門狗介紹
中科芯CKS32F107XX系列MCU的窗口看門狗介紹
中科芯CKS32F107XX系列MCU的bxCAN介紹
MCU微課堂|CKS32F4xx系列產(chǎn)品時鐘配置
CKS32F4xx系列芯片以太網(wǎng)模塊主要功能及框圖解析
中科芯CKS32F107XX系列MCU的以太網(wǎng)介紹(一)
STM32F105/107系列以太網(wǎng)PHY設(shè)計
CKS32F107xx系列時鐘系統(tǒng)具體配置方法講解
CKS32F107xx系列MCU中ADC介紹
CKS32F107xx系列MCU的GPIO內(nèi)部硬件結(jié)構(gòu)和工作模式
詳解CKS32F107xx系列的定時器同步功能
中科芯CKS32F107XX系列MCU的以太網(wǎng)介紹(二)
評論