Pull to refresh

Comments 63

Продолжать стоит, я всеми тентаклями голосую за mbed.
Я столкнулся с тем, что mbed жутко медленный и мне хочется от него уйти. К сожалению, я очень плохой программист мк и не в состоянии быстро освоить все тонкости stm в краткий срок не могу.
Ну, у меня претензии разве что к скорости открытия IDE и поиска чего-то в репозиториях. В обычной работе (код-компиляция-скачивание) все летает. Я уходить не собираюсь, потому что люто, бешено ненавижу конструкции вида РазрешитьИспользованиеОченьНужнойВещи(Вещь), ТочноРазрешитьИспользование(Вещь), ТонкоНастроитьКойКакиеЗавитушки(Вещь). Да, возможно, я не программист и не знаю, что так на самом деле надо.
Я говорю не о медленности IDE, а о медленности библиотеки, HAL и Mbed RTOS. Не уверен, что смогу на ней сделать автопилот. Нужна бОльшая скорость.
А, значит, я вас не так понял. В производительность получаемого кода я еще не упирался, делал всякие простые вещи.
Но идею понял, я как-то столкнулся с недостаточной производительностью ардуинового кода, погуглил, нашел костыли, плюнул и переписал на C.
Меня посетила идея написать цикл статей, посвященных обучению, где был бы представлен такой вот полноценный курс по этой отладочной плате, где все написано простыми словами и объяснено на пальцах


главное сильно не повторяться :D
habrahabr.ru/search/?q=stm32
Постараюсь нести только новое, ну или хотя бы под другим углом смотреть)
Обязательно продолжайте, возможно по итогу это получится отличная книга :)
P. s.: сразу готов донатить в случае продолжения серии статей!
Подача информации ни в какое сравнение не идёт с тем, что выдаёт поиск. Там судя по статьям люди сами разбираются хорошо и давно, а вот то, что новичкам слёту сложнее понять, что и куда, НОЛЬ.
Что-то схема включения реле какая-то необычная — на светодиоде слабозависимо от прямого тока (в интересущем нас с точки зрения включения реле диапазоне) падает в зависимости от его цвета от 1.3 (красный) до 3 вольт (синий).

То есть даже в отсутствии ограничительного резистора на обмотку остается максимум 3.7 вольта. Вдобавок, светодиод + резистор в цепи истока управляющего полевика дает сильную ООС, которая естественно, пытается вывести коммутирующий полевик из ключевого в линейный режим — что чревато неполным включением полевика от управляющего логического сигнала, его перегревом и вялым включением реле.

Если уж прямой ток светодиода и ток включения реле сравнимы, оба этих элемента надо включить в цепь стока, а еще лучше — параллельно обмотке реле включить светодиод с ограничительным резистором, а реле взять 5-вольтовое, чтобы никаких цепей ограничения тока для него городить не было необходимости

Кстати, и «силовые» выходы тоже имеют светодиоды в цепях истока, и соответственно, они годны для коммутации только высокоомной нагрузки. Либо я глючу или в схеме ошибка, и феты — P-канальные
В подключении VT1 — VT4 допущена грубейшая ошибка! Исток в данном случае должен быть на земле.
Резистор и светодиод нужно расположить между +5V и стоком полевиков.
Во-во, смотрю — на затворе 3.3В, под истоком висит светодиод, оставляющий для Vgs около полутора вольт, плюс еще и сопротивлениее 300 Ом, которое ограничивает ток 1В/300Ом=3мА — это то, что потечет через реле если транзистор все-таки откроется. КАК ЭТО РАБОТАЕТ?
А ниже с ключевыми транзисторами вообще загадка. Зачем ставть ключевой транзистор с ограничителем тока в 3-5мА, если без него с ноги можно 10-20мА слизать вообще безнаказанно?
Вариант каскада с реле худо-бедно работает скорее всего потому, что BSH103 открывается уже начиная с Vgs = 1.2 вольта, и цепь реле запитана не от +3.3, а от +5. При том, что автор сам пишет, что с номиналом резистора в цепи питания реле пришлось поколдовать — скорее всего, работает на краю возможного. Никто не может гарантировать, что однажды не попадутся полевик, светодиод, реле, стабилизатор питания с комбинацией допусков, которые приведут к неработоспособности подобного решения. BTW, в биполярном варианте каскада включать диод в эмиттер при управлении особенно от TTL — скорее хорошая, чем плохая практика — угадайте, почему? ;)

