Перейти к содержанию

MII и RMII — интерфейсы MAC–PHY

Встроенный MAC микроконтроллера и внешняя микросхема PHY обмениваются данными по стандартному параллельному интерфейсу. Полный вариант — MII — занимает 16 выводов, сокращённый RMII — семь, но требует общего опорного такта 50 МГц.

Обновлено Редакция GAW

MII (Media Independent Interface) и RMII (Reduced MII) — стандартные параллельные интерфейсы между MAC и PHY Ethernet на 10 и 100 Мбит/с. MII определён в стандарте IEEE 802.3 (clause 22) и занимает 16 линий данных и управления; RMII сокращает их до семи за счёт удвоенной частоты такта (RM0090, разд. 33.4.3). Управление PHY идёт отдельно — по шине MDIO.

Сигналы

MIIRMII
Данные передачиTXD[3:0], TX_ENTXD[1:0], TX_EN
Данные приёмаRXD[3:0], RX_DV, RX_ERRXD[1:0], CRS_DV, RX_ER (необязателен)
Состояние линииCRS, COLобъединено в CRS_DV
ТактTX_CLK и RX_CLK от PHY: 25 МГц при 100 Мбит/с, 2,5 МГц при 10 Мбит/собщий REF_CLK 50 МГц для MAC и PHY

Данные — по DP83848 (разд. 6.4.1) и RM0090 (разд. 33.4.3). В MII полубайт передаётся за такт: 4 бита × 25 МГц = 100 Мбит/с. В RMII — по 2 бита за такт 50 МГц, тоже 100 Мбит/с, а на 10 Мбит/с такт остаётся 50 МГц и данные меняются раз в 10 тактов (DP83848, разд. 6.4). У ESP32 интерфейсу MII нужно 17 сигналов, RMII — 9, считая такт и линии управления (ESP32 Datasheet, разд. 4.8.13).

Такт RMII

Главная особенность RMII — общий опорный такт 50 МГц, который должен приходить и на MAC, и на PHY (RM0090). Источников три: отдельный генератор, который тактирует обоих; PHY, который делает 50 МГц из кварца 25 МГц и выдаёт его MAC; или MAC, который сам выдаёт такт PHY. У LAN8720A к такту требование 50 МГц ± 50 ppm (табл. 5-12), DP83848 в режиме RMII принимает только генератор. ESP32 может выдать такт через свою APLL, но Espressif не рекомендует этот вариант при работающих Wi-Fi и Bluetooth (ESP-IDF). Подробно все варианты и ошибки тактирования разобраны в статье «Ethernet для микроконтроллера».

Типичные ошибки

  • Режимы MAC и PHY не совпадают. У STM32 бит MII_RMII_SEL нужно выставить до включения тактирования ETH (RM0090, разд. 33.4.4), у DP83848 режим RMII задаётся подтяжкой страпа MII_MODE вверх.
  • Такт не на том выводе. У STM32 вход REF_CLK — тот же вывод, что RX_CLK в режиме MII; у LAN8720A в режиме REF_CLK Out такт выходит на вывод nINT/REFCLKO.
  • Длинные линии. Линии MII и RMII несимметричные; TI рекомендует делать их короче 6 дюймов (около 15 см) с разницей длин внутри шины не больше 2 дюймов (SNLA079, разд. 5).

Частые вопросы

Что выбрать для микроконтроллера: MII или RMII?

Обычно RMII: семь сигнальных линий вместо шестнадцати при той же скорости 10/100 Мбит/с. Цена — общий такт 50 МГц, который должен одинаково приходить и на MAC, и на PHY. Некоторые PHY (LAN8720A) поддерживают только RMII, а драйвер ESP-IDF для ESP32 работает только с RMII.

Можно ли тактировать RMII кварцем 50 МГц?

Зависит от PHY. DP83848 в режиме RMII требует генератор 50 МГц, кварц он не раскачивает. LAN8720A умеет сам сделать 50 МГц из кварца 25 МГц (режим REF_CLK Out), но Microchip оговаривает, что временные параметры этого режима не соответствуют спецификации RMII и их надо проверить расчётом.

Когда у STM32 выбирать RMII?

До запуска контроллера Ethernet: бит MII_RMII_SEL в регистре SYSCFG_PMC устанавливают, пока блок ETH в сбросе или до включения его тактирования (RM0090, разд. 33.4.4). Наш вывод: если выставить бит позже, режим не гарантирован, и MAC с PHY могут оказаться в разных режимах.

Источники

  1. STMicroelectronics. RM0090 Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439, Rev 21 — разд. 33.4.3 — RMII: по IEEE 802.3u у MII 16 выводов данных и управления, RMII сокращает их до 7; такт удвоен до 50 МГц и должен приходить извне и на MAC, и на PHY; данные по 2 бита; источник 50 МГц — внешний генератор или PHY со встроенной PLL; разд. 33.4.4 — режим выбирается битом MII_RMII_SEL в SYSCFG_PMC, пока контроллер Ethernet в сбросе или до включения тактирования
  2. Texas Instruments. DP83848C/I/VYB/YB PHYTER QFP Single Port 10/100 Mb/s Ethernet Physical Layer Transceiver, SNLS266E — разд. 6.4.1 — MII по IEEE 802.3, clause 22: TXD[3:0], TX_EN, TX_CLK, RXD[3:0], RX_DV, RX_ER, RX_CLK, CRS, COL; такты 25 МГц (100 Мбит/с) и 2,5 МГц (10 Мбит/с); разд. 1 — в RMII нужен такт 50 МГц от генератора; разд. 6.4 — в RMII на 10 Мбит/с данные меняются раз в 10 тактов
  3. Microchip. LAN8720A/LAN8720Ai Small Footprint RMII 10/100 Ethernet Transceiver with HP Auto-MDIX and flexPWR Technology, DS00002165C — табл. 2-1 — сигналы RMII; разд. 3.1.1.1 — данные по 2 бита на 50 МГц по фронту REF_CLK; разд. 3.7 — режимы REF_CLK In и REF_CLK Out; табл. 5-12 — REF_CLK 50 МГц ± 50 ppm
  4. Espressif. ESP-IDF Programming Guide v6.1: Ethernet (ESP32) — встроенный MAC ESP32 в ESP-IDF работает только по RMII; такт 50 МГц — вход EMAC_CLK_EXT_IN на GPIO0 или выход EMAC_CLK_OUT от APLL, не рекомендуемый при работающих Wi-Fi и Bluetooth
  5. Espressif. ESP32 Series Datasheet, Version 5.3 — разд. 4.8.13 — Ethernet MAC: MII (17 сигналов) и RMII (9 сигналов)
  6. Texas Instruments. AN-1469 PHYTER Design & Layout Guide, SNLA079D — разд. 5 — линии MII/RMII короче 6 дюймов, разница длин внутри шины не больше 2 дюймов, последовательные резисторы 50 Ом на выходах MII; разд. 6 — в RMII такт 50 МГц от генератора

Нашли ошибку?