- PVSM.RU - https://www.pvsm.ru -

Подключаем новенький чип от WIZnet: W5500. IP для маленьких вещей. Часть 1

Похоже, что Etherent и TCP/IP — все ещё самый распространенных способ связи самых разных устройств. Хотя WiFi в последнее время потихоньку вытесняет проводной «медный» Etherent, тем не менее, найти порт и «воткнуться в локалку» — до сих пор самый простой способ подключения. Такая доступность Ethernet не обошла стороной и самые маленькие железки: контроллеры, датчики, счетчики потребления и т.д. которые нынче называются модным маркетинговым словом "Интернет вещей*" (Internet Of Things, IoT) (А где тематический хаб, кстати?).

Подключаем новенький чип от WIZnet: W5500. IP для маленьких вещей. Часть 1

И тут нам могут здорово помочь корейские микросхемки от WIZnet. Компания WIZnet — это довольно бодрый прозводитель чипов класса IOcP (Internet Offload co-Processor). Что это? Говоря человеческим языком — это такой чип, который: с одной стороны имеет Etherent, внутри содержит собственный крошечный процессор для обработки TCP/IP, а с другой стороны — простой интерфейс для связи с нашей маленькой железкой.

В первой части будет небольшой теоретический обзор подключения «маленьких железок» и куча ссылок на разные чипы.

Но сразу возникает вопрос: ЗАЧЕМ вводить в систему еще один процессор, если всё можно обработать на основном? Давайте попробуем ответить.

Обзор: Ethernet для мелочи.

Самый-самый простой способ «выхода в сеть» для микроконтроллеров — это разного рода преобразователи COMпорт-в-Telnet, Serial2Ethernet [1] иногда называемые еще Реверсивный Telnet. В этом случае преобразователь «ловит» telnet сессию и «загоняет» ее в обычный COM-порт микроконтроллера. Далее оператор попадает в обычный диалог, только по сети. Ну что тут сказать? Во первых, там тоже стоит отдельный микроконтроллер и устройства получаются совсем не дешовые (Статьи про самодельный модуль [2] и про модуль Tibbo [3]). Для простенькой задачи «поменять/прочитать один параметр» этого может и вполне хватит. Минусов тоже много — единственная сессия, фиксированный протокол — трудно, например, прикрутить SSL если его нет, сложности конфигурирования самого преобразователя, например сменить ему IP адрес или порт и т.д.

Другой вариант — это микроконтроллеры с Etherent на борту, но они как правило, имеют только MAC уровень и требуют внешнего чипа PHY (KS8721BL, DM9161A, RTL8201). Соединение с таким чипом, MII или RMII как миниум требует внешних пинов. Для соединения PHY с LAN требуется еще впаять трансформатор или MagJack. Таким образом, по «числу компонентов» выигрыша тут не получается. Удивительно, но внешние Etherent PHY — довольно дорогие чипы, несколько долларов за корпус. Но примерно столько же стоит весь чип от WIZnet целиком, кремний-то в массовом производстве стоит копейки. Да, трансформатор для WIZnet тоже потребуется, но значительного выигрыша от встроенного MAC-контроллера по цене не получится. Второе: програмная поддержка MAC/PHY довольно сложна и объёмна. Например, для STM32Fxx7 исходные коды Ethernet драйвера занимают примерно 100К текста на C. (статья про PIC-и с Ether [4]). Кроме драйвера Etherent нужен еще сам стек TCP/IP (LwIP [5] или uIP [6]). Кроме размера не стоит забывать и о скорости исполнения (хотя… STM32 уже по скорости превышает первый Pentium и про ограничение производительности можно забыть).

Но если ли преимущества «полного» программного IP-стека на микроконтроллере? Конечно есть. Рассмотрим их во второй части, а пока продолжим.

Третий вариант — это глубоко любимый «эмбеддерщиками» чип SPI Ethernet контроллера Microchip ENC28J60 [7] (и чуть менее известный Silabs CP2200 [8]). Обратите внимание, это именно контроллеры Ethernet, а не TCP/IP сопроцессоры. Все что умеет чип — принимать и получать Etherent фреймы. То есть, стек TCP/IP все равно придется делать самим. Да, стеков есть несколько готовых, от замечательных небольших [9] до классических LwIP и uIP.