Автору можно посоветовать взять обычный тестер и измерить Vgs во включенном состоянии, а затем заглянуть в даташит
угадайте, почему? ;)

Повышение напряжения базы до 1.2В?
Защита транзистора от индуктивной нагрузки?
С резюком в 300 Ом в любом случае фиговая же идея, не?
нет, там причина другая… TTL в принципе не способен дожать свой выход до нуля… остаточного напряжения может быть достаточно чтобы транзистор остался открытым при лог.0. Диод в эмиттерной цепи повышает порог открытия биполярного транзистора примерно на 0.5В
абсолютно верно! Честно говоря, я так и думал, что либо Alexeyslav, либо DIHalt :)

А, и еще — не всякий светодиодный 7-сегментный индикатор, особенно зеленый (не знаю, какого цвета у вас) в режиме динамической индикации будет ярко светиться и питании регистра-защелки от +3.3 — так как даташит дает для его выходов 6мА вытекающего тока при +5, а даже этого мало для динамической индикации. Тут по-хорошему нужен либо индикатор повышенной яркости, либо регистр с повышенной нагрузочной способностью, либо набор p-канальных полевиков/p-n-p биполярников (хорошо бы в интегральном исполнении) для увеличения импульсного тока через сегменты до 4*Iном — тогда яркость будет на уровне.
Ну и если совсем занудствовать — если катоды диодов, активирующих линии опроса клавиатуры, подключить к стокам полевиков, активирующих разряды 7-сегментных индикаторов, то можно сэкономить три линии портов ВВ. Программно, конечно, придется привязать опрос клавиатуры к циклам индикации, но это несложно. Это практически стандартное решение в случаях, когда линий портов ВВ не хватает
С таким стандартным решением, я еще к сожалению не знаком.

Спасибо за комментарии и советы, обязательно учту все это!
Меня в таких отладочных платах беспокоит их бесполезность.
Если нужно чему-то научиться, стоит делать это на каких-то практически полезных проектах. Термометр там сваять, выключатель света в туалет и т.д. Ведь неинтересно же просто так ничего не значащие символы на экран выводить.
А теперь подумайте, зачем мне пихать эту махину в устройство, где будет задействован разве что МК и 1-2 компонента?

Вы не думали сделать плату модульной: вывести разъёмы под LCD, реле, индикатор с регистром? А пользователь уже сам будет выбирать, что ему нужно, что купить и подключить к основе.
Я думаю, смысл платы с кучей барахла в том, чтобы на ней отработать программу и взаимодействие с периферией, а потом просто сляпать готовую железку с только нужными компонентами, залить готовенькое и радоваться.
Здравая мысль. У Texas Instruments такое наблюдаю. Фактически Launchpad это микроконтроллер с программатором, а всё остальное навешивается модулями (BoosterPack).

Например
image
Собственно, непонятно, чем плоха discovery. У нее, конечно, нет готовых разъемов под платы расширения, но ее можно воткнуть в макетку и просто проводами подсоединяться.
У дискавери есть разъемы под её материнку (которая, правда, стоит на порядок дороже, чем сама дискавери).

