CadSoft EAGLE: создание библиотеки при помощи скрипта "make-symbol-device-package-bsdl.ulp"

Сегодня будем создавать в программе CadSoft EAGLE библиотеку для микросхемы с множеством выводов (например, для 80-выводного микроконтроллера STM8AF52AA) в автоматическом режиме при помощи очень полезного скрипта make-symbol-device-package-bsdl.ulp. А также слегка доработаем этот скрипт напильником, чтобы создавать библиотеки для микросхем в экзотических корпусах.

Очень часто бывает, что, разрабатывая печатную плату под конкретный микроконтроллер, не удаётся найти его модель в библиотеках Eagle. И приходится создавать её практически с нуля самостоятельно. Почему «практически»? Потому что в лучшем случае в глубине игловских библиотек удаётся найти футпринт (рисунок контактных площадок) для корпуса микроконтроллера, а создавать УГО (условно-графическое обозначение) микросхемы, подписывать каждый вывод и соединять УГО с футпринтом приходится самому. Если микросхема имеет небольшое число выводов, то работа займёт около получаса, а если выводов 100 или 200? Тут уже и самый суровый джедай горестно опустит руки.

Хорошо, что ребята из CadSoft, создавшие офигительную программу Eagle, позаботились о нас и включили в состав программы один полезный скрипт, находящийся в файле  make-symbol-device-package-bsdl.ulp, в папке Ulp в корневой папке программы. Скрипт этот достаточно наворочен, позволяя создавать библиотеки для микросхем в BGA-корпусах. Но эту фичу сегодня мы рассматривать не будем. Пока что нас интересуют корпуса типа LQFP. Все дополнительные возможности этого скрипта остаются вам для самостоятельного изучения.

Итак, что мы имеем на входе? Есть программа CadSoft Eagle 6.1.0, в которой я разрабатываю плату для своего устройства, и микроконтроллер, который будет основой этого устройства, со всеми даташитами. У меня это STM8AF52AA — 8-битный микроконтроллер для automotive применений в корпусе LQFP-80. Информация, которую я буду использовать для создания библиотеки, берётся из даташита на микроконтроллер:

Распиновка выводов микроконтроллера STM8AF52AA

lqfp-80_package

На выходе мы должны получить готовую библиотеку этого компонента с его УГО (Symbol) и футпринтом (Package):

УГО для STM8AF52AA в программе CadSoft Eagle Футпринт для STM8AF52AA в программе CadSoft Eagle

Итак, начнём…

Запускаем Eagle и открываем окно его контрольной панели (Control Panel).

Контрольная панель EAGLE

В меню выбираем File -> New -> Library. Откроется окно новой библиотеки.

Окно библиотеки компонента

В его меню выбираем File -> Run... или нажимаем на кнопку Ulp на главной панели окна. Откроется список скриптов в папке Ulp.

Список скриптов

Находим и выбираем файл make-symbol-device-package-bsdl.ulp. Жмём Открыть.
Появляется рабочее окно скрипта.

Рабочее окно скрипта

Самая верхняя строчка File: предназначена для указания файла в форматах BSDL, BSD, BSM или TXT. В файлах форматов BSDL, BSD и BSM находится вся информация по разметке футпринта компонента, включая названия и тип его выводов, а также их взаимосвязи. Описывать содержимое таких файлов я не буду, поскольку это тема для отдельного изучения. Скажу только, что уважающие себя фирмы-производители электронных компонентов обязательно сопровождают свою продукцию подобными файлами, помогающими разработчикам быстрее внедрять в свои разработки эту самую продукцию.

А вот в файле формата TXT может находится и упрощённое описание выводов (что не может не радовать, и именно этот вариант больше всего подходит рядовому радиолюбителю). Содержимое файла такое — в каждой новой строке идёт описание каждого вывода в формате:

