Рейтинг
28.46
голосов: 30

О блоге

Работа с ядром CortexM3 и периферией STM

Администраторы (1)

Модераторы (0)

Модераторов здесь не замечено

Читатели (263)

ploop _YS_ m3hc Krieger Tabke marvin_yorke Ultrin WildCat hexanaft Vga Alatar mzw Reverb grand1987 dievgen woogle PahanMenski anper citizen ZiB

Все читатели блога

Используем CMake и GCC для программирования uC STM32 в линуксе.

Всё у армов хорошо, одна беда — все рассчитано на работу в определенных пропиетарных м платных IDE, которые, естественно, никто портировать на linux не собирается. Для линукса есть такая хорошая вещь — ODeV Idea используются make + gcc + eclipse + openocd. Однако, я решил пойти немного другим путем — разобратся, из чего состоит проект для stm32 и использовать cmake для сборки проектов.
UPD: Теперь всё лежит на github'е — https://github.com/ObKo/stm32-cmake
UPD2: Данный текст слегка устарел (но общий принцип сохранился), актуальные доки на github'е


Читать дальше

Атомарные операции в Cortex-M3


Часто возникает ситуация, когда одна и та-же переменная используется и изменяется из разных потоков или из островного потока и прерываний. В этом случае модификацию такой разделяемой переменной необходимо осуществлять атомарно. Простейший способ обеспечения атомарности — это запрет прерываний на время операции, но это не наш метод — в ядре ARM Cortex-M3 есть более интересные средства для этого.


Читать дальше

Особенности использования прерывания Half transfer при работе с DMA

Если обрабатывается большой массив данных например от АЦП, то удобно применить для этого прямой доступ к памяти(ПДП). С использованием ПДП данные складываются в массив и потом могут быть обработаны. Если необходим непрерывный сбор данных и их обработка, то сбор можно вести с использованием ПДП, а обрабатывать их в прерывании ПДП. Данные пишутся в буфер циклически. По заполнении данными больше половины буфера, выставляется Half Transfer Interrupt Flag (HTIFx), По заполнении всего буфера выставляется Transfer Complete Interrupt Flag (TCIFx). Прерывания генерируются по установке любого из этих флагов (если разрешены). В обработчике прерывания эти флаги могут быть прочитаны и выяснено, насколько заполнен буфер — наполовину или целиком. Если буфер заполнен наполовину — то обрабатывается первая половина буфера. Данные в это время пишутся во вторую половину. И наоборот. Таким образом можно осуществить непрерывную обработку данных.

Читать дальше

Использование gcc для stm32f100

Примерно полгода назад я обзавелся самым мелким контроллером stm32f100c4. Здесь я хотел бы изложить свой опыт применения средств разработки gcc вживую, без графической оболочки. Описывается установка, создание проекта — использование Makefile, прошивка через UART, отладка через gdb на stm32vldiscovery, ну и самое главное — грабли

Читать дальше

STM32-VLDiscovery: мой вариант быстрого старта.

Внимание, статья обновлена. См. примечание в конце.

***

Предисловие.

Некоторое время назад, я, как и многие другие, принял участие в акции EBV, заказав себе упомянутую в названии платку. Моя первая попытка поковырять ее не увенчалась успехом, да и буквально одновременно с ней мне в руки попал LaunchPad… Одним словом, лежал STM32-Discovery буквально до сегодняшнего дня и пылился. Но в конце концов я взялся за него с твердым намерением наконец-то помигать светодиодом во что бы то ни стало. Естесственно, прежде всего я стал читать уже написанное на русском и английском. Однако, несмотря на большое количество статей, все они показались мне слишком разрозненными, а некоторые из более цельных — излишне объемными для начала. Возможно, я плохо искал, но так нигде и не нашел текста, прямо и без тучи лишней информации повествующего о том, как с нуля помигать светодиодом на STM32-Discovery. Полезные части встречались в разных местах, и вот я решил объединить их в по возможности лаконичное и законченное повествование.



Читать дальше
  • +7
  • 30 апреля 2011, 22:46
  • _YS_

Программирование FLASH

Часто необходимо сохранять конфигурационные параметры или еще что либо при отключении питания. В stm32 для этой цели возможно использовать либо backup регистры либо встроенную flash память. 20 регистров backup домена по 2 байта часто недостаточно. Кроме того для поддержания бекап домена нужна отдельная батарейка. Флеш лишена этих недостатков, но имеет свои собственные.

Читать дальше
  • +6
  • 27 апреля 2011, 20:15
  • OlegG

Воспроизведение звука на STM32-Discovery при помощи Speex

Многие уже воспользовались известным конкурсом, и заказали себе плату STM32-Discovery. Я тоже заказал себе такую. Захотелось сделать на ее основе какую либо конструкцию. Меня заинтересовал AN2812 от ST, в котором описывалось воспроизведение звука с использованием библиотеки Speex для STM32. Однако недостатком аппноута было то, что в нем использовалась stm32f103, более мощная чем stm32f100, установленная в discovery. Также аппноут рассчитан на работу с более сложной отладочной платой. Поскольку я только начинал изучать STM32 (это мой первый проект, до этого я только светодиодом мигал), я решил не пытаться запустить код аппноута, а собрать весь проект с нуля. Проект был создан в IAR.
Вид получившейся конструкции:




Читать дальше

STM32 – Подключаем энкодер

Продолжаем разговор, сегодня очень кратенько о подключении энкодера к микроконтроллеру.
IMG_5311


Читать дальше
  • +6
  • 19 марта 2011, 19:24
  • ZiB

Контроллер ПДП + Таймер 15 в режиме ШИМ

На данный момент приостановились мои работы с STM32, так как пока приоритет у STM8L, но по просьбе пользователя LeftRadio, сегодня расскажу о контроллере прямого доступа к памяти (более привычно DMA) и в качестве примера рассмотрим работу контроллера ПДП с  таймером 15 в режиме ШИМ.


Читать дальше
  • +5
  • 16 марта 2011, 16:50
  • ZiB

Для кого халява, а для кого возможность получить Harley

Поставщик электронных компонентов EBV-Electronik проводит конкурс на лучшую разработку на основе процессора STM32. Суть в том, что после регистрации вам бесплатно высылают demo-плату, с процессором STM32F100RBT6B (128 KB Flash, 8 KB RAM), из которой вы должны сделать конфетку.


Читать дальше
  • +3
  • 06 марта 2011, 22:13
  • m3hc