Плюс есть куча материнок OpenNXY с изобилием разъемов расширения и стандартных модулей (типа Open407V-D в которую устанавливается обыкновенная f4-disco на stm32f407).
Дополню. Основной минус discovery — это то, что она eval board, а не dev board, соответственно, установленные компоненты могут сильно мешать. На f4-disco, например, невозможно пользоваться SPI портом, на котором висит акселерометр, даже когда он не выбран через ^CS, т. к. в этом случае он считает себя работающим по I2C и может вмешаться в трафик.
Резонно. Впрочем, если очень надо — можно и дорожки перерезать.
Поэтому проще взять Nucleo
Начет таких плат не знаю, а вот Дискавери от СТМ и микрочиповские отладки — отличнейшие вещи. На них можно заниматься изучением программирования под платформу, а не поиском соплей и ошибок в собственном дизайне, когда не знаешь, почему не работает — то ли ты не так рисуешь, то ли не так паяешь, то ли не так кодишь.
Согласен, если задача освоить именно новый процессор и быстро начать писать под него что-то полезное, а не заниматься месяцами схемотехникой — Discovery отлично подходит, дешево и универсально. А любой внешний модуль можно собрать на макетке и подключиться парой проводов к нужным портам.
И для собственной разработки очень полезно иметь под рукой подсказку.
Как цепь сброса сделать, как кнопку или LED повесить, что делать с питанием, с BOOT'ами и т.д. и т.п.
Поддерживаю. Дев борды от производителя с кучей примеров с оф сайта и поддержкой комюнити отлично подходят для изучения периферии и первых прототипов. Нет проблемы за 10 минут на макетке подключить любой обвес из описанного в статье. Китайский дев борд на stm32f103 с jtag и гребенкой по периметру стоит 5 уе, остальное докупать по мере интереса
Я все же склонен, к точке зрения, что для совсем начинающих есть проблемы с закупом и сборкой. По собственному опыту говорю.
Решается это другим путем — покупкой тех же компонентов в местных магазинах. Инициализация USART с прикруткой ring buffer — вот проблема для новичка) Сборка на макетке — не проблема)) (с личного опыта)
Видимо я все же общался, несколько с менее увлеченными людьми в этой сфере, так что возможно вы в чем то правы, постараюсь как нибудь учесть ваше мнение в дальнейшем.
именно об этой плате за 5 уе я и писал выше. Вместе с одной из discovery — отличный старт
У китайцев бывают неприятные глюки (начиная от левых ftdi/cp2103 и заканчивая криво разведенным питанием), отсутствие документации (что довольно неприятно, т. к. реверсить плату с установленным чипом в LQFP44 — уже ощутимый геморрой. Кроме этого, часто требуется отдельный SWD/JTAG, что несколько увеличивает стоимость покупки, особенно, если брать нормальный (Olimex, Segger).

В этом плане discovery (а теперь ещё и серия nucleo) довольно приятна. Дешего, от производителя, со встроенным отладчиком (а nucleo ещё и с упрощенной прошивкой — прикидывается флешкой, на которую можно кинуть прошивку с любого компа).
Там на этой плате три с половиной компонента. Я покупал китайские Maple Mini (по сути, то же самое, только пины подписаны а-ля Maple), работают как часы. SWD китайский покупается за те же деньги, или делается из спичек и желудей. Nucleo хорошие, но относительно крупные и дорогие.
На самом деле, думал о модульном варианте, но как я писал выше, изначальная идея была дать опробовать, освоить и изучить все необходимое для программирования STM32 людям, у которых есть проблемы с подключением, закупкой и сборкой схемы на макетке. Плюс ко всему, этож диплом, который как я понял, будет потом использоваться для обучения студентов(которые как показывает практика ничего не знают в этой теме), по курсу микропроцессорной техники, а им бегать закупать и тем более давать подключать, что либо чревато(а хотя стоило бы, но для кафедры накладно будет к несчастью)…
Большинство курсов написаны для людей, начинавших с чего-то попроще: 8051 и подобных, PIC, AVR.
Поколение эмбеддеров стартующих сразу с ARM только появляется. Отсюда часть сложностей.
>STM32 (так как считаю, что сейчас это наиболее перспективные микроконтроллеры своего класса)

Мне кажется, вы выдаете желаемое за действительное.
Чахлый STM32 просто не нужен, когда есть полноценный arm типа rPi за почти те же деньги с возможностью установить полноценный линукс, всеми вытекающими из этого плюсами и намного большей вычислительной мощностью.
Что такое rPi и где вы его купите за 2-4 доллара и зачем нужен линукс при решении задач, которые решает МК?
UFO just landed and posted this here
Затем же, зачем сейчас весь софт пишут на с++ и .net/java. Всё можно сделать на ассемблере же, будет работать в 10 раз быстрее и жрать в 10 раз меньше памяти. Но никого это уже не парит — проще напихать готовых библиотек в management-код и выкатить решение, чем байты оптимизировать.
Так и с микроконтроллерами будет — со временем полноценный arm с линуксом будет еще дешевле и его будут ставить туда, где сейчас ставят avr и stm32 — просто потому что это быстрее и дешевле, чем возиться с оптимизацией.
А потом до посинения вылавливать баги, патчить уязвимости, искать утечки памяти… в простейшей программе только из-за того что она задействует десяток библиотек с сомнительной совместимостью(а кто будет проверять совместимость библиотек — это же потеря времени, надо быстрее, еще быстрее проще костылей наставить). В итоге получаем что разработка затягивается на годы, а интерфейс на 1ГГц ARM-процессоре безбожно тормозит. И правда, зачем… и так схавают. Пофиг что батарейки хватает уже всего на пару часов, главное сделали быстро и дёшево.
Только от эмпирической формулы
работа = быстро-дёшево-качественно(реализуемо только 2 из 3) никуда не денешься.
Raspberry Pi B+ $70, STM32F103 $1.5 при единичном заказе. Разница почти на два порядка — это не «почти те же деньги». Конечно каждый сам для себя решает, что использовать для моргания светодиодом (светом в туалете) — аналоговую схему, микроконтроллер или ARM с линуксом и интерпретатором Python.
вы же понимаете, что сравниваете готовую плату с интерфейсами и памятью с отдельным чипом?
Давайте тогда сравним STM32VL Discovery, например, (20$) и rPi A+ (20$)
Конечно понимаю. Тем ни менее, не нашёл где можно купить проц из RaspberryPI даже по цене отладочной платы с STM32F103 (ссылку давал выше, 4.7$ за штуку) на борту. Но опять таки, если подать питание на STM32, то он заработает, а для проца из малины потребуется внешняя память, внешнее хранилище и наверняка внешний кварц. Кроме этого наверняка для стабильной работы потребуется плата с контролем длинны дорожек и их ёмкости. И всё это будет стоить денег, и не факт, что самостоятельная сборка обойдётся дешевле покупки готовой малины с уже распаянным контроллером usb/lan и интерфейсными разъёмами.
Это не считая того, что имеющийся там проц — BGA, требуется проектирование и производство, как минимум, четырехслойной ПП (можно глянуть на досуге, насколько они дороже). Большинству энтузиастов это уже неподъёмно.

Если правильно помню, ещё и доки на тот броадком были чуток не для физиков и под NDA.

Также, написать загрузчик и портировать какой-нибудь uboot под ARM9/ARM11/Cortex-A куда сложнее, чем написать тривиальный код для инициализации ARM7 или Cortex-M.
Напомните, сколько там UART интерфейсов и есть ли хоть один АЦП? Возможно, ШИМ сигнал даже умеет генерировать не загружая проц на 100%?
Если вы про STM32F103RET6 который использовался в данной плате то 2 UART, 3 USART и 3 АЦП. И ШИМ сигнал он отлично генерит, действительно не нагружая проц на 100%.
Это вопрос-сарказм на комментарий про распбери. Обратите внимание на стрелочку в заголовке комментария, она перекидывает на комментарий, к которому пишется ответ. С STM32Fxxx знаком хорошо, спасибо)
Заплутал в комментах… но зато побыл кэпом)