Но все же, такое решение скорее напрямую конкурирует со встроенным MAC контроллером, да и цена на чип — те же несколько долларов и около 5..7$ за готовый модуль (плата с чипом, трансформатором и гнездом RJ45) на ebay/aliexpress. Так что вернемся к продуктам фирмы WIZnet.

WIZnet: срединный путь.

Первое устройство W3100 было выпущено довольно давно, в 2001 году. Это был полноценный TCP/IP IOcP (сопроцессор), который предлагал некий средний путь между COM-портом и MAC-контроллером, реализуя идею TCP/UDP «сокетов» внутри чипа. Физически же это был не очень удобный двухчиповый набор MAС/PHY и настоящая популярность в среде «ардуинщиков» (AVR) и «пиководов» пришла к устройству W5100 [10]. Достаточно сказать, что «официальный» Arduino Ethernet Shield [11] собран именно на W5100.

С тех пор прошло немало времени и стали заметны недостатки W5100: чип довольно сильно греется, скорость сети всего 10Mbit/s, чип имеет несколько (документированных в Errata) глюков, корпус довольно большой из за наличия параллельной шины, несколько нетривиальная реализация SPI. Неудивительно, что вскоре WIZnet представила следующую модель: W5200 [12]. Этот чип научился работать на 100Mbit, засыпать и экономить электричество, лишился параллельного подключения, в нем остался чисто SPI, что резко уменьшило число ног. (Для поддержки параллельной шины у него есть «братик» W5300).

Внедрение и освоение W5200 пошло на ура! и продолжается до сих пор, выпускаются модули (начиная от «родного» WizNET WIZ820io [13]) и кончая различными ардуиновскими шилдами, желающие могут легко их найти. Например, чуть менее «официальный» Ethernet Shield V2.0 [14] из проекта Seeeduino или Ethernet Shield for Arduino [15] от Dfrobot. А тут большой список [16] других модулей (список реально большой, мотаем вниз).

И вот наконец, в октябре 2013 WIZnet анонсировала [17] новый W5500 [18] о котором собственно и планировалось рассказать в этой статье (извините за такое затянувшееся предисловие). Чип получил чуть более удобный
для ЛУТ-самодельщиков корпус 48LQFN, быстрый «пакетный» SPI и Cortex M0 внутри, что позволило уменьшить
техпроцесс и потребляемую мощность. В целом же чип выглядит как «W5200 на стероидах». Сравнение W5200 и W5500 [19].

Следом WizNET выпустила модуль WIZ550io [20] (там же есть и схема), а чтобы не остаться в стороне от «ардуиномании» вскоре сама же WIZnet выпустила еще и Arduino Shield [21] (это просто пассивный переходничок с Arduino на WIZ550io).

Но давайте не будем [22] рассматривать Arduino, это сделают и без нас (например прямо тут, на Хабре: Ethernet термометр на основе Arduino [23] и т.д.) а попробуем прикрутить W5500 к какому-нибудь популярному микроконтроллеру, например к тому же STM32. Даже сама компания WizNET в курсе этого замечательного семейства и выпускает модуль W5200E01-M3 [24] правда на предыдущем W5200 ( STM32F103C8 и FT232RQ для USB2Serial). Что-то мне подсказывает, что вскоре выйдет модуль на STM32 + W5500 и не один…

Да, пока не забыл, в марте 2014 на Circuitcellar был объявлен конкурс Connect The Magic [25] (до августа 2014) на разработку с использованием W5500, а WIZnet скинула [26] цены на чипы и модули (купить [27]). В конкурсе можно выиграть до 15.000$. Подробности на cайте, там же есть отличная статья [28]. Дерзайте! Надеюсь, этот пост хоть кому нибудь поможет (С вас процент. Шутка.)

