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

О блоге

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

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

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

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

Читатели (268)

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

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

DAC в STM32, аппаратный генератор

По сути эта статья продолжение статьи DAC в STM32
ЦАП stm32 может аппаратно генерировать сигналы. Это может быть либо треугольный сигнал, либо шум.

Генерация возможно только при запуске преобразования ЦАП от события. При возникновении события данные суммируются с DHRx и переносятся в выходной регистр DORx, затем вычисляется следующее значение на протяжении 3 тактов. Можно выбирать амплитуду и смещение сигнала относительно 0. Смещение определяется значением в DHRx, амплитуда битами MAMPx в регистре DAC->CR.


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

STM32 и Дзен. Компиляция и запуск отдельных программ.

По просьбам трудящихся решил поделиться своими наработками.



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

Суть в следующем.
Имеется плата, на которой стоит микроконтроллер STM32 и, например, SD-карточка. Идеальный вариант, если есть SRAM, подключенный по FSMC, но не обязательно. Внутренней памяти, на первое время, хватит.

Что нужно: компилить в Keil (или, возможно, другой среде) программу, заливать ее на SD-карточку и запускать на контроллере.

Как будем запускать?
Сразу на ум приходят два очевидных варианта:
1) Если программа небольшая, в несколько килобайт — заливаем ее в RAM и оттуда запускаем.
2) Если программа побольше — предварительно ее переписываем во внутренний флеш и запускаем из него.

Ну а если программа занимает больше, чем свободно во внутреннем флеше, единственный выход — внешний RAM по FSMC.

В этой статье остановлюсь на первом варианте.

Этап первый. SD и FAT.


Подробно описывать не буду. На эту тему много всего написано как в инете, так и в этом сообществе.
SD-карточку можно подключить по SPI, можно по SDIO (если контроллер F103). И то и то есть в примерах стандартной периферийной библиотеки от ST.
Файловую систему легко поднять с помощью библиотеки FatFs. О ней, вроде, тоже были статьи.
И вообще, можно и без файловой системы обойтись, главное, чтобы можно было откуда-нибудь считать предварительно откомпиленную программу.

Этап второй. Подготовка проекта с программой.




Читать дальше
  • +8
  • 02 октября 2011, 18:42
  • Ezhik
  • 1

Модельно-ориентированное программирование STM32F100RB с помощью Matlab/Simulink топик-ссылка

Для тех кто не следит за хабром. Очень интересная статья о модельно-ориентированном программировании STM32 в Matlab/Simulink с использованием библиотеки Rapidstm32.

STM32VLDISCOVERY - изучение периферии

