Comments 44
В документации отсутствует бит CLKSOURCE из CSR. Я так и не смог понять, откуда идет частота при 0 в этом бита.
В даташите по SysTick : "Clocked internally by the system clock or the system clock/2."
О, спасибо. Не нашел сам. В документации на W7500P вообще сказано, что даже без этого бита идет на systic CPU_CLK/8. Что, как выяснилось, неправда.
А можно ссылку на документ?
Однако времена шли и появлялось все больше дешевых микроконтроллеров, которые содержали внутри себя MAC уровень, требуя лишь снаружи микросхему PHY. А для ленивых производитель давал готовые решения по интеграции в проект LWIP со стороны софта и демо платы и примеры разводки PHY под свой микроконтроллер со стороны железа. Изредко появлялись чипы с PHY прямо на кристалле микроконтроллера.
Микроконтроллеры PIC18F67J60 и PIC18F97J60 со встроенным PHY появились давно.
PIC32MX795F512L и аналогичные из этой серии с МАС на борту так же появились давно.
Стек протоколов достаточно хорошо описан и документирован, были курсы по применению ТСР стека и данных микроконтроллеров. Информации очень много. Легко сделать веб интерфейс настроек своего устройства и организовать обмен с сервером. А легко ли сделать ВЕБ интерфейс на данном МК? ВЕБ с которого настраивают и управляют устройством?
По всей видимости данный микроконтроллер задумывался исключительно как конвертер интерфейсов ETH <-> SPI/I2C/UART/PWM.
Уже было подобное , называется X-port , даже вмонтированное в разъем RJ45, но не взлетело.
Применение в качестве ETH <-> SPI/I2C/UART/PWM это совсем маленький круг задач.
Если только интегрируют в экосистему Ардуино, может тогда что то получится. Но если будет сложно делать ВЕБ управления своим устройством - то точно никому не нужно.
Данные структуры отличаются от того, что можно составить по документации. Так как в документации множество ошибок.
Признание этого факта , а также совмещение на кристале МК , которые сложно настраиваются, отталкивает от использования данного МК в своих проектах.
Честно признаться, W7500 мне на глаза попался случайно. Когда я в очередной раз полез за документацией на W5500 на сайт производителя спустя долгое время после последнего использования. Там наткнулся на него.
Микроконтроллеры PIC18F67J60 и PIC18F97J60 со встроенным PHY появились давно.
PIC32MX795F512L и аналогичные из этой серии с МАС на борту так же появились давно.
Стек протоколов достаточно хорошо описан и документирован, были курсы по применению ТСР стека и данных микроконтроллеров. Информации очень много. Легко сделать веб интерфейс настроек своего устройства и организовать обмен с сервером.
Даже не слышал о них. В основном только что "PIC уже мертв". Но, думаю, стоит и с ними поработать для расширения кругозора.
А легко ли сделать ВЕБ интерфейс на данном МК? ВЕБ с которого настраивают и управляют устройством?
Как я и сказал в статье, если нет неприятных ощущений от использования в своем проекте неизвестного, небрежно выглядящего, кода, то можно поднять WEB сервер с HTTP достаточно просто.
Вообще, если бы я просто использовал готовую библиотеку и Keil, то всей этой статьи, по сути, и не появилось бы. Потому что используешь функции, в которых непонятно что творится и достаточно. Если бы применял на работе и были бы сильно сжатые сроки, то так бы и делал. А тут, когда есть возможность разобраться, не стал упускать возможности.
Уже было подобное , называется X-port , даже вмонтированное в разъем RJ45, но не взлетело.
Тоже не слышал. Спасибо. Ознакомлюсь.
Применение в качестве ETH <-> SPI/I2C/UART/PWM это совсем маленький круг задач.
Вынужден согласиться. Я вижу тут дополнительный логгер в flash/eth и конвертер интерфейсов. Еще можно через PWM чем-то управлять.
Если только интегрируют в экосистему Ардуино, может тогда что то получится. Но если будет сложно делать ВЕБ управления своим устройством - то точно никому не нужно.
Сложно будет... В отличии от Arduino (atmega, имею ввиду), тут очень так себе периферия. Но можно и ее хотя бы. Сейчас делать WEB на нем относительно легко с библиотеками. Я только глянул код готового проекта. Но оно... Скажем начистоту. Достаточно медленное. 48 МГц не могут покрыть канал в 100 мегабит. Да и внутри там очень много overhead-а. Копирование вот 1.5 кб части TCP запроса происходит процом, а не DMA. Хотя в это время можно было бы с другого сокета разобрать пакет пришедший. В общем оно требует доведения до ума. Или смириться со скоростью.
Признание этого факта , а также совмещение на кристале МК , которые сложно настраиваются, отталкивает от использования данного МК в своих проектах.
Я его и не защищаю. Я тут тоже пользователь. Можно использовать библиотеку и тогда все станет значительно легче. Она вроде на вид легче чем тот же HAL у ST. Кстати отмечу, что для работы WEB сервера с DHCP очень сильно используется куча. Имею ввиду используется библиотекой. Так что если вам нужно что-то надежное, то все равно придется переписывать...
Так что если вам нужно что-то надежное, то все равно придется переписывать...
Да , многое переписано. В частности сделана возможность работы с ВЕБ которы хранится в программной памяти проца и во внешней памяти. Сделана работа с динамическими переменными для облечения совместной работы над ВЕБ интерфейсом. Выпущено около 5-8 типов устройств небольшим тиражом на PIC18F67J60 и PIC18F97J60 со встроенным PHY . Работают в ответственных местах. В основном конференц залы топ уровня. Выполняемые задачи: организация различных интерфейсов управления оборудованием через ТСР. Веб используется в основном для настройки и проверки работоспособности.
Сейчас уже 8 устройств в серийном производстве на PIC32MX795F512L с очень достойным веб интерфейсом и широким функционалом по работе железа.
Нельзя сказать что "PIC уже мертв" - просто для самодельщиков он был немного дороже. Но для серийного производства разницы в цене практически нет. А сейчас, когда тот же STM стали клепать все кому не лень, появилось много клонов , которые частично совместимы, и стало много сообщений о том что, что то не работает в уже налаженном устройстве. А дальше будет еще хуже по этой части. Что нельзя сказать о ПИКах.
Да. Подделок PIC еще не видел. STM видел, ATMEGA видел. Про переписанный код. Как понимаю, все закрыто? Посмотреть можно только устроившись в компанию?)
TCP/IP Microchip стек открыт много примеров как с ним работать. Есть уроки с Masters. Дружелюбное сообщество. Так ка вы уже в теме TCP/IP и микроконтроллеров - то проблем совсем не возникнет.
Первоначально можно взять что то готовое и проверить в работе, но что бы сделать под свои задачи - то лучше брать стек 5 версии , он функциональный , стабильный , нет глюков и в нем нет лишнего мусора , который придется вычищать.
Применение в качестве ETH <-> SPI/I2C/UART/PWM это совсем маленький круг задач.
Я бы поспорил с этим утверждением. Огромное количество вполне работоспособных устройств было произведено на ENC28xx.
Вообще, отличие ETH <-> SPI от МК со встроенным MAC только в скорости.
Для грамотно написанных Web интерфейсов скорости SPI будет достаточно.
Там просто еще сверху свой протокол есть небольшой. Который тоже съедает немного. Ну и ограничение хоть и 80, но я выше 30 проверенных официально не использовал у W5500.
отличие ETH <-> SPI от МК со встроенным MAC только в скорости
BOM и футпринт еще.
Это понятно, но как раз в этом случае мост зачастую получается выгоднее. Цены на PIC покусываются, и у них много ног, а к SPI можно подцепить любой недорогой МК с небольшим количеством ног.
С этим не соглашусь . Цены на ПИКи меньше чем цена вашего любимого мк и той же ENC. PIC18F67J60 в tqfp корпусе места занимает немного. Проще разводка платы.
Вот пример универсального моста RS232 RS485 и ИК управления. Размер платы 70х45мм.
Не хочется разводить холивар, но с предвзятым отношением к ПИКам имеет место быть.
Автору - респект. Проделал работу , оценил работу W7500 , сделал обзор . Теперь когда нужно будет выбирать - то уже есть информация. И автор прав МК нужно выбирать под решаемые задачи для обеспечения функционала и надежности изделия в целом.
Предвзятого отношения к ПИКам нет. Возможно не совсем адекватные сейчас цены, но розница : PIC18F67J60 = 500р KSZ8851 = 200р плюс любой МК 100р
Насчёт компактности:
Это китаец с KSZ8851 и Atmel на борту. Оба чипа производства Microchip.
Возможно не совсем адекватные сейчас цены,
Но это розница. В серии при заказе на фабриках Китая, ПИКи выросли в цене меньше STM. Недавно столкнулись при начале производства нового изделия.
Вот аналогичные https://www.olimex.com/Products/PIC/Development/PIC-MINI-WEB/
Есть даже вмонтированные в корпус разъема DB25 https://www.chipdip.ru/product/pic-micro-web
Есть более дешёвый вариант платы на Али на W7500 с внешним PHY. Ищется по "FS100P" https://a.aliexpress.com/_ASERZ6
Спасибо, интересно было прочитать какие тараканы в голове у нового МК.
Как я писал в статье, просто для расширения кругозора и строчки в перичене МК в резюме. Про ESP32. Очень не люблю, когда нет возможности все сделать на регистрах без закрытых библиотек. Это касается как домашних проектов, так и ответственных на работе. Если делать что-то, от чего не зависит жизнь-здоровье и поломка или перезагрузка чего не принесет большой проблемы, то почему бы и не использовать с закрытым кодом)
В своих проектах стараюсь пройти все круги ада. Потому что потом на работе мне становится намного легче работать.
Этот чип я выбрал просто для ознакомления. Цели просто решить задачи не было.
В свое свободное время я стараюсь изучать как можно больше разных мало кому известных архитектур и решений в целом. Вдруг среди них найдётся наиболее подходящее решение под проект, который мы будем делать в следующий раз.
А теперь про esp32. У нее закрытый ble и wifi стек. Не очень хорошая документация на периферию в уровне регистров и специфичные средства разработки. Использовать данный SoC в продакшен я не позволю. Почему? Часть причин описал выше. Но есть еще.
Сроки поставки и надежность производителя не ясны.
Нет возможности в случае ошибки в библиотеках оперативно починить.
Не определено время гарантированной поддержки.
Крупные разработчики обычно гарантируют 5/7/10/15 лет поддержки своих микроконтроллеров. Некоторые уже реально более 20 лет поддерживают. А этот чип пока что остается на «поиграться».
И разработчик, и производитель - вполне себе надежные и авторитетные компании (если вас не смущает по какой-то причине тот факт, что они из Китая).
Для меня порог 10 лет. После прохождения 10 лет я начинаю закладывать в устройства прошедшей порог фирмы микроконтроллеры. То, что она в Китае, не страшно. Опять же при условии, что есть надежные поставщики. То есть, тот же Элитан должен их поставлять.
Думаю, что вы в этом пункте ошибаетесь; с другой стороны, популярность чипа и активно ведущаяся открытая разработка - хорошая гарантия отсутствия критических ошибок.
Вы, неверное (могу ошибаться) не разрабатывали оборудование, которое требует сертификации или используется там, где может быть причинен вред здоровью или жизни человека. В таких проектах обязательным условием ставится наличие полного перечня документации на всю внутреннюю подноготную. В особо тяжелых случаях требуется даже проверять внутреннюю структуру чипов на соответствие заявленного. Именно тут появляется Миландр и остальные российские микроконтроллеры (которые обязуются гарантировать то, что продают и заявляют в документации).
Тут я точно сказать не могу, но можно связаться с представителями https://www.espressif.com/ и выяснить, как обстоит вопрос.
Тут обычно решается вопрос через поставщика. Дается "приватные" контакты и через них уже идут все уточнения. Не только в российских компаниях.
Мне кажется, "за вас" говорит обычная для профессиональных "микроконтроллерных" разработчиков неприязнь к "ардуинщикам" ;)
Буду откровенен. Неприязнь есть. НО. Рациональность важнее. Если проект выглядит идеально с Arduino внутри, то я ее поставлю. Пример: есть мелкосерийная партия ДВС-ов для мелких аппаратов. Внутри контроллер ДВС на открытом Arduino проекте. Оно не плохо так продается. То есть процесс интеграции выглядил просто как разводка платы под нужные габариты, смена пара ножек в коде, а далее уже все ок. Хотя у Arduino есть весомый плюс над ESP32. Он на AVR. А на AVR чипы есть исчерпывающая документация. Так что даже если что-то в библиотеке или проекте бы пошло не так, то можно залезть и посмотреть, почему. А в случае с ESP, если есть ошибка в модуле, на который нет исходников (например, на дергается нужный бит. Или флаг прерывания не сбрасывается при каких-то условиях), то ты единственное что можешь сделать, так это написать разработчикам с просьбой разобраться в произошедшем.
Для массового применения без последующих обновлений можно хоть 4-хбитки лепить... Я просто работаю там, где требуется долгая поддержка. В районе 10 лет. И там важно. Ну и речь про авиацию. Так что увы.
А вот на фрилансах я даже ESP8262 закладывал. Было норм. 1 раз выпустили и все)
Про переделку и продажу деталей. Чем они более широкого уровня, тем дороже и габаритнее. Так что врят ли. С другой стороны, сейчас материнки на те же телефоны и так продают как один компонент.
Теперь про то, что вы реализовали функционал намного быстрее, чем программиста, который писался сам. Тут есть один нюанс. Тот программист, который писал все это сам, если написал все правильно, то оно будет надёжнее, и поддерживать это будет проще. Такой подход я одобряю. Да, он дольше по времени. Да, он выходит дороже. Однако. Такое устройство можно будет поддерживать, на протяжении всей жизни проекта. Или пока не закончится поддержка чипа, на который был построен проект.
Опять же, напомню. Что данный чип, который вы так любите, неплохой. У него просто своя область применения. Он прекрасно себя зарекомендовал как средство для прототипирования. Также, как Arduino. Он прекрасно подходит для того, чтобы собрать хоть какой-то более-менее работающий прототип в короткие сроки. С этой задачей он справляется прекрасно. Но использовать его вместе с его экосистемой в реальных устройствах нельзя.
Однако, если нужно выпустить устройство, поддержка которого ограничена выпуском начальной прошивки, а дальнейшая судьба проекта не важна, или поддержка будет производиться очень на коротком сроке, при этом устройство не представляет опасности для жизни человека, тогда применения данного чипа, будет весьма оправдано.
Вы, видимо, неправильно мой пример поняли, ну, или я плохо объяснил. Там дело и состояло именно в том, что был выбран неподходящий контроллер, много "велосипедного" кода разработчику пришлось писать самому. Понятно, что "все мы человеки", и даже "изобретая велосипед", пусть и по всем спекам, можно допустить ошибки.
Да, я вас не так понял. Если чип был выбран неверно, то это уже другой диалог. Часто вижу картину, когда вместо специально спроектированного под задачу чипа ставят какой-нибудь stm32f415. Просто потому что на нем все делали. Иногда это прокатывает с небольшими издержками. Иногда все оканчивается плачевно.
Собственно, для чего я сделал тогда свое демо: только для того, чтобы показать, что утверждения разработчика о "глючной Windows" и "некорректной имплементации стека BLE" не имеют под собой оснований. И ему (точнее, компании), "скрепя сердце" пришлось искать и фиксить баги в своем коде.
Ошибки и глюки вполне могут быть. Все же проекты тяжелые. BLE стек вообще считается самым тяжелым вроде как из существующих. Даже тяжелее WiFi. Но ошибки обычно на твоей стороне) Так что да.
Да, когда мы запросили фичу апдейта фирмвари OTA, они нам дали estimate в $200K и 6 months.
А вот такое надо еще на этапе планирования проекта выяснять. Если есть что-то закрытое внутри от производителя, то все может пойти по п***е. Сталкивались с таким. Было неприятно. Пришлось чип менять. Зато "сэкономили" и "не потратили время" на написание своих драйверов. Зачем? Ведь у производителя есть готовое...
Правда, могу откровенно доложить, все это было, в конечно итоге... до "оппы" - на самом деле, никому не было до этого никакого особо дела (поскольку бабки и время тратились не их, а огромной транснациональной корпорации). Вот так обстоят дела в "развитом капитализме" :D
Это тема отдельной дискуссии...
Ну и в домашних проектах я люблю "лезть в бутылку". И заниматься "байто*бством". Мне просто нравится. На работе же делаю все ровно на том и так, как это требует ТЗ, в котором указана степень ответственности проекта, срок поддержки и прочие важные параметры.
вот ссылочка на X-port . все уже вмонтировано в разъем https://www.lantronix.com/products/xport/
Вообще, недорогих решений МК+PHY в одном корпусе очень мало. По PIC - ценник далеко не гуманный.
Сейчас с развитием IOT такие решения были бы востребованы.
Сам до этого применял связку stm32f107+RTL8201.
Сейчас присматриваюсь к KSZ8851+любой МК, и esp32+PHY.
Прошу поделиться, если есть недорогие решения для непотокового LAN.
использую для сложных проектов PIC32MX795F512L +LAN8720QFN24
для простых конверторов протоколов типа TCP-RS232, TCP-RS485, TCP_IR использую PIC18F67J60 и PIC18F97J60 со встроенным PHY. Вполне подходит для добавления управления по ТСР в тех девайсах, где раньше был RS232, RS485, IR.
получается очень компактно
Тестировал HTTP сервер на W7500P (выделил для http 6 сокетов [6 read и 6 send], обработка стейт-машины соектов в httpServer.c не модифицирована) - иногда по какой-то причине сокет закрывается дольше, чем появляется соединение с новым сокетом. В момент загрузки одной страницы в браузере - количество параллельно незакрытых сокетов достигало 4-ёх. Если одновременно открывается страница в дугом браузере, а ещё идёт обработка AJAX запросов - то не закрытых сокетов становится 6 и новые запросы от браузера падают в большие TCP таймауты до 1..2 сек. Пришлось собрать все js и css в два обобщённых js и css файла, хоть немного, но помогло.
Субъективно со скоростью WEB интерфейса всё хорошо (пока не выстреливают вот такие внезапные задержки, которые портят впечатление).
В 2014 году использовали в своих приборах W7100. Это тоже самое, что W7500, но с 51-ым ядром. Глюков не было. Использовали в качестве многопортового полудуплексного шлюза с RS485 в LAN. Хотя были ньюансы в виде допрегистров для копирования данных между участками памяти. Эдакий аппаратный memcpy. Ну и еще какие-то штуки были, не помню уже. Но штука была простая и прошивалась через СОМ-порт.
Трезвый взгляд на W7500P — микроконтроллер со встроенным TCP/IP стеком