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

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



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

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

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

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


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

    Самый-самый простой способ «выхода в сеть» для микроконтроллеров — это разного рода преобразователи COMпорт-в-Telnet, Serial2Ethernet иногда называемые еще Реверсивный Telnet. В этом случае преобразователь «ловит» telnet сессию и «загоняет» ее в обычный COM-порт микроконтроллера. Далее оператор попадает в обычный диалог, только по сети. Ну что тут сказать? Во первых, там тоже стоит отдельный микроконтроллер и устройства получаются совсем не дешевые (Статьи про самодельный модуль и про модуль Tibbo). Для простенькой задачи «поменять/прочитать один параметр» этого может и вполне хватит. Минусов тоже много — единственная сессия, фиксированный протокол — трудно, например, прикрутить 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). Кроме драйвера Etherent нужен еще сам стек TCP/IP (LwIP или uIP). Кроме размера не стоит забывать и о скорости исполнения (хотя… STM32 уже по скорости превышает первый Pentium и про ограничение производительности можно забыть).

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

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

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

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


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

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

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

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

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

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

    Кстати, в марте 2014 на Circuitcellar был объявлен конкурс Connect The Magic (до августа 2014) на разработку с использованием W5500, а WIZnet скинула цены на чипы и модули (купить). В конкурсе можно было выиграть до 15.000$. Подробности на сайте, там же есть отличная статья.

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


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

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 20

      +1
      Когда речь заходит о Ethernet и ARM — встает вопрос, а не взять ли тот же STM32 со встроенным Ethernet? :-)
      Да, в простейших случаях там будет 10 Мегабит — но для применений уровня «термометра» этого должно быть вполне достаточно при меньшей цене.
        +5
        В STM не реализован phy уровень, так что +1 микросхема всё равно нужна. А если эта штука из статьи сможет как то облегчить разработку, то почему бы и не взять её?
        +2
        А как оно работает? Просто по SPI передаем в этот чип что хотим передать, кому, по какому протоколу и он сам все делает? Умеет ли DHCP получать? Может ли быть сервером а не клиентом? Какие данные отдаются в микроконтроллер таком случае?
          +2
          Я напишу про wiznet 5100, который использую около года.

          * В моем случае SPI на ардуино мега.
          * По DHCP умеет подключиться.
          * Умеет быть и сервером и клиентом. Я лично не докопал как запустить одновременно и клиентом и сервером. Может 5500 будет проще. Надо пробовать.

          «Код» тут найдете. Там оно как серер — пингует гугл и пишет лог/показывает % прошедших пакетов за последний час. http тоже пробовал, есть и примеры.

          Но не докопал как сделать, чтобы настраивать это дело по http:// и чтобы дальше пинговало. Может кто подскажет — возможно ли впринципе на 5500…
            +1
            Принципы работы планировалось пояснить во второй части, но непонятно, нужно ли пересказывать документацию, или сразу в бой…

            Если кратко, то оно работает так: По SPI осуществляется доступ к «регистрам». Некоторые регистры влияют на весь чип, типа ifconfig, можно установить IP адрес и т.д. Отдельная группа регистров управляет «сокетами». Таких групп — 8 штук, т.к. чип поддерживает всего 8 сокетов (W5100 — всего 4 сокета). Каждому сокету можно делать open/close/listen. Также есть «буфера» — у каждого сокета RX и TX, обычно по 2Кб. В буферах лежат «чистые» пользовательские данные для пересылки по сокетам.

            DHCP поддерживается, есть исходники с примером. Сокет номер 0 можно переключить в RAW режим и общаться с DHCP по нему.
              0
              Не уверен, как конкретно в этом чипе, но большинство девайсов такого рода — SoC на MIPS с Linux на борту.
                0
                Не такого рода этот девайс. Он похож на ENC28J60. Грубо говоря, в его регистры ты записываешь ethernet-пакет и по команде выплевываешь через RJ-45.
              +3
              Чип Atheros AR9331 стоит 5 баксов и имеет 5 Ethernet интерфейсов на борту (это помимо WiFi, USB, UART и т. п.), плюс сразу 400 МГц мипс процессор. Клевая штука! :-)
                0
                Чип Atheros AR9331 — это устройство совершенно другого класса, ближе к Rasberry PI. Ему еще нужен внешний DRAM мегабайта 64 и флеша мегабайт 16 а то и 256 под Linux. Не считая трансформаторов, коннекторов и ШИМ питания. На коленках все это запаять проблематично, никто же не паяет Rasberry :). Скорее придется «дербанить» WiFi точку доступа.
                  +1
                  Вообще, решение на AR9331 лежит где-то между малиной и микроконтроллерами. Если нужно что-то совсем сложное (рилтайм обработка видео) — приходится смотреть в сторону производительных АРМов (причем малина — не самый лучший вариант, если нужно тиражируемое решение). Если сеть не нужна — микроконтроллеры в большинстве случаев рулят. А вот если задача промежуточная (нужна сеть, но не нужна высокая производительность), то по цене/качеству Атерос рулит просто не по-детски.

                  Если вы хотите заюзать STM в задачах с Ethernet, то, скорее всего, без внешней DRAM и FLASH тоже не обойдетесь… В любом случае решение по цене будет сопоставимым.

                  А «дербанить» точку доступа не обязательно. Есть готовые платы на AR9331, а мы для себя так вообще свою разработали. Даташит валяется в открытом доступе. Софт открытый. Себестоимость решения — 12 баксов (на тираже, понятно).
                    0
                    Согласен, что граница тут размытая, но пост был написан исходя из идеи — уйти «вниз» по шкале цены как можно ниже (до 0.01$??), там не зря запрос на хаб «Интеренет вещей». Представим себе ВНЕЗАПНО ТЫСЯЧИ мелких контролеров везде, т.е. «ошустрение» по Лему. :) Сейчас порт Etherent на коммутаторе стоит 3..5$ и еще столько же — витая пара с прокладкой по кабель-каналу. Хотелось бы устройство загнать в эти цены.

                    Для STM32F4x7 с MAC Ether LwIP помещается, внешняя память не нужна. но нужен чип PHY, трансформатор и разъем.

                    Мелкие Linux-устройства я и сам люблю, например Carambola-2 на AR9331 — 33 евро платка без корпуса и БП, Точка доступа TP-Link/D-Link стоит уже столько же, плюс блок питания и пластиковая коробочка. С удовольствием посмотрю на ваш проект.
                      +1
                      Дык, «тысячи контроллеров везде» — это все-таки не провода. Поэтому нас у AR9331 как раз WiFi куда больше интересует. :-)

                      «Внешняя память не нужна» — это если задачи совсем примитивные. Потому как сетевые заморочки выжирают всю встроенную память, а надо же еще и что-то делать по основному направлению…

                      Литовцам, похоже, «очень деньги нужны»(с). На тираже в 1000 шт производство одной карамболы обходится в 12-13 баксов, мы это точно знаем. :-)
                      У нас свои платы уже готовы (первые 20 штук), завтра должны замонтировать, к концу недели, надеюсь, будут в Москве. На хабре обязательно похвастаемся, если что.
                0
                Очень хочется чтобы разработчики 5100 переехали севернее 38 градуса северной широты.
                  +1
                  А умеет ли WIZ550io сам по себе отвечать на пинг?
                  То есть на офисе ему прошить ип, потом подключить где-нибудь патч-кордом в «тупой свитч», запитать, и иногда пинговать, проверяя тем самым работоспособность свитча.

                  Есть еще какие-то похожие платки не дорогие для такой задачи?

                    0
                    Да, все W5xxxx самостоятельно отвечают на ICMP ping. После RESET-а там прописывается адрес 192.168.0.1, так что надо быстро-быстро его поменять.
                      0
                      Нет возможности энерго-независимо прописать ип?
                        0
                        Standalone — нет. Можно поставить 8-ногую AVR Tiny в SOIC корпусе. При минимальных усилиях можно еще какую-нибудь температуру снимать с DS18S20.
                        0
                        А умеет автономно по DHCP получить ип? Или это надо софтово обрабатывать через SPI?
                          +1
                          Автономно — не умеет, нужна программная поддержка. Исходники есть на сайте производителя.
                        0
                        Пинговатся могут и упомянутые ENC28J60 и W5100. Цена ENC28J60 более радует.

                      Only users with full accounts can post comments. Log in, please.