В этот раз посмотрим на одну плату, спроектированную ещё в 2015-м году за одну рабочую неделю. Надо было срочно спроектировать схему («для себя», сдавать документацию не требовалось), развести плату и отдать герберы на изготовление платы, сроки, как обычно, «еще вчера надо». Правда, в итоге проект так не дошел до логического завершения по некоторым причинам… Наработки же остались, чтобы они бесполезно «не пылились» на NASе, я решил сделать небольшую статью и выложить проект для Альтиума как он есть с некоторыми замечаниями да объяснениями (исходники выложить не могу, а вот железячную часть — без проблем). Думаю, это пригодится как и разработчикам ВП, так и студентам (заметил, что немало материала у меня берут для курсовиков и дипломов :) ), мне не жалко, даже приятно, если этот материал пригодится кому нибудь ещё.
Общие требования
Проект планировался как что-то типа серии управляемых по Ethernet контроллеров на российской элементной базе для автоматизации пультов и других промышленных объектов. Исходя из этого требовался как минимум Ethernet и достаточно много разнообразного типа IO портов. Первостепенно требовался вариант с приёмкой ОТК в виде отладочной платы, на которой можно было максимально просто и быстро опробовать различные идеи программной части.
Общие требования к отладочной плате в итоге вышли следующие:
- Приёмка ОТК как можно дешевле для отладочных целей;
- Если не полностью, то с максимальной возможностью перевода комплектации в последующем на отечественные компоненты;
- Ethernet 10\100 Мбит для организации управления и контроля состояния;
- Минимум 20 шт I\O пинов с различными типами входа\выхода;
- CAN и RS-485 для сопряжения с относительно локальными устройствами.
Из дополнительных и необязательных опций добавлено в процессе проектирования:
- Установка графического ЖКИ от МЭЛТ (а также возможность на его место установить китайский ЖКИ 320*240 с SPI интерфейсом и тачем — TJCTM24024-SPI);
- Выведены все свободные I\O на гребёнку для максимально легкой отладки или подключения других модулей;
- Выведены на отдельные разъёмы SPI, UART интерфейсы;
- Задействованы АЦП и ЦАП в качестве звуковых трактов по одному каналу и дополнительно выведено по одному каналу с буферами на BNC разъёмы;
- Микрофон на плате и селектор аудио-входа;
- Светодиоды, чтобы помигать было чем;
- Немного усложнённая система питания с автовыбором, от какого источника питаться (USB или разъём питания через DC-DC преобразователь);
- MicroSD холдер (для игрушек, типа поднятия WEB-сервера);
- Энкодер с кнопкой для простого управления;
- USB Device разъём;
- Кварц для RTC и дополнительно для сравнения работы с внутренними часами установлены внешний RTC по SPI — PCA2129T;
- Контрольные точки, их мало не бывает!
Схемотехника
Скачать полную схему в PDF вот тут — К1986ВЕ1QI-Dev.Board Schematic. А далее разберём по кусочкам со всеми косяками, что мною были допущены при спешке.
Начнём с аналоговой части. Эпик фейл тут в том, что я перепутал прямой и инверсные входы DA4, на схеме ниже я уже поправил, как должно быть, но это был самый эпичный фейл из-за спешки. В остальном же тут обычный простейший микрофонный усилитель на ОУ K1407УД2Т, который был в наличии (так-то его применение в целом ничем более, кроме низкого питающего напряжения и невысоких шумов, не аргументированно):
Далее усилитель для наушников, схема практически стандартная на довольно древнем MC34119, но для стабильной работы впаянного белорусского аналога IL34119D потребовалась RC цепочка 10 Ом + 0,1 мкФ на выходе (напаял на разъём):
Оставшиеся вход АЦП и выход ЦАП были просто выведены на BNC разъёмы (как оказалось, не лучшее решение, лучше бы SMA поставил) через буферы на
Rail-To-Rail ОУ MCP6001UT для возможных экспериментов:
Примечание: номиналы аналоговой части на схеме толком не рассчитывались и уже корректировались к приходу печатной платы, поэтому не опирайтесь на номиналы, стоящие в проекте альтиума!
Далее цифровая часть. Следующий фейл по спешке, чуть менее обидный, это согласование уровней. У МК К1986ВЕ1 часть портов толерантна к 5 В, а часть нет — смотрим в спецификации, какие пины толератны:
А если по простому, то если на порте на каком-либо пине есть аналоговая периферия, то не следует его использовать с 5 В уровнями.
Смотрим на схему включения драйверов RS-485 К5559ИН10БSI и CAN К5559ИН14АSI:
Вроде бы ничего криминального. А теперь смотрим, куда же подключены выводы RS-485 и CAN:
Правильно! По соседству на портах с АЦП и ЦАП…молодцом. :) Не делайте таких глупых ошибок. Выход в данном случае — применить микросхемы с питанием 3,3 В (в качестве примера для CAN — MAX3051ESA и для RS-485 — SN65HVD12IDREP) с доработкой питания (сменить с +5 В на + 3,3 В).
Примечание: хоть в спецификации и написано, что PE (3-5, 8-15) толерантны к 5 В, но при впаивании CAN драйвера портилась работа ЦАП, появлялось постоянное смещение на выходе, поэтому лучше вообще не использовать порты целиком с 5 В уровнями, если на порте есть аналоговая периферия!
Далее, ЖКИ с SPI на ILI9341 и тач-скрином на ADS7843 (или, скорее всего, будет стоять его китайский клон — XPT2046):
Вроде бы вполне неплохо, но и тут есть проблема — я объединил SPI для самого ЖКИ и для тач-контроллера, не посмотрев, что тач-контроллер довольно медленный и может работать на частоте до 2 МГц, в то время как ILI9341 спокойно на 12 МГц и выше для быстрого обновления картинки… В итоге путей решения два: программный, постоянно переключать скорость SPI, что даст задержки в обновлении ЖКИ, и аппаратный, переключить тач-скрин на другой SPI.
SPI так же используется и для microSD карточки, холдер 112J-TDAR-R:
С такой сложной схемой проблем не возникло. :)
Да, все nCS для SPI не забываем подтянуть к питанию:
И последнее, что сидит на одной из SPI шин — RTC PCA2129T, также никаких проблем:
Интерфейс Ethernet незатейлив, схема из даташита, на выходе разъём со встроенным трансформатором — SK02-111015NL (в УГО схалтурил, нарисовал как обычный разъём), если делать на отечественных компонентах, то можно поставить трансформатор ТрС-ЛС*, ферритовая бусина BLM21PG331SN1, но можно и без последней:
Мелочь, но стоит о ней помнить для использования одновременно USB\Ethernet на К1986ВЕ1 и просто удобства написания ПО:
Требуется поставить 2 кварца (для RTC 3й не в счёт) — на 25 МГц для Ethernet PHY и на 8 МГц для остального (а лучше 12 МГц, чтобы можно было достичь максимальной тактовой частоты в 144 МГц).
Также на фрагменте схемы выше можно заметить, что вывод CM (6) — смещение для средней точки приёмника не подключено, что вполне допустимо согласно спецификации (цитата, стр.397):
В микросхемах К1986ВЕ1QI, 1986ВЕ1Н4 и К1986ВЕ1Н4 вывод CM подключается согласно схеме. В микросхемах 1986ВЕ1Т, К1986ВЕ1Т, К1986ВЕ1ТК вывод CM отсутствует, остальные подключения выполняются согласно схеме.
Просто «сделаем вид», что СМ вывод не доступен. :)
Контрольные точки, контрольных точек мало не бывает!!1 %)
В подключении JTAG ничего примечательного, разве что, когда поначалу использовали ULink2 (по опыту использования — барахло ещё то, лучше взять
J-Link Edu хотя бы), при R59, R60 = 47 кОм всё ОК, а при = 10 кОм ULink2 не может подключиться к МК (настолько слабые выходы что ли ?… ), шлейф стандартный из комплекта был (около 10 см):
А вот тут привет Ардуино. :) Почему? Да просто селектор питания сделан примерно аналогично тому, что в последних платах Ардуино Uno — на компараторе LM393MX (отечественный аналог К1464СА1АТ). DC-DC же сделан на основе MC34063A (отечественный аналог К1156ЕУ5АТ), который просто достать, и для малого тока вполне нормально работает, но, для использования в контроллерах автоматизации на производстве не рекомендую, лучше искать более надежную в боевых условиях замену (хотя именно на российской элементной базе это будет довольно сложно, в качестве примера альтернативы — К1290ЕФ1Х).
Аналоговое питание вообще незатейливое, на плате сделано на LM1117MPX-ADJ, в бою же в качестве замены использовать КФ1158ЕН3.301 (или другие, из этой серии):
Единственное, с чем может быть проблема — L6, L7, на плате установил ферритовые бусины BLM21PG331SN1, а вот отечественных SMD ферритовых бусин вроде бы не водится ещё…
Разводка
В разводке же никаких хитростей нет, толком никакого выравнивания длин, нет и расчетов для волнового сопротивления дорожек USB, Ethernet. Просто сделано достаточно аккуратно и с грамотным подходом к питающим шинам.
Плата 4-х слойная, расположение слоёв:
- Top Layer — почти весь обвес, типа аналога, питания, RS-485, CAN и элементов управления на этом слое.
- Power — слой питания полигонами, различные уровни питания распределены на свои участки.
- GND — самый простой слой, заливка всего одним полигоном, без разделений на аналоговую\цифровую земли, это компромисное решение, если нет времени\опыта в проектировании смешанных плат с аналоговыми и цифровыми блоками на единой плате.
- Bottom Layer — всё оставшееся, цифровая часть во главе с 1986ВЕ1QI.
По слоям (кликабельно):
Основные рекомендации в разводке, которые стоит выделить при проектировке подобных плат:
- Полигоны и переходные отверстия — для уменьшения паразитных компонентов, увеличения теплоотвода создайте правило прямого подключения полигона к переходным отверстиям без теплового барьера;
- Полигоны и пады компонентов требуется с большой осторожностью подключать напрямую к полигонам, лучше воздержаться от этого и использовать прямое подключение только в случае протекания через пад больших токов или критичных моментов на паразитные компоненты, теплоотдачу от нагревающегося компонента, иначе в случае необдуманного прямого подключения к полигонам можно обзавестись такими проблемами, как:
- при пайке паяльной пастой SMD компонентов в случае несимметричного отвода тепла от падов компонента они могут не корректно центроваться, не пропаиваться отдельные выводы, появляться замыкания на микросхемах или компоненты будут становится «гробиком»;
- выводные компоненты могут не пропаиваться или пропаиваться с большим трудом вследствие возможной большой теплоотдачи с пада на полигон.
- Подключения к падам небольших SMD компонентов следует делать максимально симметрично по отводимой площади и близости переходных отверстий относительно пада, иначе возникнут проблеме при пайке, особенно в случае применения паяльной пасты;
- При расчетах волнового сопротивления можно воспользоваться встроенными средствами Альтиума, предварительно настроив параметры и правила, или, в простом случае, быстрее даже будет воспользоваться такой отличной утилитой, как Saturn PCB Design Toolkit, в которой немало и других полезных инструментов (новичкам настоятельно советуется!);
- Питающие дорожки желательно утолщать и делать дублирующие переходные отверстия, при переходах на другие слои для минимизации паразитной индуктивности и сопротивления;
- Для внутренних слоёв питания и общего провода в альтиуме лучше использовать Internal Plane вместо обычного слоя — это даёт больше гибкости и удобства в разводке, поначалу непривычно, т. к. разделять заливки в слое требуется обычными линиями, но потом очень удобно (на плате из статьи этого не сделано!)
- Повторяться смысла нет, т. к. довольно хорошие рекомендации для новичков можно прочитать в этой статье 7 правил проектирования печатных плат, рекомендуется к прочтению!
Ну и, конечно же, советую изучить саму плату в альтиуме, скачав проект целиком К1986ВЕ1QI-Dev.Board Altium Project.
Рабочий экземпляр
Этот раздел просто как эстетическое дополнение, фотографии одного из нескольких собранных экземпляров (кликабельно):
Ссылки
- К1986ВЕ1QI — описание и документация на МК;
- К1986ВЕ1QI-Dev.Board Schematic — полная схема в PDF;
- К1986ВЕ1QI-Dev.Board Altium Project — полный проект для Альтиума + выходная документация.