Плата розробника WT32-ETH01 на мікромодулі ESP32
4MB flash-пам'яті та мікросхема PHY для Ethernet – LAN8720A.
Усі сигнали з ESP32, які виведені назовні скорочено називаються як IO00-IO39.
Інші - жорстко зав'язані на функціонування Ethernet. Більшість сигналів підключено за типовою схемою.
Підключення для прошивки:
RXD0: TXD UART
TXD0: RXD UART
Щоб прошити плату необхідно замкнути піни (IO0 на GND) і пересмикнути живлення чи «скинути» ESP32 через пін EN (коротко замкнути EN на GND), і після цього взаємодіяти по UART. Щоразу при прошивці.
Якщо спершу необхідно стерти всю flash-пам'ять, то після цієї операції ESP32 потрібно ще раз «скинути», а потім вже прошивати.
На більшості інших плат цей процес автоматизований: GPIO00 та EN управляються сигналами відповідно DTR UART та RTS UART.
Конкретно для WT32-ETH01 не можна постійно подавати на IO0 «0» або «1». Для прошивки IO0 потрібно «звільнити», тому що на цей вхід ще й подається тактова частота 50Мгц з розташованого на платі генератора. Також на платі реалізовано управління роботою цього генератора за допомогою GPIO16. Якщо там логічна «1» то тактова частота подається як на IO0, так і на LAN8720A. У режимі прошивки там "0" - частота не генерується, нічого не "коротить", і немає ризику, що режим прошивки "сам по собі" запуститься. На інших платах з Ethernet тактову частоту ESP32 може генерувати самостійно, причому це можуть бути як GPIO00 в режимі виходу, але також GPIO16 або GPIO17. Керування живленням може бути, наприклад, на GPIO12. Або взагалі не реалізовано.
Сигнал RTS подавати на EN, в принципі нічого не заважає, але іноді доведеться все ж таки вручну «скидати».
І ще, особливість: мікросхема PHY може мати свою логічну адресу, від 0 до 31. Саме у LAN8720A ця адреса або 0, або 1, (ця адреса задається «залізно» одним із пінів LAN8720A). Саме на WT32-ETH01 — це адреса 1. А більшість інших плат — 0.
Такі тонкощі реалізації призводять до того, що прошивки треба програмно конфігурувати під кожне схемотехнічне рішення окремо.
Тому запам'ятаємо:
PHY type: 0 - LAN8720A
PHY addr: 1
PHY power (pin): 16
PHY clock: 0 - CLOCK_GPIO0_IN
До пінів RXD - GPIO5, TXD - GPIO17, так само можна підключати UART, вони цікаві тим, що до них підключені два світлодіоди.
Вихід LNK підключений до відповідного виводу LAN8720A для індикації стану підключення Ethernet, програмно ним керувати не вдасться.
esphome:
name: wt32-eth01
esp32: board: esp32dev framework: type: esp-idf
Ethernet:
type: LAN8720
mdc_pin: GPIO23
mdio_pin: GPIO18
clk:
pin: GPIO0
mode: CLK_EXT_IN
phy_addr: 1
power_pin: GPIO16

