Каковы плюсы и минусы использования Wiznet W5100 или Microchip EncX24J600?
Это немного сложно объяснить.
Мой вопрос касается производительности стека Microchip TCP по сравнению с ядром Wiznet TCP / IP на чипе. Также о расходах ($$).
Например: с Wiznet, микроконтроллер будет иметь меньше обработки, тем самым освобождая микроконтроллер для выполнения других задач. Но я думаю, что это будет зависеть от того, на каком слое вы работаете.
Возможно, с помощью стека Microchip TCP у меня есть ограничения на периферийные устройства, которыми я могу управлять. Возможно, мне придется использовать второй микроконтроллер.
Итак, я надеюсь, что я объяснил вам лучше, чтобы вы помогли мне сделать лучший выбор.
Ответы:
W5100 имеет ядро TCP / IP на чипе. При использовании устройств Microchip ENC пользователь должен сам реализовать стек TCP / IP на MCU, который связан с ним. Это довольно легко с подходящей PIC, так как бесплатные микросхемы TCP / IP доступны от Microchip.
Преимущество W5100 заключается в том, что его можно использовать практически с любым MCU, но для запуска стека TCP / IP, если используется чип ENC, требуется довольно мощное устройство.
Конечно, другой вариант - использовать MCU со встроенным MAC и PHY. Микрочип делает несколько хороших, и есть варианты ARM с ними также.
источник
Компания, в которой я работаю, использует PIC18F97J60. Это 8-битный микропроцессор со встроенным MAC и PHY, который очень похож на ENC24J60. Если вы планируете использовать микропроцессор PIC, вы можете использовать стек Microchip TCP / IP. Этот стек обеспечивает все вплоть до прикладного уровня. Если вы используете процессор без микрочипа, я думаю, что вы можете использовать только драйверы ENC24J60. Тем не менее, похоже, что Wiznet интегрирует транспортные уровни в аппаратное обеспечение, а не только в MAC и PHY. Однако они оставляют за разработчиком возможность реализовывать прикладные уровни, такие как Telnet, FTP и HTTP.
источник
Возможно, вы захотите рассмотреть другие чипы тоже.
Что такое хороший микроконтроллер для приложений Ethernet?
источник
Я знаю, что он старый, но в прошлом году я сделал это с пряностями, поэтому подведу итоги для пользы других людей.
Во-первых, я бы не стал использовать W5100, но его брата W5500 , который в основном является ревизией и использует SPI намного лучше. Я также хотел бы рассмотреть возможность переключения на часть с DMA, особенно если вы хотите сделать это только UDP.
В обоих случаях вы, вероятно, будете использовать стек TCP / IP Microchip MLA, Wiznet предлагает патчи для этого.
К сожалению, все варианты стека Microchip TCP / IP, по-видимому, блокируют связь через SPI (без DMA, без расширенного режима буфера) . Я попытался сократить его только до UDP и обрезать всю часть микрочипа (используя непосредственно драйвер wiznet и переписывая его в процессе).
Я также согласен с MJH в том, что PIC18F97J60 с поддержкой DMA является лучшим выбором, чем более дешевый PIC с ENC (если только у вас не очень высокие цифры), но я был несколько разочарован тем, что TCP / IP не использует преимущества J60, придерживаясь этого. до наименьшего общего знаменателя.
Преимущество использования IP-части вместо Ethernet-части состоит в том, что вы можете ограничить сокет определенным портом, и вам не придется передавать какой-либо несвязанный трафик по каналу SPI. W5500 имеет 4 КБ на сокет, и я использую отдельные сокеты для приема и отправки, чтобы максимизировать использование буфера.
Мой текущий стек UDP реагирует только на прерывание wiznet и не загружает данные полезной нагрузки, в которых он не нуждается. Я использую это UDP, хотя на основе пакетов (без потоков), и использую широковещательные сообщения на портах для отправки (чтобы избежать необходимости кэшировать данные MAC для целей ARP, хотя в ретроспективе это, возможно, не лучшая оптимизация).
На 60MIPS dspice двусторонняя передача (получение небольшого пакета, ответ небольшим пакетом) занимает около 100-120us, из которых около 10-12us - это время процессора в трех разных блоках (pre-receive (3-5us), post-receive и presend (В зависимости от нас 5-7) и после отправки (2us). После каждых 2 килобайт я должен выполнить какое-то обслуживание, которое составляет около 40us времени стены и 5us времени процессора.
Короткие команды выполняются с использованием расширенного буфера. Более длительное время выполняется с использованием DMA (в dspice DMA требуется 2 бита времени между байтами (или словами в 16-битном режиме), расширенный буфер - нет).
Набор (пока) не открыт, но если sb нужны указатели, пожалуйста, ответьте в комментариях. Я планирую портировать стек на pic32 (мк) в следующем году.
источник