![Push-pull VS open-drain.](https://hubstub.ru/uploads/posts/2017-01/thumbs/1485356990_screenshot_7.jpg)
25-01-2017, 15:17
В конце прошлой статьи обещал рассказать чем отличается выход push-pull(PP) от open-drain(OD). Для того чтобы разобраться, предлагаю рассмотреть устройство выхода push-pull. По сути, он состоит из двух ключей, один подтягивает вывод к питанию, другой к земле. А теперь open-drain....
![STM32F3 и STM32F4 GPIO.](https://hubstub.ru/uploads/posts/2017-01/thumbs/1484757037_screenshot_1.jpg)
18-01-2017, 19:31
Ранее на сайте уже была опубликована статья о том как конфигурировать выводы STM32, она посвящалась микроконтроллерам 100 серии, хотя явно об этом в статье не говорилось. В этой статье речь пойдёт о микроконтроллерах 300 и 400 серии. Перед настройкой любого вывода МК обязательно надо включить тактирование соответствующего порта!!! Каждый вывод МК может быть сконфигурирован в одно из состояний. На...
![STM32 быстрое преобразование Фурье.](https://hubstub.ru/uploads/posts/2016-12/thumbs/1481726713_screenshot_4.jpg)
14-12-2016, 13:42
Давно хотелось прикрутить к осциллографу, который описывал тут, преобразование Фурье, но почему-то руки не доходили. Совсем недавно, месяц назад решил увеличить частоту сэмплирования ослика, заменив stm32F103VE с частотой сэмплирования 1М на stm32F303VC c частотой сэмплирования 5М. После замены чипа и изменения программы решил всё-таки разобраться с быстрым преобразованием Фурье(БФП или FFT). ...
![STM32 BSRR VS ODR.](/templates/Default/dleimages/no_image.jpg)
20-10-2016, 19:43
Те кто читает эту статью, думаю знают, что записать единицу в нулевой бит порта А можно двумя способами GPIOA->ODR |= GPIO_ODR_ODR0; или GPIOA->BSRR = GPIO_BSRR_BS0; И везде пишут, что второй способ правильнее так, как установка бита в таком случае выполянется атомарно. Тут не поспоришь. А теперь давайте представим ситуацию, у нас есть восьмибитная шина, по которой передаются данные,...
![Измерение температуры с помощью термопары, на примере MAX6675 для STM32.](https://hubstub.ru/uploads/posts/2016-09/thumbs/1474489961_screenshot_5.jpg)
21-09-2016, 16:41
В последнее время появилась необходимость в печке для пайки оплавлением. Для тех кто не знает, что это такое, в двух словах опишу, как она работает и для чего она нужна. Есть у меня десяток плат, которые надо собрать, элементы на плате в основном smd. Сейчас платы собираются по следующему алгоритму: сначала с помощью шприца наношу на контактные площадки паяльную пасту, затем раскладываю элементы....
![STM32 тактирование.](https://hubstub.ru/uploads/posts/2016-09/thumbs/1474115021_screenshot_2.jpg)
17-09-2016, 15:15
Первое время для того, чтобы упростить написание программ для STM32 не вдавался в тонкости настройки системы тактирования, а выбирал частоту системной шины в файле system_stm32f10x.c, просто расскоментировав нужную строку. Но если уж доходило дело до настройки частоты тактирования отдельных блоков(например АЦП), то использовал CUBE. Перед глазами вся система тактирования, что очень удобно и...
![Подключение резистивной сенсорной панели c драйвером XPT2046 к STM32 и её калибровка по четырём точкам.](https://hubstub.ru/uploads/posts/2016-08/thumbs/1471014717_screenshot_1.jpg)
Статей про резистивные сенсорные панели на сайте уже несколько, тут можно почитать как они работают, а тут как подключить её к AVR и произвести калибровку. Поэтому далее рассказ пойдёт лишь о тонкостях работы с такой панелью. Как известно, обмен данными c XPT2046 происходит по SPI, поэтому надо просто найти свободный и подключится к нему. Обычно чтобы посмотреть под какой SPI какие выводы...
![Подключение TFT дисплея по FSMC к STM32, на примере SSD1963 .](https://hubstub.ru/uploads/posts/2016-08/thumbs/1470240107_screenshot_2.jpg)
Дело было так, один из посетителей сайта выслал мне, в качестве подарка, 5 дюймовый TFT дисплей, который управляется драйвером SSD1963. Дней через десять посылка прибыла, но на коробке, в которую он был упакован, была вмятина, а сам дисплей был разбит. Написал об этом отправителю и он сразу же заказал на моё имя такой же дисплей на ebay, за что ему спасибо. Прошло не более двух недель с момента...
![Создание проекта в Keil uVision.](https://hubstub.ru/uploads/posts/2016-07/thumbs/1469183717_keil.jpg)
21-07-2016, 17:32
Один из вопросов, который возникает, при переходе на STM32: «Какую среду разработки выбрать?» Наверное самые популярные — это Coocox, IAR и Keil uVision, я пользуюсь последней. Главное её преимущество перед другими — это мощный симулятор, с поддержкой периферии и множеством виртуальных приборов. Все эти плюшки "упрощают жизнь" опытному разработчику и помогают новичку разбираться с богатой...
![STM32 Режим захвата.](https://hubstub.ru/uploads/posts/2016-05/thumbs/1464183972_screenshot_9.png)
25-05-2016, 14:30
Режим захвата — это особый режим работы таймера, суть которого в следующем, при изменении логического уровня на определённом выводе микроконтроллера, значение счётного регистра записывается в другой регистр, который именуют регистром захвата. Для чего это надо? С помощью этого режима можно измерить длительность импульса или период сигнала. Режим захвата у STM32 обладает некоторыми особенностями:...
![STM32 запуск АЦП по таймеру.](https://hubstub.ru/uploads/posts/2016-04/thumbs/1461146184_regular.jpg)
20-04-2016, 13:02
На днях мне понадобилось раз в секунду запускать АЦП преобразование и сразу же стало понятно, что битами SMPR[2:1], которые задают количество тактов между выборками АЦП, сделать это не получится, поэтому прийдётся искать другой способ. Максимальное количество тактов между выборками, которое можно задать с помощью этих битов, равно 239,5. Если к этому числу прибавить время преобразования — 12.5...
![Отладка по SWD STM32.](https://hubstub.ru/uploads/posts/2016-01/thumbs/1452593185_screenshot_14.png)
12-01-2016, 14:10
У STM32 есть очень удобный интерфейс для отладки и прошивки МК — Serial Wire Debug, сокращено SWD. Его удобство заключается в том, что для отладки надо подключить всего два информационных вывода и соответственно два вывода питания. Схема подключения выглядит следующим образом. После того как выводы подключены, надо разрешить отладку по SWD в среде программирования, в KEIL это делается так....
![STM32 не работает SPI3.](https://hubstub.ru/uploads/posts/2015-12/thumbs/1450547695_screenshot_4.png)
19-12-2015, 21:30
Обычно перед тем как собирать какое-то устройство реализую на макетке базовый функционал, так было и в этот раз. После того как базовый функционал был реализован, начал разводить плату, походу выяснилось, что гораздо проще развести плату если использовать SPI3, нежели SPI2, который использовался в проекте. Ну зачем создавать себе трудности, подумал тогда и развёл плату используя SPI3....
![STM32 режимы пониженного энергопотребления.](https://hubstub.ru/uploads/posts/2015-12/thumbs/1450194827_screenshot_10.png)
15-12-2015, 20:17
Сначала хотелось бы пару слов сказать о питающих напряжениях микроконтроллера, для нормальной работы STM32 необходимо от 2 до 3.6V, а уже встроенный стабилизатор обеспечивает 1.8 вольта для питания ядра. Ниже схематично изображена общая схема питания контроллера. Как видно, схема питания разделена на домены и каждый из них отвечает за питание определённой периферии/части МК. Уменьшить потребление...
![Функция задержки STM32.](https://hubstub.ru/uploads/posts/2015-12/thumbs/1449069146_screenshot_1.png)
30-11-2015, 20:17
Первое на что обратил внимание, после перехода с AVR на STM32 — это отсутствие привычных функций, для реализации задержки: delay_us() и delay_ms(), ну отсутствуют так отсутствуют, подумал тогда и если надо было реализовать задержку, то делал это так....
![SPI STM32.](https://hubstub.ru/uploads/posts/2015-11/thumbs/1448642264_screenshot_1.png)
27-11-2015, 18:09
Принцип работы протокола рассматривать не будем, он был рассмотрен тут, перейдём сразу к возможностям модуля SPI у STM32: полнодуплексная синхронная передача с использованием 3 линий симплексная синхронная передача с использованием двух линий, возможность использования двунаправленной линии для передачи данных 8 или 16 битный формат фрейма работа в режиме Master или Slave в режиме Master 8...
![Прерывания STM32.](/uploads/posts/2015-08/thumbs/1438597772_screenshot_3.png)
3-08-2015, 14:52
У STM32 прерываниями управляет контроллер прерываний NVIC — Nested vectored interrupt controller. Давайте рассмотрим его возможности: обслуживание до 81 прерывания, в зависимости от модели МК программируемый уровень приоритета от 0 до 15 для каждого прерывания, самым приоритетным считается прерывание с уровнем 0 динамическое изменение приоритета разделение прерываний на группы, а внутри группы...
![Время выполнения кода STM32.](/uploads/posts/2015-07/thumbs/1438097388_screenshot_1.png)
28-07-2015, 16:32
Всё началось с того что, появилась необходимость хотя бы примерно оценить время выполнения участка кода. Оказалось у микроконтроллеров с ядром Cortex-M3 для этого предназначен специальный модуль, который называется Data Watchpoint and Trace Unit, сокращённо DWT. Чтобы настроить DWT на измерение длительности выполнения кода нам необходимо установить 2 бита. Бит TRCENA в регистре DEMCR, установка...
![STM32 ШИМ.](/uploads/posts/2015-07/thumbs/1437581761_2.jpg)
21-07-2015, 17:11
Генерация ШИМ у STM32 осуществляется с помощью таймеров, про них в документации написано много, но ШИМ оказалось настроить достаточно просто. Генерировать ШИМ будем с помощью 4-го канала первого таймера. Первым делом надо найти какой вывод отвечает за 4-й канал первого таймера, для этого открываем Technical DataSheet на свой МК, у меня STM32F103VET6, и находим альтернативной функцией какого...
![Внешние прерывания STM32.](/uploads/posts/2015-07/thumbs/1436960056_screenshot_3.png)
15-07-2015, 14:41
Плюсом внешних прерываний является то, что они фиксируют переход от одного логического уровня к другому, а не сам уровень. Предположим нам надо зафиксировать когда изменится напряжение на какой-то ножке и экстренно выполнить определённый набор инструкций. Самый простой алгоритм выглядит следующим образом, через определённые интервалы времени опрашиваем вывод и анализируем изменилось ли его...