НАЗВАНИЕ НОМЕР ТИП

  • НАЗВАНИЕ может включать в себя символы латиницы, цифры и почти все знаки пунктуации. Пробелы запрещены. Например, PORTA.5 или OSC_IN/PB3. Все недозволенные символы скрипт автоматически уберёт или заменит их на «нижнее подчёркивание».
  • НОМЕР долго описывать не буду, это порядковый номер, начиная с цифры 1. Думаю, нет нужды напоминать, что номер вывода — параметр уникальный и не может дублироваться.
  • ТИП может быть одним из списка - NC (болтается в воздухе, не используется), IN (только вход), OUT (только выход), IO (вход или выход), OC (с открытым коллектором), PWR (всё, что касается питания), PAS (пассивный), HIZ (высокоимпедансный), SUP (какое-то особое питание).


Параметры разделяются между собой пробелом или символом табуляции. Например,

NRST 1 PWR
PA1/OSCIN 2 IO
PA2/OSCOUT 3 IO
VSSIO_1 4 PWR
VSS 5 PWR
VCAP 6 PWR
VDD 7 PWR
VDDIO_1 8 PWR
PA3/TIM2_CH3 9 IO

Итак, нам надо создать конфигурационный TXT-файл, который мы будем впоследствии скармливать скрипту. Открываем незаменимую программу Блокнот (или чем там кто пользуется для создания простых текстовых файлов), создаём новый файл и вписываем в него все строчки с описанием выводов микросхемы. Сохраняем этот файл под именем STM8AF52AA.txt.

Файл STM8AF52AA.txt

В рабочем окне скрипта нажимаем на кнопку Browse справа вверху. Находим и выбираем ранее сохранённый файл STM8AF52AA.txt. При этом всё его содержимое появляется в поле Text. Кстати, ничего не мешает нам вручную ввести информацию в поле Text, не прибегая к использованию файла. Однако, в целях экономии нашего же драгоценного времени, я всё же рекомендовал бы всегда сохранять информацию о выводах в отдельный файл.

Содержимое файла STM8AF52AA.txt считано в поле Text

Видим также, что в поля Symbol и Device автоматически вставлено имя нашего файла (разумеется, без расширения .txt). Таким образом, скрипт предложил нам использовать это имя для создаваемых УГО и компонента библиотеки. Согласимся с ним.

Для загрузки в скрипт списка названий выводов, их номеров и типов остаётся только нажать кнопку Parse-->>. После чего в списке справа появится вся информация о выводах компонента. Жмём и видим, что конфигурационная информация загружена в скрипт.

Названия, номера и типы выводов были загружены в скрипт

Переходим на вкладку Package, где введём в соответствующие поля размеры корпуса микросхемы и контактных площадок для её выводов. Руководствуемся даташитом (см. выше). Посередине окна есть две картинки с подсказками, где-какие размерности брать — для корпуса (L, L1, D, D1, m), для выводов (b, e) и для контактных площадок (w, x, y, r). Далее в поле Pads Count укажем общее количество выводов микросхемы — 80 (обычно указывается автоматически при парсинге выводов), а в поле PAC Name укажем название нашего корпуса — LQFP80 (или любое другое).

Указали параметры корпуса и контактных площадок STM8AF52AA

Далее ставим галочку на Accept parameter и возвращаемся на вкладку Make, где отмечаем галочками, что хотим создать УГО (Symbol) и объединённый компонент (Device). В поле Package Name уже вписано название корпуса, взятое из поля PAC Name вкладки Package. Осталось только выбрать тип УГО компонента — Quad.

Всё готово для создания библиотеки

Нажимаем кнопку "ОК", и скрипт создаёт для нас библиотеку компонента.

Готовая библиотека для STM8AF52AA

Причём, обратите внимание, что выводы на УГО соответствуют типам, указанным в конфигурационном файле STM8AF52AA.txt.

Выводы на УГО различаются по типу

Вот и всё. Теперь библиотека может быть сохранена и использована в проекте.
Как видите, ничего сложного.

Небольшой «тюнинх»

