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.
Сигналы
| MII | RMII | |
|---|---|---|
| Данные передачи | TXD[3:0], TX_EN | TXD[1:0], TX_EN |
| Данные приёма | RXD[3:0], RX_DV, RX_ER | RXD[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 могут оказаться в разных режимах.
Источники
- 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 в сбросе или до включения тактирования
- 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 тактов
- 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
- 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
- Espressif. ESP32 Series Datasheet, Version 5.3 — разд. 4.8.13 — Ethernet MAC: MII (17 сигналов) и RMII (9 сигналов)
- Texas Instruments. AN-1469 PHYTER Design & Layout Guide, SNLA079D — разд. 5 — линии MII/RMII короче 6 дюймов, разница длин внутри шины не больше 2 дюймов, последовательные резисторы 50 Ом на выходах MII; разд. 6 — в RMII такт 50 МГц от генератора
Нашли ошибку?
Смотрите также
- Ethernet для микроконтроллераW5500, ENC28J60, MAC + PHY по RMII, LAN8720, DP83848, трансформатор и разводка
- MAC EthernetБлок, который формирует и принимает кадры Ethernet
- PHY EthernetМикросхема физического уровня между MAC и кабелем
- MDIO и MDCДвухпроводная шина регистров PHY Ethernet
- STM32F4Cortex-M4 с FPU: от F401 и F411 до F429 и F469 — линейки и распиновки
- ESP32: выводы и GPIO34 GPIO: функции, свободные выводы, только входы, флеш-память, strapping, JTAG, токи