Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Реализация протокола MIL-STD-1553 на STM32

C *Промышленное программирование *Программирование микроконтроллеров *
Однажды, появилась необходимость использования в нашем устройстве мультиплексного канала обмена информацией (МКИО), он же ГОСТ Р 52070-2003, он же MIL-STD-1553В. Первоначальный результат поисков несколько удивил: типовые решения выдаваемые поисковой системой, как правило, основывались на использовании ПЛИС. Поскольку решать проблему нужно было быстро, появилась мысль сделать конвертер протокола из MIL-STD-1553 в MODBUS RTU. При этом постараться использовать достаточно недорогие технические решения и микроконтроллер из семейства STM32.



На фото из Википедии: F16, на котором впервые был использована шина MIL-STD-1553В. Наши устройства не летают :), поэтому каких либо ограничений по применению элементной базы нет. Просто у Заказчика приборная сеть построена на основе этой шины. Первая часть статьи описывает прием и передачу по шине МКИО, вторая часть будет про конвертер в MODBUS.
И вот что из этого получилось.
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 23K
Комментарии 24

STM32: FreeRTOS и пьезокерамический излучатель

Программирование микроконтроллеров *
image

Керамический пьезоизлучатель (buzzer) — простая деталь, наравне со светодиодом требующая минимального набора ресурсов для управления и настолько же легко подключаемая к микроконтроллеру. Как и светодиоду с возможностью плавной регулировки яркости, от микроконтроллера ему требуется не более одного канала таймера и внешний вывод.

Много в интернете уроков «Подключаем пищалку к ардуино», только вот заканчиваются они проигрыванием «В траве сидел кузнечик» или озвучкой срабатывания RFID датчика. Наверное тем, кто занят этим профессионально и серьезно, не до ведения блогов и записи видеоуроков.

А ведь миниатюрный керамический динамик — шаг в сторону более дружелюбного интерфейса с человеком. Нажатия кнопок, касания сенсорной панели, реакция на различные события… Такая вот обратная связь в виде звукового отклика!

Под катом попробуем сделать с этим что нибудь, а именно напишем драйвер пьезодинамика и заставим его параллельно озвучивать несколько разных внешних событий.
Всего голосов 39: ↑39 и ↓0 +39
Просмотры 19K
Комментарии 14

Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 1

Программирование микроконтроллеров *
Из песочницы

Еще в студенческие годы мне пришлось весьма тесно обобщатся с микроконтроллерами, тогда это были 8-битные 8051 и AVR. Сейчас, захотев вернутся этому занятию, перевел свой взгляд на весьма широкое семейство контроллеров STM32. О них немало написано на просторах Сети, тем не менее я изъявил желание написать небольшой цикл статей о работе с STMками. Знакомство с ними я хотел бы начать, как говорят, с полного 0. Для экспериментов мною была приобретена простая и дешевая (3$) отладочная плата Maple Mini. Используемый в ней контроллер STM32F103CB обладает весьма внушительным букетом возможностей. (особенно в сравнении с решениями в своей ценовой категории). Подробно можно почитать в сети, и конечно же, в даташите.. Родная Ардуиноподобная среда разработки мне сразу не пришлаcь по вкусу (на вкус и цвет, как говорят...). Из всего изобилия разнообразных сред разработки я остановил свой взгляд на mikroC for ARM компании mikroelektronika. Когда-то я сталкивался с их компиляторами(для 8081), мне весьма понравилось. Хоть и не без косяков, но решил попробовать.

Читать дальше →
Всего голосов 18: ↑12 и ↓6 +6
Просмотры 18K
Комментарии 18

Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 2, начало…

Программирование микроконтроллеров *

Разобравшись с азами и поморгав светодиодом, можно переходить к реализации более сложных задач. Благо компилятор microC имеет множество полезных функций, значительно упрощающих жизнь программисту, в особенности начинающему.


