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

圖1 MII接口信號(hào)

圖2 RMII接口信號(hào)
引腳定義說明:

SMI 接口信號(hào):MAC 通過此接口配置 PHY 工作在不同的通信模式。
數(shù)據(jù)發(fā)送信號(hào):由 MAC 子層同步驅(qū)動(dòng),在 TX_EN 信號(hào)有效時(shí)才為有效信號(hào)(有效數(shù)據(jù))。禁止 TX_EN 時(shí),發(fā)送數(shù)據(jù)不會(huì)對(duì) PHY 產(chǎn)生任何影響。MII 接口包括 4 根數(shù)據(jù)信號(hào),RMII 接口是 2 根數(shù)據(jù)信號(hào)。
數(shù)據(jù)接收信號(hào):由 PHY 同步驅(qū)動(dòng),在 DV 信號(hào)有效時(shí)才為有效信號(hào)(有效數(shù)據(jù))。MII 接口包括 4 根數(shù)據(jù)信號(hào),RMII 接口是 2 根數(shù)據(jù)信號(hào)。
發(fā)送使能信號(hào):該信號(hào)表示 MAC 當(dāng)前正針對(duì) MII/RMII 發(fā)送半字節(jié)。該信號(hào)必須與報(bào)頭的前半字節(jié)進(jìn)行同步 (MII_TX_CLK / RMII_REF_CLK)。
時(shí)鐘信號(hào):MII 接口包括 TX_CLK、RX_CLK;RMII 接口 TX/RX 共用 REF_CLK 信號(hào);該信號(hào)提供進(jìn)行 TX/RX 數(shù)據(jù)傳輸時(shí)的參考時(shí)序。
MII 標(biāo)稱頻率為:速率為 10 Mbit/s 時(shí)為 2.5 MHz;速率為 100 Mbit/s 時(shí)為 25 MHz。
RMII 標(biāo)稱頻率為:速率為 10 Mbit/s 時(shí)為 5 MHz;速率為 100 Mbit/s 時(shí)為 50 MHz。
接收錯(cuò)誤信號(hào):該信號(hào)必須保持一個(gè)或多個(gè)周期 CLK,從而向 MAC 子層指示在幀的某處檢測(cè)到錯(cuò)誤。RMII 接口無此信號(hào)。
接收數(shù)據(jù)有效信號(hào):該信號(hào)表示 PHY 當(dāng)前正針對(duì)接收已恢復(fù)并解碼的半字節(jié)。該信號(hào)必須與恢復(fù)幀的頭半字節(jié)進(jìn)行同步,并且一直保持同步到恢復(fù)幀的最后半字節(jié)。該信號(hào)必須在最后半字節(jié)隨后的第一個(gè)時(shí)鐘周期之前禁止。為了正確地接收幀,DV 信號(hào)必須在時(shí)間范圍上涵蓋要接收的幀,其開始時(shí)間不得遲于 SFD 字段出現(xiàn)的時(shí)間。RMII 接口此信號(hào)和載波偵聽信號(hào)復(fù)用成1個(gè)信號(hào)引腳。
載波偵聽信號(hào):當(dāng)發(fā)送或接收介質(zhì)處于非空閑狀態(tài)時(shí),由 PHY 使能該信號(hào)。發(fā)送和接收介質(zhì)均處于空閑狀態(tài)時(shí),由 PHY 禁止該信號(hào)。PHY 必須確保 CRS 信號(hào)在沖突條件下保持有效狀態(tài)。該信號(hào)無需與 TX 和 RX 時(shí)鐘保持同步。在全雙工模式下,該信號(hào)沒意義。RMII 接口此信號(hào)和接收數(shù)據(jù)有效信號(hào)復(fù)用成1個(gè)信號(hào)引腳。
沖突檢測(cè)信號(hào):檢測(cè)到介質(zhì)上存在沖突后,PHY 必須立即使能沖突檢測(cè)信號(hào),并且只要存在沖突條件,沖突檢測(cè)信號(hào)必須保持有效狀態(tài)。該信號(hào)無需與 TX 和 RX 時(shí)鐘保持同步。RMII 接口無此信號(hào)。
CKS32F107XX通信實(shí)驗(yàn)
本實(shí)驗(yàn)由 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 時(shí)鐘;
/* 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.實(shí)驗(yàn)結(jié)果
通過以上配置,無論 MII /RMII 都可以正常通訊,如下圖 5。

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