Pull to refresh

Comments 36

Мы такое на отечественных контроллерах (от Миландра) и микросхемах делали. :)

Уровень трассировки конечно трындец… Надеюсь это делал студент. Интересно, что там такого в эзернете долго разводилось, когда 100 Мбит поднимаются на макетке с МГТФом.


Кстати, если это открытый проект, то залейте его на github, а то писать/отвечать в личку и на почту это утомительно и вам и интересующимся.

Не могли бы Вы подробнее описать проблемы с трассировкой?

Проблем как таковых не было, за исключением разнящейся и зачастую противоречащей друг другу информации в интернете о правильной трассировке диф. пар. В итоге старался следовать преимущественно рекомендациям к DP83848. Из-за желания расширить функционал и неправильного планирования часто приходилось переставлять многие модули на плате, что значительно замедляло разработку.
Какие вами рекомендации то нужны? Берете любой калькулятор типа SaturnPCB и считаете стек своей платы и узнаете параметры проводников для нужного импеданса, затем переносите его в правила altium designer и просто прокидываете 2 дифпары. Это базовые понятия, тут даже не нужно даташит от производителя открывать.
Несколько замечаний и от меня:

1. Пожалуй наиболее важное замечание это использование 2-х слойной платы. Я ещё могу понять самодельщиков, которые из кожи лезут вон, чтобы уложиться в 2 слоя для удобства ручного изготовления ПП (сам был таким давно), но раз уж вы так или иначе связываетесь с производством, то тем более для такой платы просто необходимо было заложить 4 слоя. И отдать на внутренние два — питание с землёй. Шинное соединение питания и земли, как это сделано у вас, крайне не приветствуется. В данном случае сплошные полигоны значительно увеличили бы качество ПП и упростили бы разводку. К примеру, конденсаторы по питанию нужно устанавливать максимально близко к микросхеме. Это очень удобно и эффективно делать на 4-х слоях с обратной стороны компонента. Все расчёты импеданса дифф. пары, которые вы возможно делали скорее всего бесполезны, т.к. у вас нет опорного слоя, хотя и длина проводника (неоднородности) достаточно мала, чтобы на что-то сильно повлиять. Возможно вам покажется это избыточным, но для ваших будущих проектов, если частоты интерфейсов будут достигать >50-100МГц, то с подобным конструктивом питания и земли с большой вероятностью будут проблемы. Я понимаю, что оно и так работает. Собственно говоря, работает потому, что частоты небольшие и хорошо, если вы, понимая это, осознанно проектируете в двух слоях. Хотя для продакшена такой платы эта экономия опасна и может выйти боком, лучше иметь запас по качеству.

2. У Ethernet PHY под брюхом микросхемы есть термопад, который у вас, судя по всему никуда не подключён. Через этот пад чип рассеивает тепло. Если бы у вас была 4-х слойная плата, то соединив этот пад с внутренним полигоном земли вы могли бы максимально эффективно охлаждать чип под высокой нагрузкой.
Картинка
image

3. Плохо видно, но на всякий случай скажу, что корпуса разъёмов не рекомендуется подключать к сигнальной земле напрямую. Нужен фильтр, обычно это пара кондесаторов и высокоомный резистор. Почитайте про «chassis ground to signal ground connection».

4. Мелочь, но сразу бросается в глаза и выдаёт новичка — термобарьеры для простых VIA (но не монтажных отверстий) абсолютно не нужны. Это можно прописать в правилах altium-а.

А так, со стороны выглядит неплохо.
Большое спасибо за замечания и советы, учту на будущее. По пункту 3. — корпуса разъемов соединены с землей через 1 МОм резистор и 1 кВ конденсатор в параллель.
1) Дороги выводятся из падов какими-то неимоверными способами. Там, где дорогу можно вывести из центра площадки и перпедикулярно, выводят под 45 градусов и от края пада… Ладно если бы это было в одном-двух местах, там вся плата такая. Этот вот классический «хуяк хуяк и в продакшен».
Примеры



2) Вторая классическая ошибка: «производитель может сделать дорогу 0.2 мм, а давайте-ка я зафигачу все тонкими дорогами, чтобы паразитные индуктивности были побольше!». Там где спокойно можно провести дорогу 0.6 мм идет проводник толщиной ~0.2 мм
Пример



3) Куча примеров ленивости разработчика. Тут простейшая плата, всего 2 слоя и чтобы соединить ногу МК и проводник человек 2 раза прыгает по слоям с верхнего слоя вниз, потом опять вверх и опять вниз и опять вверх… Ну такое. Достаточно было просто чуть чуть подумать, возможно подвинуть пару компонентов и обойтись одним переходом.

4) Трассировка цепей питания. Тут слишком долго писать, проще запомнить этот пример и никогда так не делать. Особенно не компоновать так блокировочные конденсаторы и вообще компоновке платы нужно больше времени уделять.
В трассировке я действительно новичок и буду рад дельным советам. На github выложил.
Возможно будет интересно — читать.
А вообще нужно вырабатывать чувство прекрасного, чтобы все эти кривости-корявости самому глаз мазолили и хотелось делать аккуратно.

Еще тут вроде в комментариях видел Говарда Джонса «Начальный курс черной магии», можно для ознакомления прочитать бегло, там базовые вещи неплохо разжеваны, а дальше уже только опыт и ревью коллег.
В трассировке я действительно новичок и буду рад дельным советам. На github выложил.

Для достижения целей не подошла бы только hat для Raspberry PI?

действительно, пины RX и TX (UART) микроконтроллера соединены с трансивером CAN и с него выведены на внешний разъем.