В прошлой части я рассказывал как реализовать опрос состояния порта МК, например для опроса подключенной к ней кнопки. Вообще порт в STM32 МК устроен весьма сложно. Вот схема GPIO порта из мануала:
image

Читать дальше →
Всего голосов 13: ↑10 и ↓3 +7
Просмотры 11K
Комментарии 6

Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 2, продолжение

Программирование микроконтроллеров *

Разобравшись с таймером, попробуем использовать его для чего, то кроме генерации временных интервалов. Чаще всего при помощи таймера генерируется ШИМ сигнал. Что это такое можно почитать на просторах Сети, например во всеведающий Википедии.


Основная прелесть ШИМ в том, что он позволяет при помощи ключей работающих в импульсном режиме (наиболее эффективном относительно потерь энергии) изменять действующее значение напряжение приложенного у той или иной нагрузке. Для ШИМ сигнала основными параметрами является общая длительность импульса и длительность его активного состояния (обычно высокого уровня сигнала).


Действующее значение напряжения имеет зависимость от длительности активного состояния импульса. Наш МК умеет генерировать ШИМ при помощи аппаратных функций таймера, не занимая драгоценное время ядра процессора.


image

Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 10K
Комментарии 5

Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 3 — UART и GSM модуль

Программирование микроконтроллеров *
Сейчас немного научившись программировать под наш микроконтроллер, попробуем связать его с внешним миром. Аппаратные интерфейсные модули STM32 поддерживают много много различных внешних интерфейсов. Начнем с самого часто используемого интерфейса UART. Что это за интерфейс можно прочитать здесь и здесь.
Читать дальше →
Всего голосов 23: ↑21 и ↓2 +19
Просмотры 20K
Комментарии 4

Первые шаги с STM32 и компилятором mikroC для ARM архитектуры — Часть 4 — I2C, pcf8574 и подключение LCD на базе HD4478

Программирование микроконтроллеров *
Следующую статью я хочу посвятить работе с распространенным интерфейсом i2c, достаточно часто используемом в разнообразных микросхемах, подключаемых к микроконтроллеру.

I2C представляет собой шину работающую по двум физическим соединениям (помимо общего провода). Достаточно много о ней расписано в Интернете, неплохие статьи есть в Википедии. Кроме того алгоритм работы шины очень понятно описан здесь. В вкратце, шина представят собой двухпроводную синхронную шину. На шине может одновременно находится до 127 устройств (адрес устройства 7-битный, к этому вернемся далее). Ниже приведена типичная схема подключения устройств к i2c шине, с МК в качестве ведущего устройства.


Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 10K
Комментарии 0

Оцифровка звука на STM32 (АЦП+DMA) и кодирование в Speex для передачи

Разработка систем связи *Программирование микроконтроллеров *Разработка для интернета вещей *
Tutorial
image В продолжение своей вчерашней статьи на Geektimes хочу рассказать подробнее про реализацию оцифровки и кодирования звука на микроконтроллере STM32.

В статье покажу как настроить проект в STM32CubeMX, собирать данные с АЦП в два кольцевых буфера посредствам DMA, подключить библиотеку Speex и кодировать данные. Возможно многим материал покажется весьма очевидным, но надеюсь хоть кому-то он будет полезен.

Прошу под кат.
Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Просмотры 38K
Комментарии 17

Начинаем работать в STM32CubeMX. Часть 3

Программирование микроконтроллеров *
Tutorial
Продолжаем цикл про основы работы STM32MXCube и программированию микроконтроллеров STM32.

Часть 1
Часть 2

В прошлых частях мы освоили базовые настройки микроконтроллера, работу с GPIO, таймером, DMA и DAC. В этой части мы познакомимся с ADC и USB.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 45K
Комментарии 14

Rust, Eclipse и STM32

Rust *Программирование микроконтроллеров *
Tutorial
Для того, чтобы подружить между собой указанные в заголовке технологии нам понадобятся:


