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

MDIO и MDC — шина управления PHY

Данные идут между MAC и PHY по RMII или MII, а настройки и состояние линии — по отдельной медленной шине из двух проводов. По ней читают, есть ли связь и на какой скорости, и пишут режимы PHY.

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

MDIO (Management Data Input/Output) и MDC (Management Data Clock) — двухпроводная шина управления, по которой MAC читает и записывает регистры PHY Ethernet. MDC — такт от MAC, MDIO — двунаправленная линия данных. В справочных руководствах STM32 шина называется SMI (station management interface). Стандартный набор регистров и формат кадра определены в IEEE 802.3, clause 22, поэтому базовые функции PHY разных производителей доступны одним и тем же драйвером. Где шина находится в схеме, показано в статье «Ethernet для микроконтроллера».

Адреса и регистры

На одной шине может быть до 32 PHY, у каждого — до 32 регистров по 16 бит; адрес PHY задают его страп-выводы (DP83848, разд. 6.4.3; RM0090, разд. 33.4.1). Регистры, которые читают чаще всего:

АдресРегистрЧто в нём
0x00BMCRсброс, включение и перезапуск автосогласования, ручной выбор скорости и дуплекса
0x01BMSRесть ли связь, завершено ли автосогласование, возможности PHY
0x04ANARчто PHY объявляет партнёру при автосогласовании
0x05ANLPARчто объявил партнёр

Данные — по описанию регистров DP83848; дополнительные регистры у каждого производителя свои.

Формат кадра

Обращение начинается с преамбулы — 32 тактов с единицей на MDIO. Затем идут старт 01, код операции (10 — чтение, 01 — запись), 5 бит адреса PHY, 5 бит адреса регистра, два бита turnaround и 16 бит данных (DP83848, табл. 6-4). При чтении в первом бите turnaround линию не ведёт никто, во втором PHY выставляет ноль и затем передаёт данные; при записи MAC заполняет turnaround битами 10 сам. Пока PHY не получил преамбулу после сброса, он не отвечает.

Электрические требования

MDIO требует подтягивающего резистора: у DP83848 — 1,5 кОм (разд. 4.3). Частоту MDC MAC получает делителем: у STM32F4 — делением частоты AHB на 16, 26, 42, 62 или 102 в зависимости от её диапазона (RM0090, табл. 188), так чтобы не превысить 2,5 МГц. MDC может быть не связан с тактами передачи и приёма (DP83848, разд. 4.3), и шина работает даже тогда, когда данных нет.

Не путать

С интерфейсом MII и RMII: по нему идут кадры, а по MDIO — только настройки и состояние. И с шиной I²C: MDIO похожа на неё двумя проводами и подтяжкой, но формат кадра и адресация у неё свои.

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

С какой частотой работает MDC?

Стандартная граница интерфейса управления, на которую рассчитан MAC STM32F4, — 2,5 МГц: период MDC не меньше 400 нс (RM0090, разд. 33.4.1). Некоторые PHY принимают больше — DP83848 допускает до 25 МГц, — но частоту выбирают по самому медленному устройству на шине. У LAN8720A предел тот же, 2,5 МГц.

Сколько длится чтение одного регистра?

Наш расчёт по формату кадра DP83848: 32 такта преамбулы, 2 — старт, 2 — код операции, по 5 — адрес PHY и регистра, 2 — turnaround и 16 — данные, всего 64 такта MDC. При 2,5 МГц это 25,6 мкс. После первой преамбулы DP83848 может обходиться без неё, если PHY и MAC это поддерживают.

Нужна ли подтяжка на MDIO?

Да. Линия двунаправленная, и в простое и в первом бите turnaround её никто не ведёт. TI для DP83848 требует подтяжку 1,5 кОм к питанию: она же формирует уровень единицы преамбулы, если MAC просто отпускает линию на 32 такта.

Источники

  1. Texas Instruments. DP83848C/I/VYB/YB PHYTER QFP Single Port 10/100 Mb/s Ethernet Physical Layer Transceiver, SNLS266E — разд. 4.3 — MDC до 25 МГц без нижнего предела, MDIO требует подтяжки 1,5 кОм; разд. 6.4.3 — 32 регистра по 16 бит, до 32 устройств на шине; табл. 6-4 — кадр: преамбула из 32 единиц, старт 01, код операции 10 (чтение) или 01 (запись), 5 бит адреса PHY, 5 бит адреса регистра, turnaround (Z0 при чтении, 10 при записи), 16 бит данных; PHY не отвечает до первой преамбулы; разд. 6.3.1 и 6.6 — BMCR 0x00, BMSR 0x01, ANAR 0x04, ANLPAR 0x05
  2. STMicroelectronics. RM0090 Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439, Rev 21 — разд. 33.4.1 — SMI: доступ к 32 PHY и 32 регистрам в каждом, одновременно к одному регистру; MDC не выше 2,5 МГц, высокий и низкий уровни не короче 160 нс, период не меньше 400 нс; в простое MDC низкий; табл. 188 — делитель MDC от частоты AHB
  3. Microchip. LAN8720A/LAN8720Ai Small Footprint RMII 10/100 Ethernet Transceiver with HP Auto-MDIX and flexPWR Technology, DS00002165C — табл. 5-13 — тайминги SMI, период MDC не меньше 400 нс; разд. 3.7 — младший бит адреса PHYAD0 задаётся страпом

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