image
Ни линукс, ни ацки прожорливая малина не нужна, когда надо работать с парой-тройкой входов-выходов и устройством индикации. STM32F030 в TSSOP20 (отдельный чип) можно купить за 55 центов, я даже материал ему посвятил. Вот когда будет 16-28 ногий SoC хотя б за 5 баксов, и чтоб кушал как STM, тогда и да.
Работа большая и основательная, но весь вопрос в себестоимости. Если Вы делаете средство обучения для студентов — надо чтобы было максимально дешево, по моему ощущению себестоимость этого девайся если закупались в крупном интернет магазине (партией 10 штук) получается 3000р примерно + монтаж (это еще 400р). Надо сделать наценку 50% чтобы зарплату людям платить. Получается продажная цена 5100рублей. Это не дешево. Поэтому китайцы делают маленькие дешевые платки за 200 рублей. Разбейте Ваш проект на дешевые модули и продавайте по отдельности.
В этом я с вами соглашусь, наверно есть смысл для людей занимающихся самостоятельно действительно разбить это все на модули, и возможностей больше станет, но все же так как эта плата планируется использоваться в моем универе на курсе микропроцессорной техники, то там все же удобно использовать единую конструкцию.
Здравствуйте!
А можете выложить свое методическое пособие. Было бы очень интересно посмотреть ваш вариант учебного курса.
Мне кажется, или с платы не смыт флюс?
А еще как-то странно выглядит наложение индикаторов.
И лучше бы повернуть фото так, чтобы модель и сама плата были ориентированы одинаково.
А вот вам интересный факт.
Конденсатор С11 в 1мкФ заряжается до 3,3В. И при нажатии на кнопку SB1 импульсно разряжается через нее. Сопротивление указано < 100 мОм. Начальный ток разряда — не менее 30А. Рабочий ток кнопки — 50мА.
И классный импульс ЭМИ.
Старые, дорогие и редкие BSH103 в серии лучше на что-нибудь заменить. Если именно они были в физическом доступе, понимаю. Все так прототипируем. А вот если выбраны по наличию модели в симуляторе, это путь, чреватый преткновениями.

А главное, проект нужный! Уважение. Продолжайте! За STM32 настоящее и величайшее будущее.
Sign up to leave a comment.

Articles