Задумывая технологический стартап, вы совсем не обязаны быть асом в электронике, гораздо больше шансов на хорошую идею имеет узкий специалист со знанием основ маркетинга, но, даже заказывая кому-то разработку, ориентироваться в возможностях современной элементной базы и представлять цену решения необходимо обязательно. Иначе можно потребовать невозможного, либо получить устройство с завышенной себестоимостью на устаревшей элементной базе.
Под катом попытка кратко и просто рассказать о возможностях современных микроконтроллеров людям от них далёким. Для тех, у кого есть идея нового электронного устройства, но отсутствует представление о том, что такое микроконтроллер. Те, кто хочет сделать первый шаг от занимательных экспериментов с платформой ардуино к проектированию собственных устройств, также могут найти в ней простые, но полезные советы. Я старался, не останавливаясь на технических подробностях,
Краткое содержание статьи:
Как микроконтроллеры завоевали мир
Архитектура ARM — сегодняшний лидер рынка микроконтроллеров
Конкуренция с младшими братьями
Об укладке асфальта, пользе сна и его разновидностях
Совсем коротко о технологии изготовления и о том, как появляются серии микроконтроллеров
Периферия простейшего ARM микроконтроллера за пол бакса
Самый дешёвый способ получить дополнительные функции
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
Cortex-M7 — когда хочется большего…
Защита кода, возможность его обновления и многообразие помогли микроконтроллерам завоевать мир
Любой умный прибор требует управления. В большинстве случаев сегодня этим занимаются микроконтроллеры — чипы, которые совмещают в себе микропроцессорное ядро, память и периферийные модули, отвечающие за связь с остальными компонентами устройства и внешним миром.
Микроконтроллеры — мастера на все руки. Один микроконтроллер способен заменить десятки специализированных микросхем, которые были бы необходимы для выполнения требуемых функций в случае, если бы роль вычислителя занимал микропроцессор.
Одно из неоспоримых преимуществ микроконтроллера — программа, под управлением которой он работает, скрыта внутри его корпуса (в секции под названием “память программ”) и очень хорошо защищена от взлома, конечно, в случае, если разработчик микрокода об этом позаботился, активизировав встроенные механизмы защиты. Таким образом, вы получаете защиту интеллектуальной собственности настолько большую, насколько это возможно в наши дни.
Что нельзя взломать — то можно скопировать. Зачем пытаться считать код, встроенной в микроконтроллер программы, с помощью дорогостоящих хитроумных приспособлений, если проще и дешевле найти профессионала, который может написать его заново? Возможно результат будет даже лучше, а функционал богаче чем у прототипа. Да это стоит денег, но содержание FLASH памяти сегодняшних микроконтроллеров настолько хорошо защищено, что попытки грубого “взлома” обойдутся ещё дороже. Кроме того, решается проблема интеллектуальной собственности, а вы, вместе с исходными кодами программы, получаете возможность развивать и совершенствовать своё устройство.
Память программ, в современных универсальных микроконтроллерах, является перезаписываемой, причём процесс перезаписи можно повторять не один десяток тысяч раз. Напрашивается использование этого факта для обновления программного обеспечения с целью устранения найденных в нём ошибок или расширения функций уже работающего устройства. Это достаточно просто реализовать — добавив в программу специальный участок кода под названием “бутлоадер”, вы получаете возможность обновлять программное обеспечение вашего прибора различными способами: в пункте сервисного обслуживания (если устройство имеет специальный, скрытый внутри корпуса от посторонних глаз, разъём), подключив к компьютеру по USB, через сетевой или даже беспроводной интерфейс. Главное, предусмотреть в приборе необходимую для этого периферию. Предоставляя возможность обновления ПО, всегда следует думать о безопасности, если этот процесс недостаточно защищён, мало того, что злоумышленники могут похитить ваш код, они могут модифицировать его и использовать в своих
Архитектура ARM — сегодняшний лидер рынка микроконтроллеров
Со времён Царя Гороха микроконтроллеры принято разделять по разрядности данных, над которыми они проводят операции. В подавляющем большинстве случаев, сегодня, в новых разработках, стоит останавливать свой выбор на 32 битных микроконтроллерах с ядром АRM. Существует огромное количество их модификаций и всегда можно подобрать экземпляр, наилучшим образом подходящий для решения вашей задачи. В зависимости от набора функций и производительности, цена чипа может составлять от десятков центов до десятков долларов.
Микроконтроллеры(MCU), в зависимости от архитектуры вычислительного ядра, принято разделять на крупные семейства. На сегодняшний день, для разработок устройств малой и средней сложности, наиболее популярны микроконтроллеры c ядрами от Cortex-M0 до Cortex-M7. Чем больше цифра, тем больше вычислительные (и не только) возможности, цена и максимальное энергопотребление. Не последнюю роль в популярности ARM сыграла преемственность архитектуры. Разработчик может с минимальными издержками модифицировать программный код своих предыдущих наработок, переходя от микроконтроллеров одного производителя к чипам другого и мигрируя между ядрами с разной производительностью.
Конкуренция с младшими братьями
Однако ARMы «рулили» не всегда. Я хорошо помню времена, когда абсолютными лидерами рынка были 8 битные микроконтроллеры и, с занятых позиций, их безуспешно пытались оттеснить 16 битные коллеги, но, по иронии судьбы, удалось сделать это только 32 битным старшим братьям. Так сложилось, что к моменту их появления, технологии изготовления чипов сильно удешевили интеграцию в них больших объёмов FLASH памяти. Воспользовавшись удобным случаем, программисты стали переходить с ассемблера на язык более высокого уровня — Си, структура которого отлично ложилась на 32 битную архитектуру. В результате 32 битные микроконтроллеры выполняли вычисления гораздо быстрее своих 8 и 16 битных коллег, но была одна проблема — у них был выше ток потребления.
Поэтому, поначалу, они использовались в случаях, когда требовалась большая вычислительная производительность.
Известно, что средний ток потребления вычислительного ядра микроконтроллера существенно увеличивается с поднятием его тактовой частоты. Поначалу 8 битные модели микроконтроллеров отличались заметно меньшим потреблением при сходной частоте и, кроме того, были способны работать от низкой тактовой частоты, вплоть до 32 кГц.
Энергопотребление микроконтроллеров сильно зависит от тактовой частоты ядра и периферии, чтобы её регулировать, для генерации стали использовать, широко применявшийся в радиопередающих устройствах, узел формирования тактовой частоты на основе ФАПЧ. Это позволило в широких пределах изменять тактовую частоту, не меняя задающий кварцевый резонатор. Периферийным модулям совсем не обязательно иметь такую же тактовую частоту, что и вычислительному ядру. Чтобы снизить их энергопотребление, частоту на них стали подавать через делители с программно-регулируемым коэффициентом деления. Ввели возможность отключать неиспользуемые модули. Эти меры сильно уменьшили энергопотребление, но оно по прежнему оставалось существенно больше, чем у 8 битных.
На короткое время сложился паритет — 32 битные MCU захватили нишу топовых приложений, а 8 битные уверенно удерживали позиции в устройствах, для которых было важно низкое энергопотребление. Он сохранялся до тех пор, пока 32 битные MCU не освоили в совершенстве «импульсный» режим работы.
8-битники, к тому времени, тоже научились это делать, но, из-за низкой производительности, бодрствовать им приходилось гораздо больше и, как результат, они начали проигрывать по энергопотреблению, особенно в задачах, требующих расчётов, что иллюстрирует картинка ниже.
Об укладке асфальта, пользе сна и его разновидностях
Итак, микроконтроллеры настолько хорошо научились считать, что стали выполнять свою работу очень быстро и большинство времени были вынуждены “бить баклуши”, пожирая энергию для выполнения холостых циклов. В устройствах с автономным питанием это сильно сокращает ресурс батарей или время работы от одной зарядки аккумуляторов.
Понаблюдайте за строительными рабочими которые кладут асфальт. Они резко активизируют свою работу, когда пришёл грузовик с новой порцией асфальта, а после его укладки снижают темп. Так и микроконтроллеры умеют повышать и снижать частоту тактирования ядра. Однако, им это даётся не так просто, как рабочим — одновременно изменится и частота работы всей внутренней периферии, поэтому, чувствительные к этому её части придётся перенастраивать.
Не проще ли, выполнив быстро всю работу, немного поспать. Зачастую, да. Причём виды сна микроконтроллеров отличаются ещё более драматично, чем у человека.
Можно просто вздремнуть. В этом случае наш чип всегда наготове и как только зазвенел будильник таймера или его потревожило внешнее прерывание, он просыпается практически мгновенно. Как человек во время дремоты может снять напряжение, но не выспаться толком, когда тебя постоянно дёргают, так и микроконтроллер может снизить своё энергопотребление в этом режиме “всего” раз в 10, называют этот режим SLEEP.
Лучший способ хорошо выспаться — раздеться, лечь в постель, задёрнуть шторы на окне и включить будильник. Однако, после такого сна, уже моментально в работу не включишься. Придётся, как минимум, предварительно ополоснуться холодной водой и одеться. Есть такой режим и у микроконтроллера, когда он ограничивает количество внешних раздражителей и выключает основной тактовый генератор. Это режим STOP. В нём можно уменьшить потребление в 1000 раз, но и на выход из него уже потребуется существенное время.
Теперь, представьте себе, что вы перед сном выпили изрядную дозу снотворного, отключили будильник и телефон, закрыли все окна и двери. Это будет режим STAND BY. Вывести из такого режима микроконтроллер можно только с помощью особых выводов и большая часть памяти о том, чем он занимался перед таким сном будет потеряна навсегда, придётся начинать работу заново. Зато находясь в таком режиме MCU потребляет ещё в два раза меньше.
Последний, весьма экзотический режим, напоминает уже кому, из которой нельзя выйти без специального оборудования. В этом случае работает только специальный генератор
Выбирая режим экономии энергопотребления необходимо помнить о последствиях применения:
- чем глубже сон, тем дольше пробуждение
- чем глубже сон, тем меньше способов вывести из него микроконтроллер
- чем глубже сон, тем меньше остаётся информации о предыдущем состоянии микроконтроллера
- для достижения минимальных заявленных значений, во многих режимах необходимо принимать дополнительные меры, например — отключения периферии
- для минимизации энергопотребления устройства в целом необходимо грамотно спроектировать схемотехнику всего устройства
- для минимизации энергопотребления устройства в целом, нужно позаботиться о том, чтобы остальные компоненты и цепи также имели микропотребление в неактивном режиме. Глупо предпринимать огромные усилия для того, чтобы опустить потребление микроконтроллера ниже одного микроампера и, при этом, применять в устройстве дешёвый стабилизатор с током собственного потребления в 100 микроампер
но встречается такое сплошь и рядом - для успешного использования режимов глубокого сна не только программа, но и схемотехника, должны быть тщательно продуманы, иначе, вместо экономии, можно получить весьма серьёзные проблемы — редко случающееся, зато “мёртвое” зависание устройства по необъяснимой причине, либо слишком частое пробуждение и, как результат, потребление на порядки выше ожидаемого
Если ваши программист со схемотехником не первый день винят друг друга в криворукости и, вместе, производителя в публикации нереальных цифр в даташитах на микроконтроллер, а ваше устройство сажает батарейки на порядок быстрее, чем вы рассчитывали, это повод, по крайней мере, обратиться к независимым высококвалифицированным экспертам.
Совсем коротко о технологии изготовления и о том, как появляются серии микроконтроллеров
Физически активная часть микроконтроллера, как и подавляющее количество других микросхем, обычно сформирована на пластине монокремния (назовём его, в данном контексте, ЧИП). Чипы занимают очень маленькую площадь, технологически же выгодно производить пластины большого диаметра, поэтому, обычно большое количество чипов, как соты, размещают на одной большой пластине и формируют, в ходе одного технологического процесса. В последствии пластины нарезают на кусочки, получая уже отдельные чипы, которые и помещают в корпуса. Разработка топологии и отладка технологических процессов нового чипа стоит очень дорого, а занимаемое на пластине одним чипом место, как правило, не велико. Производителям выгодно выпускать чипы крупными партиями, но пользователям требуются микроконтроллеры в разных корпусах — кому то важно получить корпус поменьше и подешевле, другому наоборот требуется побольше выводов, чтобы управлять LCD или внешней памятью с параллельным интерфейсом. Производителям выгодно перекрывать все ниши, чтобы клиенты не перебегали к конкурентам, не найдя оптимальной для себя модели.
Очень часто бывает выгодней выпустить крупной партией один универсальный чип и помещать его в разные корпуса, чем запускать десяток различных. У чипов, помещённых в корпуса с малым количеством выводов, часть портов (в данном контексте, под портами будем понимать контактные площадки на поверхности чипа, служащие для общения с внешним миром) просто останутся неподсоединёнными. Часто производители идут дальше — чтобы поднять спрос и цену на микроконтроллеры с большим количеством ножек, они искусственно обрезают функциональность тех, у которых их меньше — отключают некоторые функции, ограничивают объём доступной памяти и т. п.
Так на основе одного чипа формируют серии микроконтроллеров, существенно отличающиеся по объёму памяти и набору периферийных модулей, иной раз и в разы по цене. При этом чипы, в них установленные, могут нарезаться из одних и тех же пластин. Поскольку площадь, на которой размещается один чип, невелика, вклад её в себестоимость конечного изделия также мал и им можно пожертвовать. Становится выгодным отключение дополнительной памяти и других функций, например, на этапе тестирования — либо с помощью однократно программируемых битов конфигурации, либо пережиганием перемычек лазером. Лишь для наиболее массовых изделий имеет смысл для этого создавать слегка изменённый фотошаблон. Причём, совсем не обязательно там будет физически отсутствовать неиспользуемая память, её, опять же, можно просто отключить, удалив перемычки в шаблоне.
Так из одного стандартного дизайна чипа формируется целая серия микросхем.
Периферия простейшего ARM микроконтроллера за пол бакса
Процессорное ядро — это мозг, но, чтобы он не был подобен “сферическому коню в вакууме”, требуются аналоги органов чувств и конечностей.
В микроконтроллере их роль играют выводы на корпусе, к которым внутри корпуса могут подключаются порты(контактные площадки) чипа. В свою очередь, через внутренние коммутаторы, к одному и тому же порту могут подключаться различные периферийные модули.
Для начала рассмотрим периферию одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03.
Для этой серии имеем следующий набор базовых функций:
Часы реального времени (Real Time Clock или RTC), которые могут запитываться с помощью отдельного вывода и работают от отдельного низкочастотного резонатора. Этот модуль потребляет крайне мало энергии, в случае пропадания основного питания он может часами работать от заряженного конденсатора, или годами от маленькой встроенной в прибор батарейки. Кроме этого, он может служить в качестве будильника, выводя микроконтроллер из состояния даже самого глубокого сна в заранее заданное время.
WatchDog — сторожевая собака мешающая микроконтроллеру заснуть навсегда, например, свалившись в бесконечный цикл или перейдя по несуществующему адресу. Его принцип работы прост. Программист настраивает таймер защиты от “зависания” на определённый период времени, допустим на секунду, и запускает его. Затем он расставляет, в выбранных им местах программы, короткие участки кода, которые перезапускают таймер с нулевого значения. Если за секунду не произошло ни одного сброса таймера, WatchDog считает, что с программой что-то не так и устраивает микроконтроллеру перезапуск. Программа начинает работать с начала, причём существует возможность определить являлся ли инициатором ресета WatchDog и учесть этот факт при запуске.
Универсальные цифровые входы-выходы (General Purpose Input-Output GPIO) — это самая распространённая функция, которую поддерживают большинство выводов микроконтроллера. Они могут конфигурироваться либо как входы, либо как выходы.
Рассмотрим работу в качестве входа. Если напряжение на входе микроконтроллера меньше некоего порога (как правило близкого к половине питания), то оно воспринимается как логический ноль, в противном случае как 1. Цифровые входы обычно имеют очень высокое входное сопротивление, поэтому, если их оставить не подключенными, их состояние может скакать из нуля в единицу и обратно, под действием наводок электромагнитных полей. Для того, чтобы этого не происходило, существуют специальные режимы, когда внутри чипа вход соединяется через сопротивление 20 — 50 КОм с плюсом питания микроконтроллера (pull-up) или с минусом (pull-down).
Если выводы сконфигурированы цифровыми выходами, то их программно можно перевести в высокий уровень равный напряжению питания микроконтроллера, либо низкий. Существуют и более хитрые режимы, но не будем вдаваться в чрезмерные подробности.
На рисунке выше изображён участок схемы, спроектированного мной устройства (спутникового модема), с элементами простейшей защиты портов микроконтроллера. X4 — разъём для внешних коммуникаций. Нас интересуют контакты 5-7, к которым присоединяются тревожные кнопки. Сигналом тревоги служит замыкание на землю, поэтому, в нормальном состоянии, на портах должно присутствовать напряжение питания микроконтроллера, что и обеспечивают резисторы R24-R26, номиналом 1 КОм. Супрессоры VD4-VD6 ограничивают напряжение на уровне 5 вольт, это допустимо потому, что применяемый мной микроконтроллер, хотя и питается напряжением 3,3 вольта, но имеет порты толерантные к напряжению 5 вольт. Резисторы R29-R31 на 100 Ом.
Подобная защита спасёт порты вашего микроконтроллера от внешних перенапряжений. У некоторых микроконтроллеров отдельные порты не боятся напряжений, превышающих их напряжение питания. Так у многих микроконтроллеров STM32Fxx почти все порты
Пожалуйста, соблюдайте технику безопасности. Не оставляйте, свободные, висящие в воздухе порты микроконтроллера сконфигурированными в виде входов, особенно в устройствах временами уходящих в глубокий сон — это как минимум может значительно усложнить процесс прохождение вашего устройства теста на ЭМС (электро-магнитную совместимость). Если оставляете их входами, лучше замкнуть их на землю или питание. Либо программно сконфигурировать выходами.
Существует ещё один лайфхак. Иногда их можно оставить входом и замкнуть на другую цепь. Это помогает в случае очень плотной трассировки провести проводник «сквозь» микроконтроллер, что особо актуально для двухслойных плат.
Используя порты микроконтроллеров в качестве выходов, также стоит свериться с даташитом. Отдельные порты могут иметь разное ограничение по максимальному току, который от них можно получить не опасаясь выхода их строя — нагрузочную способность. Кроме этого, сам чип имеет максимальную нагрузочную способность всех выходов в сумме, которую не следует превышать.
Последнее, о чём хочется упомянуть, выходные порты ARM микроконтроллеров не реагируют на программные инструкции мгновенно, как у 8-битных микроконтроллеров. Они управляются через шину, и их быстродействие зависит от частоты тактирования соответствующего узла, которую можно менять программно. Если вы хотите быстрой реакции, позаботьтесь об увеличении этой частоты, если важнее уменьшить энергопотребление, наоборот выберите менее скоростной режим.
Температурный сенсор Микроконтроллер имеет свой собственный температурный сенсор, правда не слишком точный, тем не менее его можно, с определёнными допущениями, использовать для измерения температуры внутри корпуса прибора.
Уникальный серийный номер Каждый микроконтроллер имеет свой уникальный серийный номер, присвоенный ему на производстве. Очень удобная особенность, которую можно использовать при организации серийного производства ваших изделий.
Интерфейсы обмена данными Различные микроконтроллеры данной серии могут иметь по нескольку наиболее распространённых интерфейсов, сильно облегчающих общение с другими чипами и внешним миром:
- USART — асинхронный последовательный порт, часто использующийся для связи с компьютером
там он называется COM или RS232, модемами и другими устройствами - SPI — высокоскоростной интерфейс, который имеют очень многие чипы, например внешняя память
- I2C — двухпроводной интерфейс, разработанный для общения с датчиками и другой периферией на небольшом расстоянии и небольших скоростях обмена. Большой его плюс заключается в том, что одновременно к одной шине можно подключить десятки различных устройств
Все эти интерфейсы несложно реализовать программно с помощью обычных GPIO, но они будут работать гораздо медленнее и отнимать много ресурсов вычислительного ядра.
Аналого-цифровой преобразователь АЦП или ADС на котором придётся остановиться подробнее.
Чрезвычайно полезный модуль, который способен измерять напряжение аналоговых сигналов. Оценивает он их в долях от величины опорного источника сигнала, в нашем случае это напряжения питания аналогового модуля микроконтроллера, которое может быть равным или немного ниже основного напряжения питания чипа. Теоретическая точность работы АЦП зависит от его разрядности. В современных микроконтроллерах чаще всего применяется 12 разрядный АЦП последовательного приближения, реже 10 и как экзотика встречается 16.
При питании 3 вольта 12 разрядный АЦП микроконтроллера будет иметь разрешающую способность 3/4096=0.00073 Вольта — лучше одного милливольта.
Но на практике достичь этого идеала бывает не просто.
нестабильность напряжения источника питания АЦП
- применять для питания MCU линейные стабилизаторы с хорошими параметрами
- применять для питания аналоговой части MCU высокостабильные источники опорного напряжения
импульсные помехи по питанию АЦП
- подключать аналоговое питание к цифровому через простейшие фильтры низкой частоты — подавать питание на аналоговую часть MCU через индуктивность и в непосредственной близости от входа микроконтроллера устанавливать керамический конденсатор с диэлектриком XR7 ёмкостью 100 нанофарад, а ещё лучше, параллельно ему включить танталовый конденсатор с ёмкостью в одну — две микрофарады.
импульсные помехи на входе АЦП
- пропускать входной сигнал хотя бы через простейший ФНЧ, состоящий из резистора и конденсатора. Для борьбы с помехами от передающих радиотрактов и короткими импульсными помехами иногда достаточно одиночного конденсатора с диэлектриком NP0 ёмкостью в несколько десятков пикофарад, установленного между входом и землёй, в непосредственной близости от входа АЦП
- не экономить на блокировочных конденсаторах, по крайней мере самого микроконтроллера, устанавливать их в непосредственной близости от каждого вывода питания и в других местах, рекомендованных производителем, рекомендованного им номинала
- тщательно выбирать месторасположение компонентов и соблюдать правила трассировки цепей питания и особенно “земли”, в идеале аналоговая и цифровая земли должны соединяться в одной точке — рядом с выводом аналоговой земли микроконтроллера
высокое выходное сопротивление источника сигнала, опасно тем, что в момент старта измерения АЦП последовательного приближения, которое чаще всего используется в микроконтроллерах, его вход потребляет некоторый отличный от нуля ток и это может привести к уменьшению истинного значения напряжения, так как сигнал фактически подаётся через делитель напряжения.
- правильно выбирать параметры настройки АЦП, например во многих микроконтроллерах можно увеличить время зарядки входной цепи, правда тут приходится идти на компромисс, снижая быстродействие
- устанавливать на входе АЦП буферные усилители на основе ОУ (операционный усилитель), или повторители напряжения. Выбирать их по принципу самых дешёвых не стоит, можно не улучшить, а ухудшить ситуацию, причём значительно. Если не хватает собственного опыта, лучше поискать специально рекомендованные производителями для подобных приложений
Выше изображён участок реальной схемы для подачи питания на аналоговую часть микроконтроллера в устройстве с батарейным питанием. В данном случая я использовал АЦП для оцифровки сигнала с аналогового MEMS микрофона и поэтому имело смысл выделить в отдельную цепь не только аналоговое питание, но и аналоговую землю. В большинстве случаев это избыточно, для того чтобы от неё действительно был толк, нужна ещё и правильная трассировка.
От цепи VBUT питается вся цифровая часть микроконтроллера. На всякий случай привожу номиналы элементов: R5-10 Ом, С10 0.1 мкФ, без индуктивностей L1 и L2 BLM18PG471SN1D в большинстве случаев можно обойтись.
Ещё один любопытный пример из моей практики. В плате, на которой размещалось большое количество высокопотребляющих чипов ASIC, необходимо было измерять их температуру. Самый простой и дешёвый способ — использование высокоомных термисторов. В качестве фильтров я применил конденсаторы достаточно большой ёмкости, воспользовавшись тем фактом, что температура меняется сравнительно медленно. Для оцифровки звука такой фокус однозначно бы «не прокатил».
Осталось упомянуть ещё одну важную особенность АЦП, характерную для микроконтроллеров. Собственно, модулей АЦП в нём, как правило, один или два, а вот входов может быть много. В описываемой серии модуль 1, а входов может быть до 16. Как же так? Очень просто, входы подсоединены к нему через коммутатор. Если вы собираетесь измерять напряжение с 10 входов, то должны организовать цикл — последовательно переключить коммутатор к каждому из 10 входов и сделать измерение. Это необходимо учитывать, рассчитывая времена измерения. В данной серии АЦП, теоретически, способно сделать измерение за 1 микросекунду. Получается, что полный цикл 10 измерений у вас займёт точно больше 10 микросекунд!
Система прямого доступа в память ПДП или DMA — ещё одна архиважная вещь. Этот модуль позволяет пересылать данные от периферии в память или наоборот.
Например, с его помощью вы можете выделить участок памяти для хранения данных, приходящих из АЦП и сделать из него кольцевой буфер. Далее запускается АЦП в режиме считывания данных через равные промежутки времени. Используя механизмы DMA, считанные данные будут, без участия ядра, самостоятельно, байт за байтом, помещаться в выделенный буфер. Когда буфер будет полностью заполнен, ядро получит сигнал и приступит к их программной обработке, а система DMA начнёт процесс загрузки сначала. Поскольку DMA имеет несколько каналов, то никто не мешает реализовать для нашего случая автоматический вывод на USART данных из буфера. В результате мы получим, работающий без использования ядра процесс передачи считанных с АЦП в USART, и не простая работа программиста по конфигурации DMA окупится сторицей.
Модуль широтно-импульсной модуляции ШИМ или PWM, в силу ограниченности статьи не будем останавливаться на нём подробно, отмечу только, что это крайне полезная и широко используемая функция, с помощью которой возможно управлять яркостью светодиодов, скоростью вращения двигателей, рулевыми машинками, конструировать интеллектуальные DC-DC преобразователи и даже звук синтезировать.
Что можно получить, добавив 30 центов?
Переход на Cortex-M0+. Самый дешёвый способ получить дополнительные функции
А какие дополнительные плюшки предлагает микроконтроллер новейшей серии с ядром чуть посовременнее Cortex-M0+, при стоимости на 20-50 центов дороже аналогов в рассмотренной выше серии по корпусу и количеству выводов?
Таблица отличий между сериями
- в два раза увеличилась максимальная тактовая частота
- с 2 до 1.7 вольт понизилось минимальное напряжение питания
- АЦП способно работать в два с половиной раза быстрее
- появились два канала 12 битного цифро-аналогового преобразователя. Это крайне полезная функция, с помощью которой возможно формировать на выводах сигнал заданного напряжения с точностью лучшей чем 1 мВ, например сигналы произвольной формы в звуковом диапазоне частот
- появились компараторы — устройства для сравнения величин двух аналоговых сигналов, это бывает полезным скажем для определения момента возникновения перегрузки по току
- добавлен USB интерфейс, посредством которого можно подключать устройства к компьютеру. Особый интерес вызывает наличие поддержки опций управления питанием для реализации USB type3-C совместимого интерфейса. О нём я рассказывал в одной из своих статей на Хабре
- появился ускоритель AES для процедур 256 битного шифрования/дешифрации
- UART получил возможность работы в режимах сна и аппаратную поддержку протоколов LIN (простая сеть, широко используется в автопроме), IRDA (протокол передачи данных посредством инфракрасных светодиодов, вспомните телевизионные пульты), SIMcard…
- расширены возможности таймеров и модуля PWM
- верхняя граница температурного диапазона работы поднялась до 125 градусов
- увеличена надёжность работы за счёт расширения режимов перезапуска при возникновении проблем с питанием
- добавлен “честный” аппаратный генератор случайных значений — полезная функция в криптографии
Ну что же, для многих применений незначительная добавка в цене себя вполне окупает, поскольку можно отказаться от перехода на более дорогостоящие микроконтроллеры старших модельных рядов.
А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
- Максимальная тактовая частота вырастает уже до 80 МГц
- Появился блок для ускорения вычислений с плавающей точкой
- Ясное дело, максимальная встроенная память увеличилась
- Модели с количеством ног 100 и более поддерживают работу с внешней статической памятью
- USB научился работать в режиме HOST
- Появился контроллер CAN интерфейса. Это очень перспективный интерфейс разработанный для высоконадёжных приложений. Своё победное шествие он начал с автомобильной промышленности и уже почти 20 лет ведёт затяжную войну с давно устаревшим RS-485 в крайне консервативной отрасли промышленной автоматизации.
- Появился интерфейс для подключения SDcard. Очень полезная функция — добавляете в своё устройство держатель за 50 центов и получаете съёмный носитель размером в десятки Гигабайт! С большинством карт удаётся работать и по обычному SPI, но намного медленнее
- Добавили встроенный Операционный Усилитель с большим разнообразием режимов работы. Именно благодаря этой и предыдущей функциям, для своего последнего проекта беспроводного стетоскопа, пришлось остановить выбор на M4 вместо M0+. В результате появилась возможность управлять усилением сигнала с MEMS микрофона и сохранять десятки часов аудиозаписей работы сердца на SD карте
- Криптомодуль научился аппаратно считать HASH функции.
- Контроллер сенсорных приложений усовершенствован и теперь поддерживает уже не только кнопки, но и элементы прокрутки
Cortex-M7 — когда хочется большего...
В подавляющем количестве проектов возможностей предоставляемых вышеописанными ядрами достаточно, но случаются и исключения. Лично со мной такое случалось всего пару раз, причём лишь один раз по действительно уважительной причине — требовалась высокая производительность для подготовки данных для ASIC, контроллер Ethernet и шина CAN-FD c повышенной скоростью обмена.
Если на уровне универсальных микроконтроллеров с ядрами Cortex 4 и ниже, на мой субъективный взгляд, по параметру цена/функциональность сейчас лидирует фирма ST, то в области более высокопроизводительных чипов она уступает лидерство ATMEL, вернее, теперь уже недавно поглотившему его MICROCHIP. Поэтому я остановил свой выбор на серии ATSAMV71, стоимостью от 6 долларов.
Помимо вышеописанного (контроллер Ethernet и шина CAN-FD), по большому счёту, мы получаем, существенно увеличивающее производительность ядро с ускорителем операций, работающее на тактовой частоте до 300 МГц, интерфейсы для подключения видеоматрицы и поддержку динамической памяти.
В заключении попрошу имеющих опыт общения с микроконтроллерами попрошу выбрать подходящий ответ на вопрос.
Комментарии (212)
progchip666 Автор
04.04.2019 00:19Как интересно идёт голосование! Не ожидал что 8 битники получат перевес. Правда с учётом того, что я сильно сегментировал ARM по ядрам, они всё таки пока впереди, но с минимальным перевесом.
quwy
04.04.2019 01:25+38 битники получат перевес
Не в последнюю очередь благодаря приятным для DIY корпусам (включая тот самый).8street
04.04.2019 09:04С корпусами как раз проблем нет с появлением переходников QFP-DIP и аналогичных. Плюсом, на этих переходниках есть вся необходимая комплектуха. Популярность 8-битных МК вызва Ардуино сообществом, где они и применяются, в основном.
progchip666 Автор
04.04.2019 09:22Для того чтобы эти переходники использовать надо ещё LQFP паять научиться. Некоторых это пугает. Зачем напрягаться.
Тем не менее думаю фактор Ардуино таки перевешивает. Правда большинство любителей этой платформы оперирует на уровне плат и редко что-то самостоятельно на микронтроллерах собирает.SamaRazor
04.04.2019 14:34+1LQFP все-таки не BGA, не так страшен черт как его малюют. Относительно легко управиться почти любым паяльником и хорошим флюсом/припоем.
progchip666 Автор
04.04.2019 14:40Абсолютно правда, главное иметь хороший, как вы отметили флюс, точно спозиционировать чип, тогда он при некоторых навыках паяется широким жалом по нескольку ножек за один провод паяльника. Но ведь сначала этот навык надо наработать! Умельцы в ларьках по ремонту сотовых телефонов с помощью фена и простейшей печки и BGA корпуса с мелким шагом достаточно легко заменяют!
BigBeaver
05.04.2019 07:56Можно тупо канифолью.
progchip666 Автор
05.04.2019 08:09Если стремление к совершению подвига в душе неистребимо, можно и канифолью и даже тупо.
Свои первые поделки в кружке радиолюбителей в конце концов я так паял и ничего, работало. Правда микросхем в них не было никаких, даже в DIP корпусах.BigBeaver
05.04.2019 08:19Ну почти любой флюс состоит из канифоли, растворителя и активаторов. Если плата луженая (а не золото, скажем), то активаторы не нужны — с обычной чистой канифолью очень хорошо запаяется. Главное чтобы плата с маской была. Ну и жало только толстое и можно использовать — ровность пайк в этом случае обеспечивается поверхностным натяжением, а не точностью попадания.
Andy_Big
04.04.2019 09:40Ардуины там выделены в отдельный пункт :)
А переходники — так какая разница паять QFP на переходник или сразу на плату?Alexeyslav
04.04.2019 10:02Разница в том что переходник делается на производстве с более тонкими технологическими нормами, а плата куда вставляется контроллер делается в домашних условиях где проблемы начинаются уже с дорожек 0.4мм и провести дорожку между выводом контроллера с шагом 2.54мм/1.27мм и 0.5мм огромная разница.
Проблема не впаять контроллер в плату, а изготовить ту самую плату в домашних условиях.Andy_Big
04.04.2019 10:23Да вроде дорожки 0.3 мм с промежутком 0.2 мм давно уже не проблема даже при лазерно-утюжном изготовлении, не говоря уж о фоторезистивном :)
А проводить дорожки между выводами QFP не каждое производство позволит. И если вдруг возникает такая необходимость, то явно имеются какие-то проблемы с проектированием платы в целом, а не с ограничениями домашнего изготовления.progchip666 Автор
04.04.2019 10:54Вот смотрите. Рекомендованная ширина площадки для LQFP 0.3 мм, шаг 0.5 мм. Чтобы провести дорожку не уложимся даже в нормы 0.1 мм ширина, 0.1, расстояние между дорожкой и контактной площадкой, поскольку поскольку у нас всего 0.2 мм остаются. А там ещё вопрос маски вылезет на поверхность.
Китайцы конечно сделать смогут, а вот тот же Резонит уже вряд ли. В таких ситуациях гораздо лучше перейти на четырёх слойку и она обойдётся дешевле чем двухслойка, которая позволяет творить такие чудеса! При массовом производстве плат сегодня четырёхслойка без извращений стоит всего процентов на 20 дороже двухслойки с одинаковыми нормами допуска.
В последнем проекте очень хотелось поставить BGA чипы с шагом 0.5 мм, но крепко подумал отказался. Вручную сэмплы спаять сложно, проверить качество пайки невозможно, отлаживать плату крайне неудобно. Скрипя сердцем установил таки LQFP 64 и перекинул несколько компонентов на вторую сторону платы. Зато плату без проблем сделали в Резоните. Это был прототип, если дойдёт до серии ещё подумаю…
Кстати, что легко можно делать даже в утюжной технологии — пускать проводники по углам LQFP, для 64 нового корпуса и более легко проходит по три проводника.
Andy_Big
04.04.2019 10:59+1Так это Вы не меня уговаривайте, а того, кому я отвечал :) Я-то написал то же самое — и что между выводов QFP дорожки не стоит пускать даже при нормальном производстве плат, и что утюжная технология позволяет QFP без особых трудностей :)
BigBeaver
05.04.2019 08:04Резонит спокойно делает 0.1мм зазоры.
При массовом производстве плат сегодня четырёхслойка без извращений стоит всего процентов на 20 дороже двухслойки с одинаковыми нормами допуска.
В Резоните при прочих равных цена пропорциональна числу слоев.progchip666 Автор
05.04.2019 08:390.1 он делает не спокойно, но с существенной надбавкой «за сложность» — это раз.
Потом ты узнаёшь от них что твой заказ с такими допусками настолько индивидуален, что придётся делать его на отдельной заготовке, площадь которой придётся оплатить полностью, причём по завышенному тарифу.
В результате у меня бывали случаи что переплачивать приходилось в 3-5 раз при заказе маленьких по площади плат в небольших количествах, а другие у меня редко бывают.BigBeaver
05.04.2019 08:49Коэффициент 1.5. Ни каких требований к выкупанию всей закотовки нет (но могут быть при толстой фольге, нестандартнома материале и тд).
progchip666 Автор
05.04.2019 09:54К кому как, а для меня почему то эти требования были и платить приходилось по полной. Возможно если поскандалить то можно было бы их избежать, ценой задержки заказа на неделю другую, но тогда это уже не срочное производство.
BigBeaver
05.04.2019 10:27Ну я не знаю деталей вашего заказа. Пока не очевидно, что дело в допусках.
Кроме того, если вы знаете допуски и введете их при создании заявки, калькулятор все это учтет. А еще там можно не ставить галочку «запускать без оплаты» и тогда это «придется» уже будет зависеть от ваших приоритетов.progchip666 Автор
05.04.2019 11:53Последний заказ мне без всякой кнопочки запустили без оплаты, поскольку он менее чем в 5000 уложился и вопросов технологов к нему не было.
Но дальше начался ад. Сначала они подняли визг, что я не указал реквизиты плательщика, хотя совершенно не понятно какого чёрта им они нужны, если это частное лицо. Я никогда ранее их не указывал и всё работало. Потом они не включили в стоимость заказа стоимость доставки, хотя раньше всегда по умолчанию включали. Потом они зачем-то заменили лицо, указанное мной в адресе доставки на ФИО плательщика, причём без предупреждения. В итоге, в место того, чтобы доставить в ближайший постомат заказ в Самаре, его доставили почему — то в деревню под Самарой, хотя адрес был указан точно и полно вплоть до индекса! Пришлось названивать ругаться и в результате заплатить более 1000 рублей за доставку платок, общей площадью менее двух квадратных дециметров! Процесс логистики в России разваливается буквально на глазах, даже у ранее уважаемых мной компаний. Резонит не единственная в этом списке.BigBeaver
05.04.2019 13:44Если не сделать отметку, то сначала выставят счет, хоть там на тыщу у вас, а потом только запустят. Возможно, вам попался косячный менеджер или что-то такое, я не знаю. но с 2013 я делаю по 5-10 заказов в год, и ни разу не было ни каких проблем.
progchip666 Автор
05.04.2019 13:54По поводу старта без предоплаты у меня никаких претензий нет, сумма маленькая, видно я у них в списке постоянных клиентов, они и раньше так делали.
Что касается остальной жести — у меня такое в первый раз. Кстати, они совсем недавно сменили партнёра, который занимался доставкой, видимо это сыграло свою роль.BigBeaver
05.04.2019 15:06Ну. Раньше галочка «запускать без оплаты» стояла по дефолту в срочном. Сейчас, вроде, снята.
После смены партнера мне стали привозить за 1 день, чему я очень рад.progchip666 Автор
05.04.2019 16:04А мне за одну неделю, с огромной кучей потраченных нервов и в два раза дороже
Alexeyslav
04.04.2019 11:59Проблема на производстве разрешается многослойностью, с ЛУТ-ом в домашних условиях уже двухслойная это лишний напряг, а там ещё переходные отверстия добавляют.
quwy
04.04.2019 18:27+1Сейчас снова схлопочу минусов от фанатов, но правда есть правда: с переходником цена контроллера оказывается уже не такой красивой, как ее малюют. Плюс переходники эти очень хреново совместимы с панельками, т.е. проблему перепрошивки решают весьма посредственно. Ну и выглядит схема с переходником как колхоз «красное дышло».
evocatus
04.04.2019 17:04Есть такая штука как панельки.
Например: www.symmetron.ru/suppliers/wellsquwy
04.04.2019 18:35Поколонники STM32 постоянно напирают на его низкую цену. Сколько такая панелька добавит к стоимости контроллера? А к размеру на плате?
Иногда создается впечатление, что некоторые даже многослойную плату готовы утюжить дома, лишь бы не использовать ненавистный DIP.Andy_Big
04.04.2019 18:53DIP дороже, DIP съедает больше места. У DIP нет преимуществ кроме легкости монтажа, а это не актуально для нормального разработчика.
Панельки по ссылке выше, разумеется, не для серийного устройства, а, например, для прошивальщика или для прототипа.progchip666 Автор
04.04.2019 19:02Лёгкость монтажа(да и то когда не имеешь навыка) — только для ручного монтажа, даже на вручную расставляя корпуса, а потом паяя их феном или ещё лучше в печке SMD корпуса уже проще монтировать
quwy
05.04.2019 15:34ещё лучше в печке
Чего мелочиться, давайте сразу волной паять. Делов-то на пять копеек.
Поймите же, речь про DIY, а это, если немного утрировать, — паяльник на 40 ватт, припой ПОС-61 прутком и сосновая канифоль в баночке. Какие печки, о чем вы вообще?progchip666 Автор
05.04.2019 16:08Даже к DIY люди совершенно по разному подходят. Некоторые вообще в результате превращают хобби в конце концов в бизнес.
Andy_Big
05.04.2019 16:13речь про DIY, а это, если немного утрировать, — паяльник на 40 ватт, припой ПОС-61 прутком и сосновая канифоль в баночке
Это уже какой-то случайный DIY и речь уже будет идти не о разработке, а о повторении — взять ардуину, припаять к ней на проводках остальное как показано в ролике на Ютубе :) Тогда и панельки не востребованы и статья эта не для таких людей.
quwy
05.04.2019 15:27Панельки по ссылке выше, разумеется, не для серийного устройства, а, например, для прошивальщика или для прототипа.
Вот именно поэтому восьмибитники и лидируют в опросе.
В DIY обычно нет такого понятия как «прототип» (если не считать поделки на беспаечных экспериментальных платах), есть первое и часто единственное устройство, которое должно поддаваться легкой перепрошивке без геморроя с разводкой ISP-интерфейса и подбора пинов для несовместимых с ним нагрузок.
Я не говорил о серийном производстве, в своем посте я имел в виду исключительно домашние кустарные поделки. Но многими движет культ карго, им единственную девайсину обязательно нужно сделать по массовым технологиям, пусть в ущерб почти по всем статьям, зато «как у людей».
DIP дороже
Переходник гоооораздо дороже выйдет.
DIP съедает больше места
Тот же аргумент.
У DIP нет преимуществ кроме легкости монтажа
Неправда. Панельки для DIP никоим образом не влияют на размер платы, не требуют изменения разводки, но позволяют вынуть контроллер и залить в него новую прошивку за две минуты. Это гигантское преимущество.Andy_Big
05.04.2019 16:27+1В DIY обычно нет такого понятия как «прототип»
У меня — есть. Сначала слепить прототип с кучей проводков, из остатков каких-то плат, просто чтобы проверить что все заработает, ничего не забыто и не перепутано, написать ядро будущей прошивки. А потом уже с учетом полученного опыта сделать нормальную плату в нужных размерах со всеми компонентами на ней.
Но у кого-то может все так на проводках и останется припаянным к такой панельке.
Переходник гоооораздо дороже выйдет.
Он просто не нужен.
Панельки для DIP никоим образом не влияют на размер платы
Посмотрите на плату на КДПВ этой статьи и представьте на ней корпус DIP на 40 ног. Влазит? И это на 40 ног, а не на 64, как у микроконтроллера на фото.
позволяют вынуть контроллер и залить в него новую прошивку за две минуты
Вот прямо сейчас у меня рядом лежит отлаживаемая плата, на которую я заливаю прошивку за 3 секунды вообще не прикасаясь к ней. И отлаживаюсь в рилтайме, выполняя по шагам, останавливая программу на нужных строках, видя вживую все переменные и регистры. Вот это — гигантское преимущество. В панельки (обычные для DIP) — это костыль, когда ничего другого не остается.
А такие панельки как по ссылке выше… Вы в курсе цен на такие панельки для QFP? Они совершенно не для DIY.progchip666 Автор
05.04.2019 19:44Да в общем то развести свою плату в бесплатном проектировщике и заказать у китайцев стоит чуть ли не дешевел чем лутом травить. Ну да подождать придётся пока пришлют немного, зато смотреться будет отлично, можно нормально сделать разводку для цифроаналоговых цепей, сложную форму заказать, точно по корпусу сделать… DIY не обязательно копна отваливающихся проводов, некоторые такие вещи делают, что профи позавидуют!
Andy_Big
05.04.2019 20:13Конечно ничто не мешает :) Я так и делаю. Но перед заказом все же собираю прототип, на котором проверяю основной функционал. Иногда это, как я и писал, куски старых плат с кучей проводов.
А иногда чуть аккуратнее:
Не обращайте внимания на состояние меди — этот отладочный прототип уже с год валяется в ящике :)
Roman_Popov
06.04.2019 00:19Хватит плодить байку про легкость монтажа в дырки. Я сам на несколько лет откладывал переход на SMD из-за этого заблуждения. Но как показала практика это посильно даже 10-летнему ребенку. Даже со спиртоканифолью и паяльником ЭПСН SMD паяются быстрее и проще этих нескончаемых ножек.
Andy_Big
06.04.2019 01:02А мне-то Вы зачем это пишете? :)
Я наоборот за поверхностный монтаж — QFP, QFN. Обычным паяльником я запаиваю десяток TQFP-64 минут за 8, раза, наверное в два-три быстрее, чем паять DIP в пересчете на один вывод :)progchip666 Автор
06.04.2019 20:53Мастер! Я так быстро не умею.
Andy_Big
06.04.2019 21:30+1Ну так это сразу десять плат в одной панели, не нужно тратить время на переворот каждой платы отдельно :) Больше всего времени занимает прицеливание с прихваткой одного угла. А потом сама пайка — секунды по 3-4 на сторону.
progchip666 Автор
06.04.2019 21:36Ну вот именно с прихваткой у меня и проблемы. Установил точно, но когда начинаешь «прихватывать» одну сторону чип съезжает. Не хватает твёрдости рук.
Andy_Big
06.04.2019 22:24+1Я не паяю сразу всю первую сторону. Сначала прихватываю только пару выводов одной стороны в углу, который выровнял, а потом уже паяю всю противоположную сторону, слегка подправив ее при необходимости.
Хотя уже с пол-года не занимался этим в таких объемах, после того как купил PnP-станок и трафаретный принтер :)progchip666 Автор
06.04.2019 22:49Я в принципе тоже стараюсь сначала с двух сторон прихватывать Про станки интересно интересно. В Китае брали? Ссылками не поделитесь?
Andy_Big
06.04.2019 23:34Да, брал в Китае, вот тут — item.taobao.com/item.htm?id=525680982287
Взял самый дорогой вариант TVM802BX из-за встроенного компьютера, то есть не нужно искать где-то отдельный комп, занимать им место. Ну и в дальнейшем выяснилось еще одно его преимущество — у него шаговые сервоприводы, а не просто моторы. То есть с энкодерами на валах для обратной связи по положению. В более младших моделях стоят двигатели без энкодеров.
Я делал на него обзор, если интересно — mysku.ru/blog/taobao/66376.html
evocatus
04.04.2019 22:38+1Такие панельки исключительно для макетных плат, которые делаются дома кустарным методом. А для таких изделий вопрос цены глубоко вторичный. Это для прототипов и проектов, которые делаются для души.
P.S. Вот вам ARM Cortex-M0 в DIP-корпусе.
И вообще, много интересного есть.quwy
05.04.2019 15:13акие панельки исключительно для макетных плат
Существование ZIF-панелек совсем не тайна, но никто про макетные платы не говорил. Я про готовое кустарное устройство, где прошивку допиливать хочется/приходится уже после сборки и ввода в эксплуатацию. ISP создает проблемы в разводке, да и с подключенными цепями совместим далеко не всегда, вынуть микросхему из панельки и проще и надежнее.
Вот вам ARM Cortex-M0 в DIP-корпусе
Так это же не STM, пацаны не поймут.Andy_Big
05.04.2019 16:28ISP создает проблемы в разводке, да и с подключенными цепями совместим далеко не всегда
А какие проблемы у Вас с разводкой двух линий? И зачем совмещать их с какими-то цепями?
HardWrMan
04.04.2019 06:15Жалко, что можно выбрать только 1 устройство, потому как я бы выбрал половину указанных пунктов. И это реальное положение моих дел.
progchip666 Автор
04.04.2019 07:47+1Очень хорошо, понимаю вас, коллега. Надеюсь в ближайшее время написать статью, посвящённую выбору микроконтроллера. Мне в последнее время тоже приходится часто мигрировать и диву даёшься к каким хитростям прибегают маркетологи, чтобы заставить нас вложить в проект более дорогой чип! В результате, когда выбираешь камень для серийной разработки, приходится просматривать нескольких производителей, очень внимательно вчитываться в даташиты на предмет наличия тех или иных функций ИМЕННО В ЭТОМ ЧИПЕ и выбирать между разными семействами Cortex. Иногда бывает дешевле перейти в более старшее семейство, потому что в младшем нужная тебе функция вроде бы и есть, но только в топовых дорогих чипах с большим количеством выводов…
Amomum
04.04.2019 01:56+1Не возьмусь судить о том, насколько статья понятна человеку, далекому от эмбеда, поэтому лучше придерусь :)
Одно из неоспоримых преимуществ микроконтроллера — программа, под управлением которой он работает, скрыта внутри его корпуса (в секции под названием “память программ”) и очень хорошо защищена от взлома, конечно, в случае, если разработчик микрокода об этом позаботился, активизировав встроенные механизмы защиты. Таким образом, вы получаете защиту интеллектуальной собственности настолько большую, насколько это возможно в наши дни.
Что нельзя взломать — то можно скопировать. Зачем пытаться считать код, встроенной в микроконтроллер программы, с помощью дорогостоящих хитроумных приспособлений, если проще и дешевле найти профессионала, который может написать его заново? Возможно результат будет даже лучше, а функционал богаче чем у прототипа. Да это стоит денег, но содержание FLASH памяти сегодняшних микроконтроллеров настолько хорошо защищено, что попытки грубого “взлома” обойдутся ещё дороже.К сожалению, это не совсем так. По крайней мере, большинство производителей потребительской электроники очень расплывчато гарантирует защиту прошивок от чтения. Практика показывает, что взломать такую защиту (в некоторых случаях) можно достаточно бюджетно — раз, два и хардкорное три.
Физический доступ к девайсу это очень серьезный аргумент при взломе, тут нужны какие-нибудь более серьезные процы с сертификацией, типа ST53G.
Andy_Big
04.04.2019 04:40+1При отключенном отладочном интерфейсе и включенной защитой от чтения взлом становится достаточно затруднительным делом. По третьей ссылке описан вообще какой-то редкостно удачный случай :)
HardWrMan
04.04.2019 06:19Согласен. 100% защиты не бывает: один человек сделал а второй сломает. Вопрос стоит в том, чтобы повысить трудоёмкость и стоимость взлома настолько, чтобы покупать оригинал стало заметно выгоднее для хотя-бы 80% потенциальных покупателей. Потому как тот, кто оплатит дорогой взлом вряд-ли будет сильно демпинговать, а пока этот взлом будет длиться рынок наш.
progchip666 Автор
04.04.2019 08:02+1Потому как тот, кто оплатит дорогой взлом вряд-ли будет сильно демпинговать, а пока этот взлом будет длиться рынок наш.
Бывают варианты — зачастую сам процесс вывода на рынок изделия настолько затратен, что контрафакт имеет мало смысла. Исключение пожалуй составляют очень массовые изделия, которые клонируют китайцы, либо просто часть тиража продают налево.
Andy_Big
04.04.2019 10:55+1Именно так. Защита должна быть такой, чтобы стоимость ее взлома приближалась к стоимости разработки аналогичной прошивки. Или к выгоде от получения при взломе каких-то данных типа паролей или ключей.
progchip666 Автор
04.04.2019 07:56Если честно, я бы не принимал на веру всех статей с хакерских форумов. ещё лет 20, возможно 15 назад существовал бизнес «по взлому» микроконтроллеров. Сегодня я про это не слышал. Взломать можно всё что угодно, но в большинстве случаев в наши дни дешевле нанять программиста чтобы написать программу заново.
Что касается программных методов взлома — зачастую они становятся возможными по одной простой причине — программист не уделил достаточно много внимания защите кода, особенно это характерно для устройств с бутлоадерами. Можно пролезть в «дырку», изменить часть кода «внедрив» в программу «демона», который перехватит управление и сольёт содержание программы через один из внешних интерфейсов.
Однако это путь «настоящих джидаев». Даже «чёрные кассы» — кассовые аппараты с закладками для обнуления — создавали в своё время разработчики ПО для тех же касс с целью дополнительного заработка.amartology
04.04.2019 14:08Бизнесы по взлому микроконтроллеров вполне себе существуют и сегодня. Не всегда написать программу дешевле. Иногда надо не взломать программу, а обеспечить совместимость контрафакта с «родными» изделиями. Разное бывает.
progchip666 Автор
04.04.2019 14:43Возможно вы и правы, особенно если речь идёт о давно устаревших 8 битных моделях.
amartology
04.04.2019 14:50Вскрытие прошивки STM32F1 стоит в пределах пары тысяч евро. Вроде бы не давно устаревшие)
progchip666 Автор
04.04.2019 19:06За три можно несложный проект заказать целиком. Смысл? Если только чтобы ключи своровать.
amartology
04.04.2019 19:13Ничего не знаю про смысл, не имею отношения к такого рода бизнесу. Знаю, что компании, предлагающие такого рода услуги существуют — видимо, это означает и наличие спроса сегодня, а не пятнадцать лет назад.
Andy_Big
04.04.2019 04:43+1Цифровые входы обычно имеют очень высокое входное сопротивление, поэтому, если их оставить не подключенными, их состояние может скакать из нуля в единицу и обратно, под действием наводок электромагнитных полей. Для того, чтобы этого не происходило, существуют специальные режимы, когда внутри чипа вход соединяется через сопротивление 20 — 50 КОм с плюсом питания микроконтроллера (pull-up) или с минусом (pull-down).
Недавно тут была статья, в которой советовалось неиспользуемые выводы переводить в режим аналоговых входов. Тогда внутренний триггер Шмитта отключается и не молотит от всех этих наводок.HardWrMan
04.04.2019 06:23Более того, это же делать надо когда готовишься ко сну.
Andy_Big
04.04.2019 09:57Ну да, перед сном. В активном режиме эти дополнительные единицы микроампер большой роли не играют.
progchip666 Автор
04.04.2019 10:19Корректная подготовка к глубокому сну и выход из него — вообще боольшая отдельная тема.
Andy_Big
04.04.2019 10:44+1Сейчас работаю над программой для одного устройства на STM32L151 с автономным питанием, уделил довольно много внимания энергопотреблению. Правда, я кладу контроллер в спячку в режим STANDBY, когда и без моих усилий выводы оказываются «подвешенными», а периферия отключенной. Потребление в итоге получается около 65 мкА с внешней периферией — аппаратным контроллером питания, солнечной панели и заряда аккумулятора, цифровым барометром, SPI-флеш, счетчиком (PCF8583 в режиме подсчета импульсов) и OLED-экранчиком. Из них около 35 мкА жрет китайский экранчик и около 28 мкА жрет менеджер питания на «рассыпухе».
progchip666 Автор
04.04.2019 11:46На мой взгляд — хороший результат, отлично поработали коллега. Я много работаю с беспроводными решениями в последнее время, BLE в основном
кстати до последнего времени как раз STM32L151 юзали. Пришлось даже специально купить во такого монстра, для остеживания уровней энергопотребления в динамике
Andy_Big
04.04.2019 12:49хороший результат, отлично поработали коллега
Спасибо, но тут основная заслуга у железа, а оно по большей части не мое :) Я в нем только несколько моментов исправил (типа отсутствия подтяжки на затворах ключей, включающих питание, делители и т.д.). Ну и по дисплею предложил добавить ключ на его питание, сейчас это решается.
Я много работаю с беспроводными решениями в последнее время, BLE в основном
У меня тоже в некотором смысле беспроводное решение — с использованием GSM-модема. Но с потреблением модема решается просто — ему рубится питание когда он не нужен :) У девайса задача просыпаться через заданные промежутки времени для сбора данных с кучки датчиков, а через более длительные промежутки времени просыпаться и отправлять собранные данные через модем. Если не получилось отправить — сохранить и передать в следующем сеансе связи вместе с новыми данными, терять накопленные данные недопустимо.
до последнего времени как раз STM32L151 юзали
А на что перешли и по каким причинам?
купить во такого монстра
Помню статью о нем :) Если не секрет — сколько такая штука стоит? :)progchip666 Автор
04.04.2019 14:21Называется NRF6707, как ни странно брал на алиэкспрессе где то в районе 110 долларов, поскольку на маусере в Россию поставлять не захотели, не знаю уж как сейчас с этим. А китайцы прислали без проблем.
от STM32L151 отказываться не собираемся, но в последнем проекте потребовался аппаратный интерфейс к SD карте, SPI медленно работает и не со всеми картами. А иногда наоборот что-то надо бывает попроще и подешевле — был эксперимент с STM32L031mpa4b
04.04.2019 15:17SPI медленно работает и не со всеми картами.
А можно вот тут поподробнее? С какими не заработало?progchip666 Автор
04.04.2019 15:29Сорри, данная информация со слов, чьих не помню, но читал в форумах неоднократно, я лично только через специальный интерфейс запускал, который квадро SPI. Несколько карт пробовал от 4 до 16 гиг — работало нормально.
donbob
05.04.2019 11:43Насчёт карт не могу сказать, но по скорости передачи SPI допускает тактирование до 20 МГц, I2С около 1.5 МГц, кроме того необходимо обслуживать протокол, которого у SPI просто нет, так как невозможны коллизии.
Alexeyslav
05.04.2019 13:45А разве карты работают по I2C протоколу? Помоему ни одной такой не видел. Отдельные EEPROM бывают, но там не ставится требование максимальной скорости.
Обычно карточки вроде SD/TF или MMC работают по упрощённому SPI интерфейсу или 4*SPI с тактовой частотой до 45Мгц.
Для режима single-SPI скорость тактовая ограничена, поэтому кроме того что карта работает всего лишь в один поток из 4-х так ещё и медленней в итоге реальная скорость обмена не больше 1-2мб/сек.
Не представляю как такие карты обеспечивают режим работы класса U3? 30Мбайт/сек на запись гарантированно, скорость интерфейса должна быть минимум 60Мгц на 4 канала, или там >30Мгц но защёлка срабатывает и по фронту и спаду тактового сигнала? или многофазный тактовый сигнал? Дальше только SATA интерфейс встраивать прямо в карту или USB3.1 но это новый виток войн интерфейсов…mpa4b
05.04.2019 15:10SD-карты работают по своему протоколу, который конечно похож на SPI но ни разу не SPI. SPI поддерживается по стандарту, если карте послать спецкоманду в начале инициализации. При этом в режиме SPI нет проверки CRC на переданные данные ну и скорость ниже. Ещё есть особенность, что вообще любое начало работы с SD-картой должно происходить на очень низкой частоте (что-то вроде 500кгц), и только после начальной инициализации можно поднимать.
Собственно и мой вопрос насчёт 'какие-то карты не работают с SPI' был вызван именно этим — может, из-за того, что не подали низкую частоту вначале инициализации. Ну а может, у китайцев появились 'чюдесные' нестандартные карты, которые «SPI-illiterate» :)
HardWrMan
04.04.2019 11:46У меня был случай, когда использовали внешний генератор тактовой частоты вместо резонатора ради малого джиттера. Естественно, в глубокой спячке этот генератор «генерировал» почти 60% тока.
Andy_Big
04.04.2019 12:50Надо было отключать ему питание :)
HardWrMan
04.04.2019 13:00Шутку понял. (с)
Andy_Big
04.04.2019 13:04Вообще-то я серьезно. Переводим контроллер на внутренний генератор, отключаем питание внешнему, засыпаем. Проснулись (на внутреннем генераторе), включили питание внешнего генератора, дождались его стабилизации, переключились на него.
Хотя если микроконтроллер не умеет управлять своими клоками, тогда шутка, да :)
progchip666 Автор
04.04.2019 08:08+1У меня был случай, когда мне принесли простой электросчётчик на основе простенького MSP, который не проходил тест на ЭМС. После долгих разбирательств и оптимизации трассировки удалось выяснить что дело было в висящей в воздухе ножке. Высоковольтный импульс приводил к сбросу устройства, причём только тогда, когда оно находилось в режиме низкого энергопотребления. Замкнул вывод на корпус и «вылечил».
oam2oam
04.04.2019 06:23Как-то не согласен, что среди Cortex-M7 лидирует не STM. А как же замечательнейший stm32h750 ?? И это чудо на 400 МГц и, конечно, с непревзойденным фаршем от STM (в том числе с HRTIM!) всего за $2.5! Ну просто сказочно дешево… Причем 1024 RAM! Как говорится, ну что еще-то надо? Кстати, и jpeg-кодек есть и… да что я пишу, читайте даташит.
progchip666 Автор
04.04.2019 08:15Не знал про этот вариант, надо будет присмотреться.
Возможно причина моих пробелов в этом:
весьма характерная строчка сегодня для региона России, но редкая для Евросоза, где я сейчас нахожусьJef239
04.04.2019 14:46STMH7 есть в двух вариантах. Подороже — 1 мег ОЗУ, 2 мега flash. Сильно подешевле — 1 мег ОЗУ, 128К flash. Основное достоинство H7 (и F7) даже не ОЗУ, а аппаратный FPU двойной точности. У нас GNSS (GPS), расчет больших матриц. И аппаратный FPU двойной точности для нас — обязательная вещь.
Я бы сказал, что F7/H7 — это такой особый класс SoC — замена Linux-систем. То есть Вместо 3х чипов для linux — ставим один для FreeRTOS. Мы, лично, получили большой кайф при избавлении от linux.
Поэтому мой совет — если у вас linux, но сама задача в H7 влезает — подумайте, нужен ли вам этот огромный монстр?mpa4b
04.04.2019 15:25И аппаратный FPU двойной точности для нас — обязательная вещь.
А работа с двумя флоатами на одно число вот как-то так не спасала?Jef239
04.04.2019 16:17Мы пробовали на STM32F4 (правда не по этой статье) — скорость практически такая же, как при эмуляции. Понятно, что это зависит от отношения скоростей FPU и CPU.
mpa4b
05.04.2019 15:16А по какой статье? Если брать тот метод, что по моей ссылке, вроде как там сложение и умножение раз в 5 дольше всего лишь получаются, чем с single precision.
Jef239
05.04.2019 16:58А какая разница? Метод не даст выигрыша в разы, всего лишь десяток процентов. Итоговый вывод — при одинаковой тактовой 32битный FPU не быстрее CPU для обработки double. Ниже уже привели ссылку с ровно тем же выводом. Иными словами — если вам нужно ускорение в разы, то 32битный FPU вам не поможет.
Откопал в почте наши измеренияС оптимизацией "-Os":
— Cholesky using float pair
Cnt=10000 Neg=0 SumTime=10.9s AveTime=1.0ms
Cholesky using double
Cnt=10000 Neg=0 SumTime=6.5s AveTime=657.5mks
Gauss_TT using float
Cnt=10000 Neg=0 SumTime=34.2s AveTime=3.4ms
Gauss_TT using double
Cnt=10000 Neg=0 SumTime=19.8s AveTime=1.9ms
max err Cholesky = 0.000000077
max err Gauss_TT = 0.000000000
— С оптимизацией "-O3":
— Cholesky using float pair
Cnt=10000 Neg=0 SumTime=6.2s AveTime=629.1mks
Cholesky using double
Cnt=10000 Neg=0 SumTime=6.5s AveTime=656.5mks
Gauss_TT using float
Cnt=10000 Neg=0 SumTime=19.5s AveTime=1.9ms
Gauss_TT using double
Cnt=10000 Neg=0 SumTime=19.5s AveTime=1.9ms
max err Cholesky = 0.000000077
max err Gauss_TT = 0.000000000
—
Fox_Alex
05.04.2019 01:16В рассылке у Джека Гансла недавно пробегали тесты этих FPU, можете почитать. www.ganssle.com/tem/tem369.html
mpa4b
05.04.2019 15:15Какие-то странные тесты, не приведён код (в т.ч. дизасм того, что нагенерил компилятор). Иногда кажется, что тупо неправильно настроен компилятор или либы — например sqrt похоже что шёл в эмулирующую библиотеку, вместо использования команды процессора. Что, впрочем, неудивительно, если для корня использовалась sqrt(), которая берёт и выдаёт даблы, в то время как для single->single надо использовать sqrtf()
Ну и ещё совершенно ясно, что на m4f даблы будут эмулироваться, смысл их тестировать? Double-word arithmetic даёт максимальную точность, равную кол-ву бит мантиссы в двух флоатах, т.е. 23*2=46 бит, в то время как точность даблов — 53 бита, откуда следует, что эмулировать даблы при помощи double-word arithmetic нельзя.Fox_Alex
05.04.2019 17:28Отмотайте пару выпусков назад, там условия теста вроде были. Я правда особо не вчитывался, в текущих моих проектах нет ни одного стма с FPU.
progchip666 Автор
04.04.2019 15:32У нас задачи проще, но требуют быстрого реагирования часто, максимум RTOS применяем
clawham
04.04.2019 10:31+1esp8266 имеет 80 кил оперативы, 160 мегагерц и прекрасно справляется с mp3 jpg и имеет вайфай на борту а стоит доллар в рознице на плате с антеннкой и флешкой на 4 мегабайта для кода. Почему вы её забыли а этого монстра нет? для иота esp более чем достаточная вешь… правда если бы было на неё полное описание и открытый SDK… ну и gpio мало но впринципе для многих задач решается внешним расширителем.
Я же плотно засел на атмеги. Да они сейчас на китае в основном контрафакт но имея арсенал из 15 устройств в разработку которых потрачено много времени сил и денег — переход на армы пока не планируется даже просто потому что под арм уже двусторонняя плата нужна а это стоимость и проблема в том что и атмеги 328 нам хватает не то что за глаза — а просто выше крыши.mpa4b
04.04.2019 10:41правда если бы было на неё полное описание и открытый SDK
Вот поэтому, наверное, его и не все любят :)
Andy_Big
04.04.2019 10:48+1правда если бы было на неё полное описание и открытый SDK… ну и gpio мало
То-то и оно :)
под арм уже двусторонняя плата нужна
Не совсем понял — как это внутренняя архитектура микроконтроллера влияет на количество слоев платы? :)
атмеги 328 нам хватает не то что за глаза — а просто выше крыши
Только стоит она как очень неплохой такой ARM, особенно в DIP-корпусе :)clawham
04.04.2019 11:57мега в qfn у нас разведена в один слой, покупали партией в 1000 штук(для когото слезы а нам огопартия :) и тогда она вышла в районе 0.9 долара за штуку. армы на такой ценник только большими партиями, у популярных из них много ног и питания расположены так вырвиглазно что в один слой развести очень сложно.
Andy_Big
04.04.2019 12:59тогда она вышла в районе 0.9 долара за штуку. армы на такой ценник только большими партиями, у популярных из них много ног
STM32F030C8T6 — 0.73$ за штуку в партии от 750 штук (в Компэле), 64/8 кб флэш/оперативка, LQFP-48 :)
STM32F030K6T6TR — 0.48$ за штуку в партии от 960 штук (в Компэле), 32/4 кб флэш/оперативка, LQFP-32 :)
progchip666 Автор
04.04.2019 14:27Если честно я не понимаю зачем упираться в однослойку? Неужели при партиях в 1000 штук вы применяете утюжную технологию? Закажите двухслойки в Китае, на такой партии разницы с однослойками вы практически не почувствуете, но мучаться не придётся. Мы применяем ЛУТ только когда надо очень быстро проверить какую нибудь спорную мысль на концепте. На двухслойных платах хотя бы землю с питанием можно нормально развести. На однослойках сильно упираться надо, особенно в случае если используете цифро-аналоговые цепи.
clawham
04.04.2019 14:36+1жоская конкуренция — очень нишевое решение. Лишний кварц с кондерами не могу позволить — калибрую частоту атмеги по внешнему сигналу каждый раз при включении :) двуслойка выходит реально дороже т.к. ни маски ни шелкографии на эту плату не применяем — пытаемся конкурировать по цене с китаем.
0,9 это с доставкой — нас устраивает. Переход на принципиально другой камень на 3.3 вольта это сложно технически и программно и не обойдется без пары преобразователей 3.3-5 что уже недопустимая роскошь. Дада в 2019 году есть устройства которые не понимают 3.3/3.6 на входе на частоте 100 герц всего :) опять же цена.
Конечно же когда встанет вопрос разработки нового устройства следующего в серии мы попытаемся прикинуть и впихнуть в арм какойто но это очень сложно на текущий момент не смотря на то что атмеги не производятся официально — атмель умерAndy_Big
04.04.2019 14:43Переход на принципиально другой камень на 3.3 вольта это сложно и не обойдется без пары преобразователей 3.3-5 что уже недопустимая роскошь.
Если это однонаправленные линии, то преобразователь — это транзистор с парой резисторов — это меньше одного рубля :)progchip666 Автор
04.04.2019 15:20Большинство микроконтроллеров ARM от ST толерантны к 5 вольтовому напряжения при питании от 3.3 вольт. Тоесть на вход можно соединять напрямую, на выход тоже, но если 5 вольтовому входу в вашем устройстве 3,3 вольта на входе недостаточно, можете выход ST в виде открытого коллектора сконфигурировать и к 5 вольтам подтянуть. И да, забыл написать для совсем экономных есть ещё клон ST, вроде вполне официальный
можете посмотреть вот здесь
По моим оценкам они стоят где то в два раза дешевле чем аналогичные производства STM, но простейших Cortex-M0 они не производят, только старенькие копируют.
Если важно низкое энергопотребление то не подойдут.Roman_Popov
05.04.2019 17:02А вот эти гигадевайсы это полный клон? В смысле инструментарий разработки и прошивки ровно тот же, что и у STM32?
progchip666 Автор
05.04.2019 20:19Я натолкнулся на них совсем недавно, искал дешёвые микроконтроллеры для проекта «умной розетки». После месяца переговоров менее чем за сутки до момента заключения договора заказчик выставил невыполнимые условия и получил нахаляву ТЗ растворился. Весьма частая история.
В результате девайсы я так и не опробовал в действии. На сайте написано что они аналоги за исключением совсем мелких деталей в конфигурации. Я так понял все отладочные средства должны действовать, но не проверял.Roman_Popov
06.04.2019 00:21Ясно. Я тоже на днях буквально их впервые увидел, глянул даташит, понял, что не для батареек и пока забыл.
progchip666 Автор
06.04.2019 08:18Да, видно у них старая технология производства, чипы с пониженным энергопотреблением ещё не освоили
clawham
04.04.2019 16:25+1Andy_Big, лишний транзистор это лишняя номенклатура на складе, это лишние точки пайки, это лишняя точка отказа, это собственно деньги на этот элемент, логистика его доставки. Оно то вроде как и мелочь но мы не в россии находимся — есть некоторые проблемы с некоторыми поставщиками, ещё нет доступа к автоматической сборке — малые обьемы а потому паяем руками оттуда стоимость точки пайки. Кроме того наше производство ещё и сезонностью обладает и в зимний период обьемы сильно сокращаются а к весне наоборот бум происходит спроса и соответственно производства. Типичный обьем — 600 штук в год одной модели. Всего в производстве 5 моделей. потому между ними максимлаьная унификация. собственно да — платка очень маленькая и потому даже на маске экономим — для ручной запайки это не проблема а потом плата всеравно покрывается лаком.
progchip666, Опять же мы не из России и потому есть проблемы определенные с логистикой.
Брак попадался и попадается… у нас есть уарт 38400 с другим кварцованным устройством. раньше никогда проблем небыло в том что атмега работает на внутреннем генератора. тест 0..+50 оно выдерживало. С конца прошлого года пошли приколы — партия с заниженной частотой, купили ещё партию — пришли все с завышенной частотой — сделал на этапе прошивки калибровку — проблема ушла… третья партия этого года мало того что в перемешку завышенные и заниженные так ещё и уход на полтора мегагерца(с 8ми) уже при +5 на корпусе вместо +25 а на +40 вообще мегагерц в плюс… тоесть дажде уарт уже ломался. Пришлось сделать онлайн-калибровку частоты по вот этому уарту — меряю програмно длину стартбита и подгоняю частоту OSCCAL под соответствие измеренной длины стартбита реальному значению. Костыль да но в общем-то и изящное решение — ноль внешних компонентов, ноль нагрузки на проц(раз в секунду промер 10 мсек в моменты простоя) и обьем кода мизерный. и никаких апаратных модулей дополнительно не используется — меряю уартом же на скорость 921600 без стартбита — тупо смотрю сколько бит в нуле до первого в единице — точности более чем хватает. опыты показывают что прекрасно теперь работает и при -20 и при +120 — никаких рассинхронов.
Ещё были приколы с собственно кварцевым генератором на другом устройстве — кварцы не стартовали ни в какую ни с обычными кварцами ни с гарантированно рабочими. решили эти процы пустить на другие платы без кварца.progchip666 Автор
04.04.2019 17:05Сложный у вас бизнес.
Не хочется пытаться вас учить, но может всё таки попробовать разорвать шаблоны. Мой опыт показывает что сам этот процесс бывает крайне болезненным, но в конечном случае перемены выводят тебя на более высокий уровень.
Конечно трудно тут что-то советовать, но у меня цифры вызывают сомнения. При общих объёмах 5 тысяч штук в год и такой маленькой прибыли что 5 центов на изделие играют роль не совсем понятно зачем подобным бизнесом, который сопровождается такими проблемами заниматься. Возможно всё таки стоит сделать более технологичное изделие, пайку отдать на автоматы, немного пожертвовать прибылью, освободив часть своего времени и использовать это время на запуск новых моделей.
Удачи в вашем деле!Alexeyslav
04.04.2019 17:13+1Если они годами обходятся всего 5-ю моделями, на новые вероятно нет спроса. Скорей освободившееся время тратить уже на совсем другой продукт — выпечку булочек например.
А более технологичное изделие может потребовать оборудования которое окупится при таких объёмах лет через 100.
Alexeyslav
04.04.2019 17:10Супер жесть…
Но ведь если уартом подстраиваться под стартовый бит, первая порция данных уйдёт в мусор… после этого ждать следующего кадра по метке.
по другому сделал — впереди пакета посылается одиночный импульс, по нему делается калибровка, а потом уже идёт информационный сигнал.clawham
04.04.2019 18:14+1в уарт шлется каждую секунду 4 посылки и потерять одну раз в 30 секунд при старте — не критично вообще. посылки шлет не наше устройство так что заставить его слать чтото другое — не вариант.
progchip666 эти платы это маленькая часть огромного обьема работ что мы делаем помимо собственно плат. На производстве пластика мы отыгрываемся но постоянно нужно менять формы этого пластика совершенствоваться и так далее при этом плата — не меняется ни физически ни програмно. Вот на эти эксперименты + содержание кружка юнного техника авиа и судомоделирования на бесплатных началах — вынуждает ужиматься с расходами по максимуму + по прибыли ну года два назад это был очень прибыльный бизнес, потом про это пронюхал китай и сейчас у нас каждые пару месяцев происходит прикол что наш прошлый кораблик уже выпускается китайцами и нам собственно надо уже чтото новее лучше бустрее делать. платы не меняются — есть 5 «категорий» если так можно сказать с разными платами и программами. а внутри категорий собственно очень много разных вариантов корабликов. Иногда выходит что новая модель пол года держится до подделок иногда и месяца не проходит а уже надо новые пресформы :)
Andy_Big
04.04.2019 18:18лишний транзистор это лишняя номенклатура на складе, это лишние точки пайки, это лишняя точка отказа, это собственно деньги на этот элемент, логистика его доставки
Я, конечно, не знаю Ваших условий, но чтобы на складе у компании, занимающейся разработкой и производством электронных устройств, не было самых ширпотребных копеечных транзисторов — как-то с трудом укладывается в голове. Я же не экзотику предлагаю ставить, которую еще поискать и доставить надо :) Про лишнюю точку отказа, если честно, вообще улыбнуло после того как прочел какого качества микроконтроллеры Вы ставите в серийные устройства. Вы не обижайтесь, я без наездов это, просто у меня действительно в голове не укладывается как можно на таких комплектующих делать коммерческую продукцию. Вот уж где не точка отказа, а жирное пятно, на фоне которого обычный транзистор даже в микроскоп не увидеть :)clawham
04.04.2019 20:18+2они не бракованные :) просто с особенностями, проходят жесткие испытания в обязательном порядке
У нас это плавающая штука… там вода конденсат и прочее внутри гермокорпуса — милое дело. но по причине отказа проца ещё ни одной платы за 6 лет работы не вернулось ;) при производстве проблемы да… бывало но… то что ушло наружу обычно возвращается после утопления или наезда на него машины. хотя нет… был один кадр — он катал устройство в багажнике велика без амортизаторов и там тупо все выводные компоненты и штыревые соединения поотламывало(не поотсоединялись а именно поломало штыри у основания платы) так что нет — проблем с процами не бывает а вот с лишними точками пайки которые окисляются — бывает ещё и как.
progchip666 Автор
04.04.2019 14:50С одной стороны понятно, но мне кажется конкурировать с китайцами вообще не самый правильный бизнес. В общем если он налажен, то ваша стратегия понятно, вопрос стоит скорее о новых разработках.
Но если идёт речь об экономии в несколько центов на плату… Шелкографией ясное дело можно пожертвовать. Маской — тут большой вопрос. Если ваши платы малы по размеру, а судя по косвенным признаком это так, то за счёт такой экономии выиграете вы меньше чем 5 центов за плату.
Кстати, покупая у китайцев неофициально произведённые микроконтроллеры на брак не нарывались? Если нарывались, компенсацию удавалось вырвать?
Ещё хочу заметить, если у вас постоянная потребность в одних и тех же чипах, в размере нескольких тысяч в год хотя бы, то можете обратиться к российским дистрибьюторам, реально защитить проект, сэкономить на этом 10 — 30 процентов, да ещё и товарный кредит получить!
В прошлой жизни я работал пару лет Бренд Менеджером, знаю эту кухню не по наслышке. Так что переход на простейшие АРМы в новых изделиях может даже снизить издержки. ПО у вас не сложное как я понял, модификация вряд ли отнимет много сил и времени.
Polaris99
04.04.2019 18:18ATSAMC — можно питать от 5 Вольт, ядро — Cortex-M0+. Плюс крайне разумное распределение пинов в корпусе 5 на 5 мм. Из 32 пинов 22 можно использовать как GPIO даже при подключении кварца и отладки. Сами поставили по именно этой причине из-за экономии места на плате, сунуть преобразователи уровней было реально некуда, а вот CAN был нужен позарез, так что хотя бы уже по этой причине все Меги пролетают.
progchip666 Автор
04.04.2019 11:05Я сейчас к ней присматриваюсь, но тут согласен полностью с мнением mpa4b. Вроде бы документации на неё много, но как то всё не слишком прозрачно выглядит, нужно подстраиваться под их экосистему…
Вычислительная мощность большая, но выводов на корпусе и периферии маловато. Всё сильно заточено под программирование на скриптах.
В общем очень непривычная хотя и крайне любопытная штука.
Alexeyslav
04.04.2019 13:15Камушек довольно противоречивый, хоть и тактовая частота у него 160Мгц реально добиться этого быстродействия невозможно в виду того что из разных сегментов памяти команды выбираются разное время, и толку от 160Мгц если ядро вынуждено ждать 10 тактов для выборки из медленной памяти? А быстрой памяти там кот наплакал и обычно она сильно занята. Можно многое, но с неочевидными ограничениями и приходится тасовать что где лучше всего держать или даже подгружать код по мере необходимости в SRAM.
mpa4b
04.04.2019 10:39А что добавит переход на Cortex-M4, кроме возросшей в пару раз цены?
…
USB научился работать в режиме HOST
Да что вы говорите? usb host появился ещё в f105 и f205.
Переход на Cortex-M0+. Самый дешёвый способ получить дополнительные функции
…
в два раза увеличилась максимальная тактовая частота
с 2 до 1.7 вольт понизилось минимальное напряжение питания
АЦП способно работать в два с половиной раза быстрее
…
И какая связь между набором периферии (о котором как раз речь) и применённым в контроллере ядром процессора?
По факту, очень похоже по стилю изложения на маркетолуха.progchip666 Автор
04.04.2019 11:15Да что вы говорите? usb host появился ещё в f105 и f205.
Не буду спорить, но я сравнивал конкретные модели, ОТG появился в тех же LPC вообще в незапамятные времена.
И какая связь между набором периферии (о котором как раз речь) и применённым в контроллере ядром процессора?
Вот тут как раз очень большая связь. Расширенную периферию в маркетинговых целях производители очень любят ставить в серии с высокопроизводительными ядрами, чтобы стимулировать их покупку, а не потому? что с ней скажем? тот же Cortex M0 не может справиться.
В этом отношении очень большой плюс, что появились малопотребляющие серии с богатой периферией. По крайней мере для меня, поскольку часто приходится делать проекты с автономным питанием.mpa4b
04.04.2019 13:38Вот я это и пытаюсь сказать — что именно маркетолухи любят такие трюки и такой стиль изложения. А на самом деле никакой связи между 'кр00тым' ядром и богатой периферией нет, кроме искусственно заложенной маркетолухами при почёсывании в затылке 'а давайте новую серию замутим!'. Ну и к тому же проц M0+ не то чтобы прям уж сильно отличается от M0 без плюса.
KonstantinSpb
04.04.2019 12:30+2Ну вот в этом году ST выпустит STM32L5 серию со многими вкусняшками для защиты IP и anti-tamper фичами
progchip666 Автор
04.04.2019 12:52Нельзя объять необъятное, особенно в одной статье, она и так чересчур длинная получилась. Будем изучать… В принципе уровни защиты даже десяток лет назад разработанным микроконтроллеров меня более чем устраивает. А вот появление плеяды АРМов со сверхнизким потреблением очень радует. Пока только до L4 успели ручки дотянуться…
Polaris99
04.04.2019 13:53Такого количество заблуждений и откровенной дезинформации, как в этой статье, я никогда еще не встречал. Это же надо уметь — с настолько уверенным в себе видом распространять ошибочную информацию и более того, писать про это статью на сайте с довольно продвинутой аудиторией.
Andy_Big
04.04.2019 14:12+1Не могли бы Вы конкретизировать?
Polaris99
04.04.2019 14:24+21. Переходы от семейства к семейству мотивируются вещами, которых в природе нет, причем даже для очень полюбившихся автору STM32. Внимательнее нужно читать даташиты. Ну и о других производителях не забывать, а то смешно было местами.
2. В описании периферии полно неточностей.
3. Выводы о сравнении потребления 8-битников и 32-битников крайне спорные. Да, когда куча вычислений в int32 или с плавающей точкой, то да, есть смысл, когда же идет работа с периферией или просто дрыганье ногами, то эффективность ARM гораздо ниже заявленной, так что ни о каком преимуществе речи нет.
И да, я работал и работаю как с 8-битниками, так и с АРМами, причем не от одного-двух производителей.Andy_Big
04.04.2019 14:38+1Переходы от семейства к семейству мотивируются вещами, которых в природе нет
1. Да, этот момент слишком обобщен и размыт, но не так категорично.
2. Вижу только неточности, привнесенные в угоду краткости статьи и ее доходчивости для тех, кто не знаком с микроконтроллерами.
3. Даже в работе с периферией ARM способен быть гораздо эффективнее большинства 8-битников за счет наличия DMA. Плюс умение управлять своей тактовой частотой во многих случаях очень хорошо помогает сэкономить энергию. Так что тоже не все однозначно и уж точно нельзя безапелляционно утверждать про «заблуждений и откровенной дезинформации».Polaris99
04.04.2019 18:23DMA не для всех возможных режимов работы периферии доступна, а уж в плане работы с битами ARM всегда проигрывает мелким контроллерам. Я не говорю, что это плохо, это особенность архитектуры, она есть, и ее нужно учитывать, а не пытаться все упаковать в красивые графики.
Andy_Big
04.04.2019 18:48DMA не для всех возможных режимов работы периферии доступна
Да я и не говорил про все режимы. Даже более того — не для всех случаев он даст преимущество в скорости. Но «в среднем по больнице» наличие DMA все же способно значительно сократить время активности микроконтроллера.
а уж в плане работы с битами ARM всегда проигрывает мелким контроллерам
Можно конкретный пример? А то у ARM, например, есть даже команда BFI среди битовых операций, остальные битовые операции как-то вроде не сильно беднее, чем у тех же AVR.Polaris99
04.04.2019 23:29Можно конкретный пример? А то у ARM, например, есть даже команда BFI среди битовых операций, остальные битовые операции как-то вроде не сильно беднее, чем у тех же AVR.
И у Cortex-M0 тоже есть?
А теперь сравните их по мощности с командами SBI/SBIC/SBIS из набора команд AVR. Там для операций с периферией мне не нужно ее читать, изменять и записывать, причем команды чтения и записи в ARM (LDR/STR), насколько я помню, не читают по адресу, нужно еще загрузить его сначала.
Я не к тому, что AVR рвет ARM в клочья, упаси боже, просто это две разные архитектуры, и для достаточно большого класса приложений AVR может работать даже быстрее, особенно если речь идет о Cortex-M0 с невысокой тактовой частотой, которая еще и не используется полностью по причине медленно работающей флэши. Вот я сейчас ковыряю nRF51822 и понимаю, что он со своими 16 МГц работает медленнее даже банальной Mega128, потому как DMA де-факто почти и нет, а каждая операция с периферией требует гораздо больше телодвижений. Каждой задаче свой инструмент, а автор как-то очень свободно подменяет факты своими домыслами.Andy_Big
05.04.2019 00:36И у Cortex-M0 тоже есть?
Нету, но Вы ведь без всяких оговорок объединили все ядра под одной аббревиатурой — «в плане работы с битами ARM всегда проигрывает мелким контроллерам» :)
Каждой задаче свой инструмент, а автор как-то очень свободно подменяет факты своими домыслами.
Ну, Вы-то со своими категоричными утверждениями еще более свободно подменяете понятие «в некоторых случаях» на «всегда» :)Polaris99
05.04.2019 00:47Еще раз — сравните BFI и SBI/SBIC/SBIS
Andy_Big
05.04.2019 02:31+1Да что Вы уперлись в эти битовые операции над выводами? Ручная работа с выводами — вообще достаточно редкая операция на фоне всего остального. Если, конечно, не эмулировать программно какой-то аппаратный интерфейс из-за убогости аппаратных возможностей 8-битника :)
Polaris99
05.04.2019 09:34Резюме:
* битовые операции есть, но не у всех кортексов и только для регистров общего назначения
* DMA помогает не всегда и есть не у всех
* богатство периферии с одной стороны приводит к большему оверхеду с настройками
Вопрос:
Мы точно о преимуществах в работе с низким потреблением говорим?Andy_Big
05.04.2019 10:30+1Другое резюме:
* бедность периферии заставляет дергать I/O, руками, хотя битовые операции с I/O чуть-чуть помогают
* DMA не помогает нигде и никогда
* отсутствие необходимости настройки периферии экономит сотню тактов, но передача пары-тройки байт по софтовому SPI съедает напрочь эту экономию
* необходимость провести какие-то вычисления с числами больше байта (например, произвести расчет реального атмосферного давления из полученных от датчика BMP180 данных) приводит к большому оверхедуPolaris99
05.04.2019 11:03У AVR нет хардварного SPI? Вот это сюрприз!
Кстати, а Вы в курсе, что даже у 8-битников бывает DMA? Вот у того же CC2540 с 8051 ядром есть для передачи по SPI. А у nRF51822 с ядром Cortex-M0, сюрприз-сюрприз, нету! Как с этим быть?Andy_Big
05.04.2019 11:38У AVR нет хардварного SPI?
У AVR нет двух хардварных SPI, как и нет назначения разных выводов для него. Но можно взять для примера более жизненный случай — ШИМ. Аппаратные возможности вывода ШИМ сильно ограничены в 8-битниках ввиду ограниченности числа таймеров.
Кстати, а Вы в курсе, что даже у 8-битников бывает DMA?
В курсе. Так же в курсе, что бывают 8-битники с сотнями МГц тактовой.
Как с этим быть?
А как быть с тем, что у CC2540 нет команд SBI/SBIC/SBIS? И как это увязать с Вашим утверждением «в плане работы с битами ARM всегда проигрывает мелким контроллерам»?
progchip666 Автор
05.04.2019 11:23Согласен со всем, кроме одного, бывают таки случаи, когда DMA полезно, ну во всяком случае в ARMaх
Andy_Big
05.04.2019 11:38Вообще, я это резюме писал на 8-битники, у которых DMA попросту нет :)
А при его наличии — да, DMA очень часто дает большой выигрыш.
mpa4b
05.04.2019 15:04-1Сравните bit banding, который есть в M3 (и наверное M4, не уверен), доступен для большей части периферии и ПАМЯТИ, и периферию в АВРках, вылезшую за предел диапазона SBI/CBI/SBIC/SBIS (всего 32 байта тот диапазон).
Polaris99
05.04.2019 15:52Вы смотрели, как это осуществляется компилятором?
mpa4b
05.04.2019 18:12Если в авр вылезет на пределы тех 32 байтов — то будет read-modify-write, никуда не деться.
bitbanding сам по себе в gcc не поддерживается, но можно написать простейшую функцию c __attribute__((always_inline)) и тогда всё хорошо. Номера битов в инклудах есть, покрмере для stm32
Gryphon88
04.04.2019 14:07+1Спасибо за статью, всё буквально на пальцах, в качестве мотивационной отлична.
Лично меня в разработке электроники больше всего смутило и удивило, что корпус и/или продажная упаковка часто стоят дороже самой электронной компоненты.progchip666 Автор
04.04.2019 14:33Спасибо.
Лично меня в разработке электроники больше всего смутило и удивило, что корпус и/или продажная упаковка часто стоят дороже самой электронной компоненты.
Это наверно потому, что вы ещё не интересовались сколько стоит молд, или другими словами прессформа, для изготовления кастомного корпуса. Вот это действительно адские деньги! Уложиться в 10K гринов — большая удача!Gryphon88
04.04.2019 15:04+2Интересовался, правда, уже после первой собственной метеостанции :)
Молд — это всё-таки крупная серия, если единицы-десятки штука корпуса ещё дороже, хотя серия суммарно и дешевле. С большим удовольствием читаю, какуродуютсяпытаются сэкономить на изготовлении ребята из проекта по автономному сборщику мячей для гольфа, используя разные технологии. Да и статьи Milfgard про производство тоже оказались полезными, теперь я знаю, сколько может стоить правильная картонная коробка…progchip666 Автор
04.04.2019 15:36Лично я бы при не слишком больших сериях присмотрелся бы к плоскостным технологиям. Корпус из нескольких вырезанных из оргстекла слоёв. Ребята делают ещё и из цветных, весьма симпатично получается. Само стекло и его резка лазером в России очень дёшево обходится.
Gryphon88
04.04.2019 16:09+1Так тоже удобно, а если не клеить, а гнуть, то ещё красиво и оригинально. Особенно удобно, если девайс получается большим, больше коробки для обуви. Но ещё больше мне нравится фанера вместо оргстекла, по деньгам и горючести примерно так же, зато попрочнее, получше со статикой и ультрафиолета не боится (мне важно), а чтобы можно было мыть — оклеить тонировочной плёнкой или полиэтиленовую феном наварить.
MegaVolt1976
04.04.2019 14:56+2Мы используем Microblaze внутри ПЛИС.
progchip666 Автор
04.04.2019 14:57Путь настоящих джидаев! По белому завидую. Давно тянет меня ПЛИС, но так пока и не сделал на них ни одного проекта.
MegaVolt1976
04.04.2019 15:47+1Так пора начинать. На али куча дешёвых плат. В инете полно рецептов.
mpa4b
04.04.2019 15:32А как компилируете, отлаживаетесь? gcc, openocd или проприетарный vendor lock?
MegaVolt1976
04.04.2019 15:50Всё в комплекте от производителя. Но там Eclipse-based система для софта. Так что всё вполне стандартно.
Neptun43
04.04.2019 17:07Не подскажете, где поискать DC-DC преобразователи с внутренним потреблением в единицы-десятки микроампер? Это реальная проблема — потребление МК понятно, как уменьшать, а вот найти понижайку пока получилось только с собственными запросами на 160мкА. Нужно получить 3.2В от входных 3.6...6В.
progchip666 Автор
04.04.2019 17:17+1Тут надо считать энергопотребление во включенном состоянии. Если ваш прибор подавляющее время спит, а работает совсем короткий по времени участок, то выгоднее может быть заменить на LDO с потреблением в 3 микроампера и не парится и это получится выгоднее. В одном из своих устройств я так и сделал, тут выбор большой мне очень нравятся такие
progchip666 Автор
04.04.2019 17:23Из импульсников вот такие использовал
TPS6205x 800-mA Synchronous Step-Down Converter
12-µA Quiescent Current (Typical)
amartology
04.04.2019 17:27А что-то вроде TPS62745 чем вас не устраивает? У него собственный ток меньше 1 мкА при максимальном выходном токе в 300 мА.
И про LDO выше дело написано.
semen-pro
04.04.2019 17:29Уникальный серийный номер Каждый микроконтроллер имеет свой уникальный серийный номер, присвоенный ему на производстве. Очень удобная особенность, которую можно использовать при организации серийного производства ваших изделий.
Пришлось лезть в гугл… Ну нет не Атмегах серийника, только в версиях с USB он бывает.Andy_Big
04.04.2019 18:23+2А когда это атмега успела попасть в категорию «простейшего ARM микроконтроллера за пол бакса… одной из простейших серий от ST на основе ядра Cortex-M0 — stm32F03»? :)
Gordon01
04.04.2019 19:01Его можно самому генерировать из Wafer_ID и прочих параметров. Хотя, возможно, они только в иксмегах
progchip666 Автор
04.04.2019 19:47Я про меги ничего не писал. Последний проект на AVR сделал боле 10 лет назад. Это касалось ARM от ST
tbl
04.04.2019 21:05+2Этот график какой-то менеджер по продажам рисовал?
график энергопотребления
Polaris99
04.04.2019 23:31Это ж стандартный сферический конь в вакууме, не узнали?
progchip666 Автор
05.04.2019 10:00Именно так и если покопаться то можно найти условия при которых эти показания сняты. В реальном приложении подобные цифры труднодостижимы, но если потребление вашего устройства отличается от них в разы, то вместо того, чтобы со знанием дела рассуждать о конях следует проверить схемотехнику и программный код своего проекта — это красной нитью было отмечено в моей статье. Легче всего вешать собак на производителей, но если их обещания слишком сильно расходятся с полученными вами результатами, то чаще виноваты совсем не они.
tbl
07.04.2019 20:10я про соотношение длин столбцов гистограммы со значениями, указанными на них
Аналогичный пример из церкви макаронного монстра
bisquitie
05.04.2019 07:49Спасибо за статью, отличная! Посоветуйте, пожалуйста, информации по стабилизации питания для чайников. Собираюсь привинтить bt-приёмник в автомобиль в скором будущем, так вот насколько понял, обычным китайским dc-dc я не обойдусь, уже мельком видел где-то, что питание там с большими помехами и проблемами.
progchip666 Автор
05.04.2019 11:58Спасибо за лестный отзыв.
bt-приёмник — имеется виду Bluetooth или что то другое?bisquitie
05.04.2019 13:52Да, оно самое, хочу «освежить» древнюю магнитолу. В силу рукожопости и ламерства пока додумался только привинтить к ней китайский bluetooth-приёмник.
Отзыв не то чтобы сильно лестный, просто всегда восхищали люди вроде вас. С одной стороны, и сам в детстве ещё увлекался электроникой, читал ют и радио, паял детекторные приёмнички, чуть-чуть базовых принципов осилил. Но вот такой уровень для меня пока не представим — чтобы в уме можно было рассчитывать номиналы деталей, помнить основные схемы подключения. Ну и конкретно Вы хорошо написали, очень доступно и легко читается.progchip666 Автор
05.04.2019 14:01В данном случае возможно будет лучше линейный стабилизатор применить, самому на макетке спаять, но это зависит от того каким напряжением собираетесь запитывать. Надеюсь магнитола не настолько древняя что ламповая? Если транзисторная, то там найдёте напряжения питания от 6 до 12 вольт. BLE модули потребляют обычно не более 50 мА и для них вполне подойдёт линейный стабилизатор с подходящим выходным напряжением. Какой именно — надо выбирать исходя от величины напряжения, которое вы возьмёте из магнитолы для питания.
bisquitie
05.04.2019 14:08Не думал засовывать это внутрь магнитолы (хотел сделать снаружи, подключив к Line In), но Ваши комментарии заставили подумать — там ведь действительно напряжение должно быть стабилизированное. Спасибо!
progchip666 Автор
05.04.2019 14:12Должно и лишних 20 — 50 мА не должно быть проблемой для штатного источника питания.
Alexeyslav
05.04.2019 14:16Не парьтесь. Импульсник туда подходит, если с блютуз-модуля брать сигнал сразу с диф.выхода, а преобразовывать в обычный непосредственно возле магнитолы и со своим стабильным питанием. Но если взять в китае сразу модуль+платку-основу то там всё это уже сделано и универсальное питание организовано. Обычно там используют HX-MINI-360 преобразователь.
Alexeyslav
05.04.2019 14:11BLE модуль может кратковременно в режиме коннекта взять 300мА да и те же 50мА уже достаточно много чтобы применять злой(вроде LM7805) линейный стабилизатор уже с радиатором, стабилизаторы в корпусе TO92 или меньше хоть и могут обеспечить требуемый ток но они не пройдут по тепловому режиму — греться будут как черти. При этом не надо забывать о том что для автомобильной бортсети в требованиях к потребителям прописано выдерживать кратковременные всплески до 200В, а линейный стабилизатор обычно до 30В входного и не больше, нужна защита на входе + ВЧ фильтр не будет лишним. Многие почему-то об этом забывают.
Alexeyslav
05.04.2019 14:04Тут поможет только практика. Считать в уме? ну да, легко… там формул-то с две всего. Надо только учителя или наставника толкового чтобы объяснил работу транзистора сотней разных способов, на одном из них у вас и «щёлкнет». Ну и естественно развивать абстрактное мышление и математические способности. Если за каждым расчетом лезть к калькулятору… дела не будет. Там собственно и точных расчетов не нужно, их потом может сделать калькулятор при необходимости. Вот кстати это ещё одна из вещей которая является препятствием для начинающих. Очень редко где нужны точные расчёты — детали имеют допуски на погрешность, транзисторы плывут от температуры и т.д. в схеме в таких случаях всегда будет предусмотрена возможность подстройки, автоматической калибровки или схемотехническое решение компенсирующее дестабилизирующие факторы.
Alexeyslav
05.04.2019 13:55У блютуз-приемника выходы обычно дифференциальные, помехи питания для них побоку если около магнитолы с её стабильным питанием(или организованным отдельно) будет правильная схема преобразования диф.сигнала в single-ended(как оно правильно переводится?) или в магнитоле изначально предусмотрен дифференциальный вход — его задействовать без каких-либо проблем.
bisquitie
05.04.2019 14:11Думал брать питание от бортсети автомобиля, а не лезть в магнитолу. Хабракомментарии убедили, что может стоит и внутрь залезть. Спасибо.
Alexeyslav
05.04.2019 14:24Изнутри будет сложнее сигналу пробиваться, модуль всеравно нужен снаружи а длинные провода питания пользы не добавят. Хотя если панелька передняя пластиковая полностью, то модуль будет светить через неё как направленной антенной, правда я сомневаюсь что это придет на пользу внутренностям магнитолы, могут возникнуть паразитные наводки на усилитель и слаботочные цепи внутри магнитолы, которые никак не ожидают радиочастотного сигнала в 2.4ГГц внутри магнитолы на мощности до 100мВт. Попробовать то можно, но что-то мне подсказывает… будет щёлкать в колонках в моменты активности. Вот платку преобразования дифференциального сигнала с модуля в магнитолу встроить можно и подключить параллельно линейному входу.
Roman_Popov
05.04.2019 17:09Неоднократно пытался таки перейти на 32бита. Ну вот в одном только проекте показалось удобно использовать ОС и соответственно STM32. Для всего остального за глаза хватает разных атмег. Кстати относительно энергопотребления, вот прямо сейчас нужно спроектировать прототипчик с батарейным питанием. Нужны SPI, I2C, UART. По сути просто перегонять байтики между ними периодически, никакой математики. Перерыл гору даташитов разных производителей. Как не странно самыми симпатичными выглядят PIC16F.
progchip666 Автор
05.04.2019 19:48Скажу по секрету что и на STM в большинстве случаев мы используем старый добрый суперцикл. RTOS окупают себя далеко не всегда, когда уж очень много не слишком срочных задач. Для бюджетного проекта, когда подешевле камень выбираешь приходи RTOS не лучший вариант слишком много оперативки жрут его процессы.
IgorPie
06.04.2019 03:35АЦП на stm32 все же не очень. Только оверсемплинг, медиана и фильтрация помогут. ЦАП — много лучше, 13 бит и более выжимаются почти без хлопот.
Атмелы — 300МГц — это хорошо, но давно же есть STM32H7 — 400МГц
progchip666 Автор
06.04.2019 08:27Есть и они более крутые, но они обойдутся почти в два раза дороже.
АЦП на микроконтроллерах вообще сложно реализовать хорошо, как и сделать дизайн оптимальный дизайн платы когда рядом такой источник импульсных помех как микроконтроллер с тактовой в сотни мегагерц. Но поскольку получаешь очень дешёвое решение, по сравнению с отдельным АЦП в отдельном корпусе, приходится мириться.IgorPie
06.04.2019 12:41Атмел выкрутились, можно было стопорнуть процессорное ядро на время измерений. Да и у dsPIC все было не так печально. Правда ЦАП выдавал черти что. Нулевая точка плавала от экземпляра к экземпляру.
ladle
06.04.2019 22:46USART — асинхронный последовательный порт, часто использующийся для связи с компьютером там он называется COM или RS232, модемами и другими устройствами
A universal synchronous and asynchronous receiver-transmitter (USART) is a type of a serial interface device that can be programmed to communicate asynchronously or synchronously. See universal asynchronous receiver-transmitter (UART) for a discussion of the asynchronous capabilities of these devices.
См. например
www.edn.com/electronics-blogs/embedded-basics/4440395/USART-vs-UART--Know-the-difference
dmitrmax
Что вы так носитесь с этой защитой кода? В 95% девайсов прошивка производителя нужна только для демонстрации возможностей и proof of concept. А дальше надо открывать спеки на железо и давать это сообществу. Они напишут такой код, что будет работать и обновляеться, когда уже самой компании не станет.
progchip666 Автор
На самом деле не столько я ношусь, сколько заказчики. Многие относятся к этому вопросу просто маниакально.
я бы не рискнул высказываться так однозначно, возможно в вашем сегменте это так, но обобщать не стоит.Вообще необходимость в защите кода сильно зависит от разрабатываемого устройства. Хочу также заметить, что обновляемое ПО не обязательно является незащищённым. Если речь идёт, например, о медицинском приборе, то оставлять его содержание в открытом доступе во многих случаях просто опасно. Даже в секторе IoT можно получить много сюрпризов, оставив ПО открытым.
naviastro
На флеши могут быть ключики, коэффициенты цифровых фильтров, таблицы переключений, калибровки под заказчика, да просто огромная куча всего, что не желательно для раскрытия примитивными средствами. Это помимо, собственно, защиты кода, который тоже может иметь наибольший вклад в стоимость девайса, ибо PCB-шки реверсятся и воспроизводятся некоторыми друзьями просто на ура.
progchip666 Автор
Остановить копирование изделия конечно не получится путём защиты кода, но значительно его затормозить вполне.
В серийный устройствах, изготовляемых китайцами я вообще рекомендую клиентам исключительно функциональные тесты прошивать. Для устройств, имеющих беспроводные интерфейсы, ещё бутлоадер для перепрошивки, причём привязанный к номеру устройства.
В большинстве случаев, для более-менее сложных дивайсов всё равно окончательную сборку, прошивку и тестирование клиенты уже в России делают. Ну а скажем такие вещи как автомобильные сигнализации, часто имеют универсальную плату в которую шьётся ПО для различных моделей.
Tanner
progchip666 Автор
Очень спорная концепция.
naviastro
Оно порицается для универсального применения (а-ля залепить жвачкой текущий радиатор), но может иметь ограниченный положительный эффект в частностях. Например, просто зная версии ядра/библиотек можно уже получить в руки хорошую отправную точку, даже не имея физического доступа к устройству (в т.ч. удалённого). А, вот девайс, залитый правильным компаундом может повысить не только информационную безопасность, чем не security through obscurity))
progchip666 Автор
В далёкие советские годы, когда генсеки ещё не начали гонки на лафетах, мы были очень наивными. Верили что Японские Телевизоры плоские и вешаются на стены как картины, а их видеомагнитофоны имеют идеальную защиту от взлома — при попытке вскрыть заднюю крышку просто разваливаются на части.
Сегодня телевизоры действительно висят на стенах и в принципе можно делать очень совершенные датчики проникновения, при наличии резервной батареи они могут заставить программу самоуничтожиться.
dmitrmax
Различные медицинские приборы и прочая узкосегментая девайсщина не считается — там делайте, что хотите. Я говорю о массмаркете. Посмотрите, например, во что развилась возможно прошивать роутеры. И как стагнирует экосистема IP-камер на чисетах Hi 35xx, на которых (у всех вендоров) стоит одна и та же китайская убогая, кривая и косая прошивка ужасного качества. Конечно, на Linksys WRT54G в своё время спеки никто не открывал, но помогла «стандартность» железа. А вот с IP-камерами немного сложнее, так как интерфейс с матрицей и с хардварными кодеками вообще негде посмотреть. Открой спеки на это железо и сообщество бы в миг написало нормальную прошивку и камеры бы разлетались как горячии пирожки. Аналогично дело обстоит со всяким IoT'ов для умного дома. Сплошной vendor lock in и довольно недолгий цикл поддержки. И ведь умный дом никто из потребителей не хочет делать так, чтобы каждые два года его выкидывать и ставить новый.
progchip666 Автор
Собственно вы только подтвердили мои слова.
Всё зависит от сегмента и в описанном вами случае это вполне может быть разумным ходом.
В описанном вами сегменте я к сожалению
или к счастьюне работаю.aakolov
Согласитесь, есть разница между выкладыванием кода под свободной лицензией и предоставлением возможности установить свою прошивку на устройство. С теми же медицинскими (да и многими лабораторными) приборами типичная ситуация — это управляющее ПО, написанное под Windows XP, и которое для запуска под современной Windows требует костылей.
Am0ralist
Знаете, по опыту работы с ПО под меданализаторы — там не то, что костыли требуются, там весьма примитивные утилиты, которые, по сути, вообще редко когда прибиты к каким-либо особенностям винды.
Просто производителю нет смысла даже тестировать ПО начала нулевых, когда можно просто под современную ОС запустить вмварю и в ней win2000. Просто из принципа, что под новую ОС могут быть какие-то редкие баги. Ну или она могла хранить данные в папке своей установки, который в программ файлз, и путь этот забит внутри программы, а сейчас это запрещено.