Идея состоит в том, чтобы с скомпилировать написанную на Rust программу в библиотеку, которую можно будет слинковать с помощью тулчейна для ARM.
В итоге мы сможем даже вполне комфортно дебажить смешанный код на Rust и С.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Просмотры 19K
Комментарии 24

Настраиваем бесплатную сборку для написания и отладки программ под микроконтроллеры на основе ядра ARM под Windows 10

Eclipse *C++ *C *Разработка робототехники *Программирование микроконтроллеров *
Tutorial
Идея написать статью (которая войдет в цикл статей для новичков, остро жаждущих создавать что-то на микроконтроллерах при почти нулевых знаниях в области программирования в принципе) пришла мне после того, как мне пришлось немного отвлечься от своих основных дел, чтобы помочь другу настроить рабочую среду для написания софта под его небольшой домашний проект на основе board-а с stm32f103 на борту. Я рассчитывал, что это займет около получаса, максимум час, но ноутбук друга был на Windows 10 x64, что для меня уже непривычно (сам работаю в Ubuntu). По итогу мы потратили практически 8 часов на настройку и создание простого проекта, борясь с многими не очевидными вещами.

Параллельно с этим мне пришлось подробно объяснять, какой элемент сборки для чего нужен, а так же, как эти элементы взаимодействуют между собой, поскольку друг до этого никогда ранее с микроконтроллерами не сталкивался (от слова «видел Arduino в магазине»).

Данный материал призван помочь начинающим быстро и без проблем настроить полностью бесплатную инфраструктуру для работы с микроконтроллерами, а так же понять, каким образом происходит сборка итогового бинарного файла. Производитель и модель микроконтроллера на этапе настройки этой инфраструктуры неважны. Главное, чтобы в его основе лежало ядро ARM.
Читать дальше →
Всего голосов 2: ↑1 и ↓1 0
Просмотры 49K
Комментарии 9

MakiseGUI — бесплатная библиотека графического интерфейса для микроконтроллеров

Программирование микроконтроллеров *

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


Назвал я её MakiseGui.


Всего голосов 66: ↑65 и ↓1 +64
Просмотры 30K
Комментарии 57

Примитивы для реализации 1-Wire master при помощи PWM и ICP для STM8L и STM32

SCADA *Программирование микроконтроллеров *Разработка для интернета вещей *
В предыдущей статье был представлен вариант реализации примитивов для асинхронной работы с шиной 1-wire для микроконтроллеров Atmel. Ну а сейчас вашему вниманию предлагается реализацию того же самого, но на более мощных микроконтроллерах семейства STM8L (для отладки использовалась обычная оценочная плата STM8L-Discovery с извлеченным LCD-дисплеем). С минимальными изменениями описываемая реализация может быть адаптирована и для семейства STM32.


Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 8.6K
Комментарии 11

(Не) любителям protothreads посвящается: Высокоуровневые функции для работы с 1-Wire

Системное программирование *C *SCADA *Программирование микроконтроллеров *Разработка для интернета вещей *
Подразумевается, что мы будем писать прошивку под «голое железо». В противном случае применение protothreads смысла не имеет, т.к. мультизадачность должна обеспечиваться средствами ОС. Подразумевается также, что нам необходимо реализовать несколько более-менее сложных алгоритмов, связанных с операциями ввода-вывода. Ну и, как всегда в микроконтроллерах, очевидные требования по экономии RAM и энергопотребления.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 6.2K
Комментарии 1

Как работает лазерная рулетка: реверс-инжиниринг

Реверс-инжиниринг *Программирование микроконтроллеров *Электроника для начинающих
image Ранее в своей статье я рассказывал о том, как устроены фазовые лазерные дальномеры. Теперь пришло время разобраться с тем, как работают бытовые лазерные рулетки. Разобраться — это не просто заглянуть, что же там внутри, а полностью восстановить всю схему и написать собственную программу для микроконтроллера.
Читать дальше →
Всего голосов 112: ↑112 и ↓0 +112
Просмотры 78K
Комментарии 37