Летний выезд на периферию или курс жесткого выживания на Atollic. Часть2.
Так, с Атолликом вроде разобрались. Теперь собственно надо бы занятся периферией. Так как выживание жесткое, то пришлось использовать то что есть, а именно саму плату Stm32vldiscovery и компьютер, больше ничего под руками у меня не было, топор и лопата не подошли (. Единственно что было на плате это пара кнопок и пара светодиодов, но как оказалось для начала этого вполне достаточно.

Читать дальше
  • +2
  • 30 сентября 2011, 01:02
  • basil

DAC в STM32

ЦАП (цифро-аналоговый преобразователь) нужен для преобразования числового кода в напряжение. Я опишу работу с ЦАП в stm32f100c4t6, там их целых 2 еще и 12-битных.

Они умеют:
  • Вывод напряжения от 0 до Vref+ (здесь это Vdda)
  • Генератор белого шума
  • Генератор треугольного сигнала
  • По DMA каналу на каждый ЦАП
  • Вывод данных по событию таймера или внешнего события
  • Возможность работы в 8-битном режиме
  • Возможность одновременной загрузки разных данных (через один регистр) в оба ЦАП


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

Atollic True Studio lite - быстрый старт на STM32

Летний выезд на периферию

или

курс жесткого выживания на Atollic.

Часть1.


Предистория


Поработав некоторое время с 8-ми битными микроконтроллерами и послушав о неслыханных преимуществах которые дает переход на 32-рязрядные невольно начинаешь прикидывать как бы самому это дело попробовать, вот и я стал потихоньку продумывать варианты. Хотелось как нибудь попроще чтобы не городить сложную демо плату и программатор — то ли дело программатор Громова три диода — четыре резистора, а тут то-ли пойдет, то ли нет, короче хотелось подешевле и с отдачей.


Читать дальше
  • -1
  • 22 сентября 2011, 14:53
  • basil

STM32 и USB. Часть 2. Немного о драйверах и софте.

Связанные статьи:
STM32 и USB. Часть 1. Проект для Keil.

В прошлой части я рассказал как примерно должен выглядеть проект-заготовка для Keil девайса с USB, дал ссылку на мой проект и рассказал как его настроить под практически любую плату с STM32.

В проекте был реализован интерфейс с двумя bulk-ендпойнтами (in и out), с моим «кастомным» протоколом, при помощи которого можно включать, выключать и заставлять светоиоды мигать с нужными временами горения/не горения.

Ну и выложил небольшую программу для всего этого:



Пользователь Vga в комментариях справедливо заметил, что разработка своего драйвера под Windows — задача далеко не тривиальная, и что проще реализовать стандартный класс, например HID, под который драйверы есть.

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



Читать дальше
  • +4
  • 21 сентября 2011, 14:03
  • Ezhik

Upgrade прошивки китайского Ulink2 до версии 1.42

Многие имеют такой отладчик, купленный в Китае. Мне он достался с версией прошивки 1.40, которая прекрасно работала в Keil версии 4.12. Но после обновления программы до версии 4.13 программа стала настойчиво предлагать обновить прошивку. Автоматическое обновление стабильно заканчивалось ошибкой. Поэтому придется обновлять вручную.
Ulink2


Читать дальше
  • 0
  • 20 сентября 2011, 18:05
  • PRC
  • 1

Модуль вычислителя MCU32-1.2

Сначала небольшое лирическое отступление.
Когда-то давным-давно, когда я был еще маленьким и учился в институте, у нас были занятия по вычислительной технике, которые проводились на малой ЭВМ «Наири-2».
Она была сделана в виде огромного стола, на котором была установлена электрическая пишущая машинка Консул-254. Рядом со столом стояла тумба, на которой крепились устройства ввода и вывода на перфоленту.
Быстродействие машины было примерно 2000 операций в секунду.
Память на ферритовых кольцах имела размер 1024 или 2048 слов (сейчас уже не помню точно).
Программирование велось на языке АП (Автоматического программирования).
Данные вводились с помощью оператора “ввести”, формулы записывались в операторе “вычислить”, безусловный переход – команда “идти”.
Программа выполнялась по команде “выполнить”.
Набираешь первые две буквы оператора – и пишущая машинка допечатывает его. Дальше печатаешь переменные, формулы. Когда набивали программу, давали команду “выполнить” – и пишущая машинка, подумав, печатала ответ.
Так я познакомился с тем, что потом стали называть языком программирования BASIC.
Потом были FORTRAN, PL/1, Pascal, программируемый калькулятор Б3-34, разнообразные Ассемблеры, Turbo-Pascal, Visual Basic, C. Но BASIC всегда присутствовал – в ДВК-2, Радио-86РК, Sinclair ZX Spectrum, в IBM PC – в виде GW-BASIC и Quick-BASIC. Как простой и интуитивно понятный язык, доступный для освоения любому человеку без специальной подготовки. Его использование позволяет писать программы на языке, максимально приближенном к естественному человеческому языку.



Читать дальше
  • +1
  • 17 сентября 2011, 18:14
  • mzw

J-LINK с Aliexpress за 23USD

Наконец то я получил первую посылку с Aliexpress.com — это J-LINK v8. Шло достаточно долго почти месяц и продавец, что-то напутал с трек номерами, но в общем дошло.



Читать дальше
  • 0
  • 13 сентября 2011, 12:50
  • GYUR22