Серьезно? Кто то такое производит? Это же профанация. Или этому таки можно найти применение?
Тоже был очень удивлен. Как ответили разработчики, в каких-то промышленных счетчиках эл. энергии действительно используется такой канал связи.
Меня просто потрясают подобные решения, особенно «недорого».
Про связку преобразователя со стандартной платой Вам уже написали, вот еще вариант.
Не для рекламы, хотя лично я эти модули использую и претензий к ним, ну не то, чтобы совсем нет, но немного zao-zeo.ru/catalog/sbc/118-tion-pro28 — 5830 рублей и это не STM, так какого фига?
Если это не обман зрения, то на первой версии разъём microUSB, а на второй — miniUSB. Почему так?
Все верно. Это не обман зрения. Заметил, что miniUSB разъемы доступнее в магазинах РЭИ (во всяком случае известных мне Чип-Дипе и Элитане) чем microUSB, да и кабелей таких много и габариты позволяют.
при схожих габаритах на плате, мини оказывается несколько надежнее
type-c надо ставить, он удобнее хоть и немного дороже
Как-то мягко говоря дороговато — 5000 рублей — для такой в общем то немудреной вещи. Любой пай на A20 сделает все тоже самое, а стоить на али будет в два раза меньше. И это с точки зрения «а не прикрутить ли нам ещё XXX» будет совсем не STM.
С этого места поподробнее пожалуйста, какая такая «пай на A20» имеет CAN интерфейс? И что это такое «пай на A20»?

Недавно с коллегой прикупили комплект конвертеров Ethernet-CAN на Али (как раз по 5000 руб за штуку) с целью «удлинить» OBD II от Nissan Leaf. Искомый результат не достигнут, так как инкапсуляция CAN фрэймов в UDP выполнена с достаточно высокой задержкой (как мне это показалось), точнее вообще непонятно как она выполнена — Leaf Spy обрывает соединение где-то в середине попытки получить данные о состоянии автомоильной батареи.
Под A20 имеется виду платы на базе SoC Allwinner A20. У него на борту уже есть CAN контроллер (описан в A20 User Guide). Возьмем к примеру первую попавшуюся Xunlong Orange Pi Mini. На 40pin гребенке я вижу CAN_RX/TX. Да, там нет видимо опторазвязки и ещё каких приятных ништяков, но на сколько я могу судить это вполне себе обычный CAN.

Далее идем на али и ищем похожие поделки. Почти уверен, что даже с учетом пересылки уложитесь в 2000 рублей.
Простите, а кто софт писать будет для этого «пай на A20» непосредственно инкапсуляции и декапсуляции CAN в TCP или UDP? Или вы думаете, что CAN это почти как UART который можно перенаправить командой cat из shell-а?

Как я написал, одну поделку мы уже купили, 10 тыр на ветер. Теперь хочу увидеть опробованное решение.
Xunlong Orange Pi Mini и отдельные копеечные CAN трансиверы за 60р
SN65HVD230 CAN bus transceiver
www.aliexpress.com/item/32686393467.html

Простите, а кто софт писать будет для этого «пай на A20» непосредственно инкапсуляции и декапсуляции CAN в TCP или UDP?

Всё уже придумано до нас и гуглится на раз, есть готовое софтверное решение github.com/mguentner/cannelloni или rtime.felk.cvut.cz/can/can-eth-gw.pdf
> Простите, а кто софт писать будет для этого «пай на A20» непосредственно инкапсуляции и декапсуляции CAN в TCP или UDP? Или вы думаете, что CAN это почти как UART который можно перенаправить командой cat из shell-а?

Берем can4linux и пишем? Навскидку не вижу в этом ровным счетом ничего сложного. Если вдруг A20 или его аналога нет в can4linux дописываем поддержку (тоже тривиально).

И таки вспоминаем, что CAN конечно CANом, но это ещё и сетевое устройство. Которое каким то образом должно интегрироваться в локальную сеть. Со всеми вытекающими из этого мелкими геморроями типа настройка/получение IP адреса, если адрес получается динамически то поиск устройства в сети и вот это вот все. И для таких развлечений IMHO куда приятнее работать с обычной линуксой.
Я когда-то тоже делал подобное устройство. Далее прототипа не пошло, т.к. софт не осилил. Пошел по пути изготовления «свистка» UART-CAN. Независимость от платформы и работа в терминале, в том числе.
image
В Ethernet могут быть задержки в силу работы доступа к среде передачи и эти задержки перед доступом к среде носят случайный характер. CSMA/CD
Разумеется, но не более 0.5мс. Более того, сборка/разборка TCP добавит еще задержку особенно при загруженной сети. Но мы все это знаем и понимаем. Купленные девасы не достигают эффекта даже будучи воткнуты друг в друга метровым кабелем.
Скажите, вы продаете это изделие или оно «open source»? Если последнее, то не могли бы Вы выложить исходники (схему, гербера, исходники прошивки). Хотим повторить ваш опыт для одного хоббийного проекта с участием электрокара Nissan Leaf.

Достаточно схемы и исходников прошивки. Плату накидаем свою под размеры корпуса.
Выложил исходники на github, обновил статью. Прошивка еще не до конца дописана, но в том что есть, думаю, найдете много полезного. Буду постепенно обновлять. Любопытно как у вас получится, пишите.
Из аналогов есть еще spb.terraelectronica.ru/product/1048019
По моему они скопипастили эту плату с какой то olimex, то есть при желании можно купить за те же деньги уже готовую плату с Eth и CAN
Only those users with full accounts are able to leave comments. Log in, please.