Во второй части (если я её допишу...) мы попробуем прикрутить W5500 (а точнее WIZ550io) к маленькой отладочной плате [29] от компании Shenzhen LC Technology Co.,Ltd. и выиграть 15.000$. Платки продаются [30] на Aliexpress по 7.99$ и даже упоминались несколько раз на Хабре.

Подключаем новенький чип от WIZnet: W5500. IP для маленьких вещей. Часть 1

P.S. Автор не имеет никакого отношения к уважаемой фирме WIZnet, но постепенно список ссылок по W5500 разросся и превратился в такой вот хабрапост.

Автор: alecv

Источник [31]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/umny-j-dom/60109

Ссылки в тексте:

[1] Serial2Ethernet: http://shop.wiznet.eu/serial-to-ethernet/s2e.html

[2] самодельный модуль: http://habrahabr.ru/post/137974/

[3] модуль Tibbo: http://habrahabr.ru/company/scancode/blog/206920/

[4] статья про PIC-и с Ether: http://habrahabr.ru/post/138081/

[5] LwIP: https://en.wikipedia.org/wiki/LwIP

[6] uIP: https://en.wikipedia.org/wiki/UIP_%28micro_IP%29

[7] Microchip ENC28J60: http://www.microchip.com wwwproducts/Devices.aspx?dDocName=en022889

[8] Silabs CP2200: http://www.silabs.com/products/interface/ethernetcontrollers/pages/default.aspx

[9] небольших: http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en022889

[10] W5100: http://www.wiznet.co.kr/Sub_Modules/en/product/Product_Detail.asp?cate1=5&cate2=7&cate3=26&pid=1011

[11] Arduino Ethernet Shield: http://arduino.cc/en/Main/ArduinoEthernetShield

[12] W5200: http://www.wiznet.co.kr/Sub_Modules/en/product/Product_Detail.asp?cate1=5&cate2=7&cate3=56&pid=1144

[13] WIZ820io: http://www.wiznet.co.kr/Sub_Modules/en/product/Product_Detail.asp?cate1=&cate2=&cate3=&pid=1161

[14] Ethernet Shield V2.0: http://www.seeedstudio.com/wiki/Ethernet_Shield_V2.0

[15] Ethernet Shield for Arduino: http://www.dfrobot.com/index.php?route=product/product&product_id=1028

[16] большой список: http://wizwiki.net/wiki/doku.php?id=oshw_using_wiznet:ethernet

[17] анонсировала: http://www.prweb.com/releases/2013/10/prweb11272428.htm

[18] W5500: http://www.wiznet.co.kr/Sub_Modules/en/product/Product_Detail.asp?cate1=5&cate2=7&cate3=77&pid=1193

[19] Сравнение W5200 и W5500: http://wizwiki.net/wiki/doku.php?id=products:w5500:migration

[20] WIZ550io: http://wizwiki.net/wiki/doku.php?id=products:wiz550io:allpages

[21] Arduino Shield: http://wizwiki.net/wiki/doku.php?id=osh:ioshield-a:start

[22] не будем: http://habrahabr.ru/post/191054/

[23] Ethernet термометр на основе Arduino: http://habrahabr.ru/post/110610/

[24] W5200E01-M3: http://www.wiznet.co.kr/sub_modules/en/product/Product_Detail.asp?cate1=5&cate2=7&cate3=56&pid=1151

[25] Connect The Magic: http://circuitcellar.com/wiznet2014/

[26] скинула: http://circuitcellar.com/cc-blog/wiznet-announces-wiz550io-w5500-discounts-at-eelive/

[27] купить: http://shop.wiznet.eu/io/io-modules/wiz550io-ct.html

[28] статья: http://circuitcellar.com/wp-content/uploads/2014/01/WiznetPrimer2014.pdf

[29] отладочной плате: http://www.lctech-inc.com/Hardware/Detail.aspx?id=0172e854-77b0-43d5-b300-68e570c914fd

[30] продаются: http://www.aliexpress.com/store/product/ARM-Cortex-M3-STM32F103C8T6-STM32-core-board-development-board/524881_1319507014.html

[31] Источник: http://habrahabr.ru/post/220723/