Comments 66
В конце этого текста должен быть только один пункт: купите любую из отладочных плат и быстрее начните программировать, а не занимайтесь рукоблудием.
Ощущение от проделанной работы безценно.
А вот это вот "быстрее начните программировать" поверхностно как то.
Ощущение от проделанной работы безценно.
Это точно. До сих пор с замиранием в сердце вспоминаю эту свою плату. Дорожки рисовал лаком для ногтей, который взял у своей девушки. Купленный на последние деньги микроконтроллер AT90S2313 в моих глазах был настоящим компьютером уровня Радио-86РК, засунутым в крошечный корпус DIP-20.
Но это все давно ушло, ушла эпоха радиолюбительства. Теперь эпоха алиэкспресса и проводков dupont. Эпоха, когда не нужен паяльник, вольтметр, хлорное железо. С другой стороны, теперь у вас есть возможность делать удивительные, невероятные вещи очень быстро, очень дешево.
Что можно было сделать на той старой AVR с 2К флэш памяти и 64 байта RAM? Термометр с дисплейчиком какой-нибудь… А сейчас — автопилот самолета, интернет-радио mp3, умный дом с GPRS. Это задачи совершенно другого уровня. Сейчас важно не уметь травить платы и паять, а быстро программировать, используя наработки других людей.
Если вы хотите быть конкурентноспособным работником, нужно уметь делать эффективные готовые решения. Эффективные прежде всего во времени разработки, стоимости, повторяемости.
Паять компоненты с малым шагом стоит только под микроскопом. Иначе сложно определить все ли пропаялось и нет ли «соплей». Ну либо на «профессиональном» оборудованииЭто LQFP64 то под микроскопом? 144 нормально паял вручную.
Ну а теперь по делу:
- Зарегистрироваться на сайте все таки надо. Да, они рассылают рекламу, зато можно получить бесплатный доступ к куче важной документации.
- К проблемам переходящих с AVR так же можно назвать раздельную документацию. В datasheet-е, в отличии от той же atmega8, только электрические характеристики и карта памяти (сюда же описания краткое характеристик периферии. Уровня максимальной частоты и прочее). А вот за регистрами уже нужно лезть в порой доходящий почти до 2500 страниц reference manual.
- Далее стоит отметить, что в отличии от avr, где можно в принципе жить только регистрами, тут приходится использовать оболочки. Сейчас выбор между CM3 и HAL. Последний через официальную утилиту обновляется чуть ли не раз в месяц.
- Ну и на последок стоит отметить, что раньше был вместо HAL популярен SPL. Так что в интернете куча статей именно по последнему. Что затрудняет новичков. Поскольку он уже не поддерживается.
Далее стоит отметить, что в отличии от avr, где можно в принципе жить только регистрами, тут приходится использовать оболочки. Сейчас выбор между CM3 и HAL
Во-первых, не приходится, и можно совершенно спокойно жить только регистрами, ничего страшного в них нет.
Во-вторых, CM3 процентов на 80 представляет собой заворачивание одиночных обращений к регистрам в простенькие функции, и от работы напрямую с регистрами в этой своей части особо не отличается.
Во-первых, не приходится, и можно совершенно спокойно жить только регистрами, ничего страшного в них нет.
Да, согласен. В домашних проектах нормально. Можно. Но в продакшене, увы. Когда просят «эзернет за 2 дня», то уже нет времени вдумчиво сидеть и работать с регистрами, которых порой более 500 на модуль… Чего стоит настройка DMA2D+LTDC например. Другой вопрос, что один раз под себя написал и пользуешь. Но на это, опять же, нужно время.
Во-вторых, CM3 процентов на 80 представляет собой заворачивание одиночных обращений к регистрам в простенькие функции, и от работы напрямую с регистрами в этой своей части особо не отличается.
Так же согласен. Но все же помогает как-то абстрагироваться.
Но в продакшене, увы. Когда просят «эзернет за 2 дня»
Во-первых, «эзернет за два дня» — это не продакшен, это быстро сляпать на коленке. Если у вас такое идёт в продакшен — мои вам искренние соболезнования. Ни один пригодный к практическому применению проект за два дня не делается.
Во-вторых, если в сляпанном на коленке коде у вас что-то работать не будет — а в любом минимально сложном проекте вы с этим рано или поздно встретитесь — без понимания работы на уровне регистров чёрта с два вы разберётесь, что не так.
В-третьих, у вас инструментарий какой-то наработанный есть, или вы только на коленке ляпаете? RTOS, библиотеки? Внутри них — магия или таки регистры?
Так же согласен. Но все же помогает как-то абстрагироваться.
Абстрагироваться от чего и зачем?
Во-первых, «эзернет за два дня» — это не продакшен, это быстро сляпать на коленке. Если у вас такое идёт в продакшен — мои вам искренние соболезнования. Ни один пригодный к практическому применению проект за два дня не делается.
Про «2 дня», конечно, утрирую (хотя опыт поднятия eth за 2 дня действительно был. Правда это на скорую руку было и действительно потом пришлось писать в течении двух недель нормально. Чтобы стыковалось со всем наработанным API). Просто обычно занимаешься несколькими проектами и нет особо времени капаться.
Во-вторых, если в сляпанном на коленке коде у вас что-то работать не будет — а в любом минимально сложном проекте вы с этим рано или поздно встретитесь — без понимания работы на уровне регистров чёрта с два вы разберётесь, что не так.
Само собой нужно понимать что происходит. Поскольку HAL не идеален и нужно быть готовым в случае чего поправить.
В-третьих, у вас инструментарий какой-то наработанный есть, или вы только на коленке ляпаете? RTOS, библиотеки? Внутри них — магия или таки регистры?
Да понятно, что есть наработки и как правило написание прошивок под МК скорее напоминает конструктор на основе когда-то правильно спланированной архитектуре.
Абстрагироваться от чего и зачем?
От железа. В идеале, когда в проекте есть класс bsp (при условии, что пишете на С++), который предоставляет данные с датчиков и прочие сигналы из вне, а так же позволяет выводить сигналы во внешний мир (pwm, uart,,,) через приятные прослойки.
Собственно, не столь давно в меня прилетел проект на вышеупомянутом libopencm3 — при всей простоте библиотеки, в кишки ей пришлось лезть практически сразу просто чтобы уточнить, что именно оно тут делает.
Но в продакшене, увы. Когда просят «эзернет за 2 дня», то уже нет времени вдумчиво сидеть и работать с регистрами
Это называется херовая культура разработки, когда лишь-бы сделать быстро, не важно как. К сожалению, во мноких конторках практикуется, но это не значит, что это норма.
Это называется херовая культура разработки, когда лишь-бы сделать быстро, не важно как. К сожалению, во мноких конторках практикуется, но это не значит, что это норма.
Да понятное дело, что не норма. Однако распределение времени это уже дело не разработчиков, а начальства. Если скажут «за 2 часа» — будет за 2 часа. Скажут «тщательно продумать на будущее» — будет, условно, за 2 месяца.
Дык микрухи всегда паяют методом «Припаял одну ногу, выровнял, припаял противоположную (Диагонально расположенную), подровнял прогревая первую, запаял остальные»…
Паяю микры 3х2 мм без микроскопа, наверное я помазанник божий на этой земле?От остроты зрения зависит. Я в 30 лет свободно паял 0201 и шаг 0.65 без лупы, а когда охреневшие американцы сказали на митинге, что это невозможно сделать вручную, надо паять у них и слать плату в РФ, сказал, что уже запаял и иронически поблагодарил за то, что поздно сказали. А сейчас даже для 0805 использую лупу с подсветкой. Глаза. Не надо судить по себе. У Вас глаза, скорее всего, тоже не будут 1 до старости.
Навыки, описанные в статье, безусловно, полезны, если человек сидит в госНИИ где-нибудь в Норильске, где умучаешься согласовывать покупку и ждать доставку. Или вылетает для пусконаладки-ремонта «в поля», опять же, неблизко от основных логистических потоков, а работать должно вчера. Для разработчиков из Штатов и даже из городов-миллионников в exUSSR описанное, конечно, выглядит дико — столько уметь и тратить бешено дорогое рабочее время на повторение копеечных плат, массово выпускающихся китайцами.
Зависит это не от зрения, а от того прогуливал ли физику на 1-м курсе или нетНевозможно спозиционировать QFP с мелким шагом на плате, если дорожек не видно глазами. «Примерно» — так же по физическим законам ножки чипа прекрасно встанут между дорожек, и дорожки будут мешать им сдвинуться на правильное место. Так и припаяется.
Про почту и курьеров… Попробуйте как-нибудь, интереса ради, заказать срочную доставку в станицу Ханская, возле Майкопа — всего 300км от Краснодара. У меня-то получилось, надо было больному ребенку знакомых конструктор Лего туда доставить на ДР из интернет-магазина, но я с логистикой достаточно много работаю, у меня хватило навыков и терпения найти через три переадресации человека, который снизошел за 500р в свой карман доехать туда на личном авторанспорте после работы и вручить. Обычный электронщик вряд ли смог бы пройти этот путь, там люди попадались… своеобразные.
Норильск, кстати, я зря привел в качестве примера — туда хоть самолеты летают. А вот если небольшой населенный пункт — то прямо беда.
эти «магические» силы сами отцентруют микросхемуQFP так не отцентрируется, особенно многовыводная, особенно если (не)много флюса под корпус затекло. А вот QFN вполне центрируется, но если размер большой, то тоже может не встать из-за большого центрального пятака. Вспомните ту-же физику и вязкость жидкости.
Правда, скачать их с официального сайта точно так же невозможноОсторожно! Вы в одном шаге от того, чтобы отморозить уши назло маме.
Относительно первого пина: я в datasheet’е вижу пачку пинов с названием VSS_x
. Практика показывает, что все земли внутри обычно объединены, а всё остальное (кроме питаний, но это когда как — они могут и к разным доменам относится) — нет, поэтому когда ножка земли не одна (она не одна), и когда ножки земли расположены несимметрично (а сторона с ножками 17…32 — единственная, у которой есть по земле на второй с начала и второй с конца ножке), то тогда можно понять, где первый пин, прозванивая несимметричные земли.
Ну и ещё, google «stm LQFP64 determine first pin» на первой же странице выдаёт мне ссылку https://electronics.stackexchange.com/questions/123703/which-of-these-marks-signifies-pin-1-on-the-stm32f-lqfp64, где есть как минимум три полезных совета:
- Смотреть на меньшую точку.
- Если повернуть текст так, чтобы надпись читалась, то первый пин слева‐снизу (кстати, у вас написано, что справа‐сверху, так что кто‐то ошибается; скорее всего, вы, т.к. в datasheet нарисовано то же самое).
- Если прозвонить тестером земли, то всё станет понятно.
Но они не позволяют ничего с сайта скачать! Возможно, позволили бы после регистрации, но у меня и раньше не было желания регистрироваться где попало, а после такого отношения к разработчикам — и подавно.заглянуть в документацию, как поступает большинство «не столь принципиальных» людей, для него было проблематично.
Регистрации требует скачивание софта.
and STM32 microcontrollers. Впрочем, уж Вам то это объяснять не требуется.
Ну а гугл приведёт к тому, о чём его просить — «stm32l151 reference manual» даёт, например, прямую ссылку на RM0038 в первых строках (и это сильно быстрее, чем тыкать в ST'шный сайт, особенно после его редизайна).
2. Если повернуть текст так, чтобы надпись читалась, то первый пин слева‐снизу (кстати, у вас написано, что справа‐сверху, так что кто‐то ошибается; скорее всего, вы, т.к. в datasheet нарисовано то же самое).
Спасибо за исправление, внесу его в статью.
3. Если прозвонить тестером земли, то всё станет понятно.
Тоже хороший совет, добавлю как способ, которым можно воспользоваться
1. Читайте даташиты
2. Используйте материалы по назначению (читайте описание)
3. Ручное изготовление плат — прошлый век.
Натуральный естествоиспытатель! Уважение!
И быстро, и ног минимум, и перемычки дергать не надо.
Что касается программатора: у меня одна древняя rapberry pi программирует, и avr, и stm, и общается с ними по uart и i2c. причем по wifi — к компутеру ничего цеплять не надо.
Ну и наберите в гугле что-нть типа «temporary email»
кучи сайтов предлагают одноразовые случайно сгенерированные email-ы.
еще там 256 кБ флеша, но слабо представляю чем его можно забить. Разве что совсем диким говнокодом или массивами данных
Мне бы ваши проблемы. Я вот в мегабайт оперативки (STM32H7) с трудом вмещаюсь. И 300к флэш на прошивку. Все просто — большие матрицы (GNSS) и куча кода для математической обработки. Примерно так же — в любом GNSS-приемнике, только мы одновременно обрабатываем данные с нескольких антенн.
Параллельно делаю из запасной stm32f103 программатор st-link v2А не проще купить за 200 рублей?
Правда, скачать их с официального сайта точно так же невозможноВот ссылки: STM32CubeIDE , STM32CubeMX. Внизу есть кнопочка «Get Software». Регистрироваться, разумеется, придется.
Мне бы ваши проблемы. Я вот в мегабайт оперативки (STM32H7) с трудом вмещаюсь. И 300к флэш на прошивку. Все просто — большие матрицы (GNSS) и куча кода для математической обработки.
Про оперативку согласен на 100%: ее всегда не хватает. Собственно, «подопытный» контроллер я и выбирал в первую очередь за ОЗУ и потребление, а вовсе не за выводы или флеш.
Но и про флеш согласен с вами: забить туда константы, препрощитанные данные и тому подобное — логичный и правильный подход. Уж точно более правильный, чем забивать то же место говнокодом :)
А не проще купить за 200 рублей?
Объективно — проще. Да я об этом и в выводах написал. Но вот захотелось сделать вручную. Тренировка в изготовлении плат, если хотите.
Вот ссылки: STM32CubeIDE, STM32CubeMX. Внизу есть кнопочка «Get Software». Регистрироваться, разумеется, придется.
И об этом я писал. Скачать весь этот софт без регистрации точно так же невозможно, как и библиотеки. Но его проще найти на просторах интернета, а если кто боится венерических «подарков», которые к нему могут подложить, то виртуальная машина стерпит.
Про оперативку согласен на 100%: ее всегда не хватает.
В абсолютном большинстве проектов мне хватает 20 КБ ОЗУ, ЧЯДНТ?
Да чего ходить за примером: в статье есть видео с трехмерной графикой. Экран 320х240х16, то есть 150кБ. Это уже далеко за пределами 20кБ памяти stm32f103, а ведь еще хорошо бы задний буфер, да буфер глубины, и данные моделей хранить где-то надо.
Считаем 32 спутника на 2 измерения (код+фаза) = 64. Матрица 64*64 = 4096 элементов. Размер элемента минимум 8 байт (double) (СКО шума фазы 1 мм, величина — 2*10^11 мм, во float никак не лезет). Так что 32 килобайта на одну матрицу. А их надо десяток одновременно.
Вы попробуйте, найдите современный GNSS-приемник с ОЗУ/ПЗУ меньше 256/256. Обычно — больше. Вон, смотрю на размер прошивки ZED-F9P — мегабайт.
Вы вообще в курсе, что в мире довольно много электроники помимо GNSS-приёмников? И что у большинства людей не стоит задача делать GNSS-приёмники? Ну или что GNSS-приёмники даже не являются вершиной эволюции электроники?
Ваш случай (2 грубых костыля на 5 строк кода) нетипичен.
Ну или что GNSS-приёмники даже не являются вершиной эволюции электроники?Согласен, есть много более крупных задач. Сейчас тренд такой: если вам linux нужен как запускалка — выкиньте его. И вместо трех корпусов получите один SoC. То есть вместо 16Мб ОЗУ + 16Мб ПЗУ — будет 1Мб ОЗУ + 2Мб ПЗУ. Но для очень многих задач этого хватает. Не хватило — есть SoC c 13Мб ОЗУ. Как ни странно, но если вам не нужен полномасштабный TCP/IP, linux — это огромный монстр.
Так что сравнивайте 1Мб ОЗУ не с примерами на 5 строчек, а с тем, что нынче болтается на linux. В ближайшие 10-15 уйдет оно уйдет на SoC.
Разумеется, мелкие задачки «на 5 строчек» никуда не денутся и кому-то надо их делать. Вплоть до AVR и PIC с их считанными байтами ОЗУ.
Согласен, есть много более крупных задач. Сейчас тренд такой: если вам linux нужен как запускалка — выкиньте его. И вместо трех корпусов получите один SoC. То есть вместо 16Мб ОЗУ + 16Мб ПЗУ — будет 1Мб ОЗУ + 2Мб ПЗУ. Но для очень многих задач этого хватает. Не хватило — есть SoC c 13Мб ОЗУ. Как ни странно, но если вам не нужен полномасштабный TCP/IP, linux — это огромный монстр.
Вы отдаёте себе отчёт, что вы увлечённо беседуете сами с собой?..
Но его проще найти на просторах интернета
У нас с вами невероятно разное определение слова «проще»
Но и про флеш согласен с вами: забить туда константы, препрощитанные данные и тому подобное — логичный и правильный подход.У нас — именно код. 5 мегабайт исходников — это довольно много.
Скачать весь этот софт без регистрации точно так же невозможно,И чем вам так страшна регистрация? Вы ядерное оружие делаете? На космос работаете? Засекреченный китайский шпион?
легендарно!
в статье правда ожидал что нибудь про программирование увидеть.
Левша танцевал на граблях, но блоха таки была подкована)
1. Собери нормальный паяльник. Загугли про жала T12, мне моя станция обошлась (вместе с корпусом) примерно за 2к руб. Паять станет намного комфортнее, пайка получится намного красивее. Из типов жала тебя в первую очередь интересует тип «K», начинай с него.
2. Купи самый дешевый флюс-гель. Продается в шприцах по 10/30 грамм. Про канифоль забудешь сразу. Отмывать не обязательно, пай получается намного более красивый. При правильной температуре качество пая от фабричного отличить невозможно. Для пайки МК сойдёт даже самый дешевый, но я использую NC-D500, тюбик покупал что-то около 300 рублей, хватает для любительской пайки на год.
3. Заказывай платы прототипов на алиэкспрессе. Трассируешь прототипы для 5-10 моделей, формуешь в один лист, делаешь гербер, пишешь китайцу. Цена около 1 доллара да кв. дециметр (давно не заказывал, цена могла поменяться). На муське есть несколько обзоров. Постепенно это входит в привычку — делать проекты сначала теоретически и сохранять всю информацию, а как приходят платы — уже в железе. В итоге тренируешь свою фантазию, чтобы всегда был «поток».
4. Заказывай производство небольших корпусов или стендов на 3D-печать, самым дешевым пластиком получается весьма недорого, зато удобство зашкаливает. Да и выглядит уже не колхозно, есть чем похвастаться. Мускулиные мужицкие платы на коленке — это тоже круто, но когда есть красивый прототип — уже совсем другой уровень, чувствуется творение.
смотрим пару туторов по алтиуму(игл)
рисуем плату
заказываем на allpcb
Автору "+" за усердие.
Нам "-" за мизерное количество стоящих статей о мире встраиваемых систем.
На кой ляд вам моя почта или что вы там требуете? Собирать персональные данные, спам слать?
Уже давно держу отдельной email как раз для таких товарищей. Никогда не читаю, но там уже больше 100K писем.
Человек сам сделал девборду и знает где раки зимуют, в отличие от тех, кто к железу не притрагивался.
Великолепно для начала, у всех бы так!
Одинаковые блюпиллы надоели и не интересны.
А на той где три леда — вообще сначала подумал, — Откуда у вас моя плата?:) тоже такие резисторы валяются. Правда не ставлю, серебро почернело
С кварцами там засада. Дело в том, что в отличие от F, L-серия очень требовательна к кварцам. Среднекитайский кварц за 15 рублей из "Чип-и-дипа" с ними может и не завестись. Особенно часовой — там нужен особый малоемкостный кварц (с обычным мало шансов) и очень аккуратная его разводка.
Начало работы с stm32 или не повторяйте моих ошибок