Однако, недостатком скрипта make-symbol-device-package-bsdl.ulp является то, что с его помощью нельзя создать футпринт для прямоугольной микросхемы, имеющей разное количество выводов на смежных сторонах. Взять для примера 100-ногую C-509L фирмы Siemens, знакомую чип-тюнерам постсоветского пространства. У этой микросхемы, имеющей прямоугольную форму, по 30 выводов на длинных сторонах и по 20 на коротких. Применён корпус P-MQFP-100-2 (Plastic Metric Quad Flat Package) фирмы Infineon.

C-509 в корпусе P-MQFP-100-2

На сайте компании Infineon можно найти параметры контактных площадок для данного типа корпуса:

PG-MQFP-100-2

Итак, после того, как в скрипте будут указаны все размеры,

Указали размеры корпуса и контактных площадок C-509

на выходе получится нечто такое - прямоугольный корпус, имеющий по 25 выводов с каждой стороны, и наползшие друг на друга контактные площадки:



А всё потому, что внутри скрипта, помимо наличия ошибки в одной из формул, ещё и жёстко зашито, что количество выводов с каждой стороны QUAD-микросхемы одинаково и равняется общему числу выводов, делённому на 4. И это не смотря на то, что в скрипте реализовано отличие длины корпуса микросхемы (параметр D во вкладке Package) от её ширины (параметр L). Ведь обводы корпуса микросхемы на футпринте нарисованы правильно. Проблема останется только в расположении контактных площадок.

Пришлось скрипт немного подправить. В результате родилась его новая ревизия — 43a. Теперь при выборе QUAD-корпуса в скрипте производится подсчёт соотношения смежных сторон, после чего количество выводов для каждой стороны высчитывается, исходя из этого соотношения. Немного примитивно, но это работает. В итоге футпринт микросхемы получается правильный в независимости от того, квадратный у неё корпус или прямоугольный:



УГО компонента теперь тоже рисуется с учётом соотношения количества выводов на смежных сторонах — вместо квадратного символа теперь прямоугольный:



На этом пока всё.

Оригинал статьи находится по адресу: http://www.urtos.net/manuals/cadsoft-eagle-make-symbol-device-package-bsdl/
  • +11
  • 28 мая 2015, 02:59
  • uRTOS
  • 2

Комментарии (8)

RSS свернуть / развернуть
Отличная статья, отличный скрипт.
Сейчас же сел писать конвертор из xml от cube в нужный txt. Надеюсь, допишу сегодня
0
Очень интересно. Возможно жаль что пользуюсь другой программой, и не смогу использовать данный материал. Вот интересно, можно ли провести данные манипуляции в DipTrace? Если можно то как?
0
К сожалению, не знаком с DipTrace. Но, если там существуют пользовательские скрипты, то можно составить аналогичную программку. Ведь всё, что данный скрипт делает – это по заданным значениям вычисляет размеры и координаты всех элементов (контактных площадок, выводов, линий и пр.) и компонует один большой запрос в командах Eagle’а на создание этих элементов. А потом, грубо говоря, вставляет этот запрос в командную строку программы и выполняет. То есть, делает всё то же, что могу сделать и я при помощи инструментов программы, только быстрее и из командной строки. Кстати, если в окне библиотеки сразу после создания футпринта начать нажимать «Undo» (Ctrl+Z), то можно увидеть в обратном порядке, как Eagle выполнял команды из скрипта.
+1
Благодарю за исчерпывающий ответ.
0
В DT можно достаточно быстро построить футпринт, указав тип и параметры футрпринта, а затем параметры отверстий или площадок.
+1
В этом плане там действительно все просто. Больной вопрос с УГО ( условно графическими обозначениями ). В DipTrace построение футпринта и всего остального не требует больших навыков. За что мне и нравится эта программа! Освоить ее дело нескольких часов.
0
Ааа блин… пару бы дней раньше! А то ручками мучался :)) Слава богу не 100 выводов было :))
+1! Молодец! А с более старой версией (5.7) подправленый ULP работать будет?
0
Не могу проверить, к сожалению. Но думаю, что будет.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.