Культурный Embedded на IT Global Meetup В СПБ

Блог компании НТЦ Метротек CAD/CAM *
image

Дорогие друзья, 14 мая пройдет большая встреча Петербургских IT сообществ, встречи проводятся два-три раза в год, пространство рассчитано на 800 участников. Каждое из IT сообществ представляет свою программу на мероприятие, обычно это разбор кейсов, мастер-классы, небольшие семинары. В этот раз участие примет 16 сообществ разной IT тематики.

Зарегистрироваться нужно по ссылке.

Пожалуйста, обратите внимание на то, что количество мест — ограничено, пожалуйста, регистрируйтесь только в том случае если действительно собираетесь идти.
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 2.1K
Комментарии 2

Билдим под stm32duino с помощью CMake (и отгребаем от линкера)

Программирование микроконтроллеров *Системы сборки *
image

Всем привет! Как часто вы задумываетесь как код написанный в красивой IDE превращается в набор байт, удобоваримый для процессора или микроконтроллера? Вот я лично не часто. Работает себе и хорошо. Нажал кнопку Add File — IDE сама добавила исходник в проект, сама вызывает компилятор и линковщик. Пиши себе код и не думай о мелочах.

Но иногда все эти неявные штуки вылезают на поверхность и начинают сниться в кошмарах. Оказывается даже в простейшем Hello World под капотом крутится много всяких разных и очень интересных шестеренок, которые обеспечивают плавное и комфортное движение. Мир микроконтроллеров не исключение.

Сегодня речь пойдет о замене билд системы для моего проекта. По различным причинам мне было тесно с Ардуино и пришлось искать что нибудь где можно развернуться. Под катом описан мой опыт перехода от билд системы Ардуино к сборке прошивки под микроконтроллер STM32 и фреймворк stm32duino с помощью CMake.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 13K
Комментарии 45

Использование библиотеки stm32cube для создания платформо независимых драйверов

Блог компании Embox Open source *Системное программирование *C *Программирование микроконтроллеров *
Всем привет! В данной статье я бы хотел поделиться опытом создания драйверов для платформ серии stm32. Идея заключается в том, чтобы в ОС Embox, не приходилось создавать драйвера для каждой серии платформ STM32F3, STM32F4 и так далее. Ведь кроме того, что это занимает время, новый код неизбежно будет содержать новые ошибки.
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 13K
Комментарии 33

Как сделать context switch на STM32

Блог компании Embox Open source *Системное программирование *C *Программирование микроконтроллеров *
Добрый день!

Потоки… Переключение контекстов… Базовая сущность ОС. И конечно, при разработке библиотек и приложений мы всегда полагаемся на то, что реализация потоков безошибочна. Поэтому было неожиданно найти грубую ошибку в переключении потоков для STM32 на ОСРВ Embox, когда уже продолжительное время работали и сеть, и файловая система и многие сторонние библиотеки. И мы даже успели похвастаться о своих достижениях на Хабре.

Я бы хотел рассказать про то, как мы делали переключение потоков для Cortex-M, и тестировали на STM32. Кроме того, постараюсь рассказать о том как это сделано в других ОС — NuttX и FreeRTOS.
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Просмотры 20K
Комментарии 22

Используем template + constexpr для создания масок регистров периферии микроконтроллера на этапе компиляции (C++14)

C++ *Отладка *Программирование микроконтроллеров *
Tutorial

Введение


Эта небольшая заметка содержит не очевидное решение поставленной ниже задачи, до которого мне пришлось доходить несколько бессонных ночей.

Задача: на основе заданных пользователем данных о том, как должен работать периферийный блок микроконтроллера, получить на этапе компиляции массив масок конфигурации его регистров, которые можно было бы использовать в реальном времени. При этом требуется на этапе компиляции проверить, что все параметры заданные верно (периферия микроконтроллера будет сконфигурирована верна).



Заинтересовавшихся в том, как это можно сделать, прошу под кат.
Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 8.9K
Комментарии 9