Именно с идеи создания собственного пультика для управления светом в комнате и началось моё увлечение электроникой, микроконтроллерами и различными радиоустройствами.
Список статей:
После этого я начал изучать данную тему, знакомиться с основами электроники, примерами устройств, узнавать, как люди реализуют подобного рода устройства. Поискав информацию на тему того, с чего можно было бы начать изучение микроконтроллеров я узнал о том, что такое Arduino, с чем их едят, о том, как с ними работать. Легкое решение выглядело весьма привлекательно, ведь насколько я понял на тот момент, код собирается на раз-два. Но сделав вывод, что я не узнаю, что творится внутри микроконтроллера за рамками Arduino-скетчей я решил поискать более интересный вариант, который подразумевал глубокое изучение и погружение в дебри микроконтроллерной техники.
В компании, в которой я работаю, имеется отдел разработки, и я решил обратиться к инженерам чтобы они направили меня на путь истинный и показали с чего можно было бы начать решение своей задачи. Меня решительно отговорили от изучения Arduino и у меня в руках оказалась неведомая и непонятная зеленая платка на которой виднелись надписи, буковки, разные электронные компоненты.
Во-первых, решающую роль сыграло отношение цена-функционал, разницу видно даже между одним из самых дешевых и простых МК от ST и достаточно «жирной» ATMega:
Во-вторых, я предварительно для себя старался определить набор умений и навыков, которые бы я получил к моменту, когда я достигну требуемого результата. В случае если бы я решил использовать Arduino – мне было бы достаточно скопировать готовые библиотеки, накидать скетч и вуаля. Но понимание того, как работают цифровые шины, как работает радиопередатчик, как это всё конфигурируется и используется – при таком раскладе мне бы не пришло бы никогда. Для себя я выбрал самый сложный и тернистый путь, чтобы на пути достижения результата – я бы получил максимум опыта и знаний.
В-третьих, любой STM32 можно заменить другим STM32, но с лучшими характеристиками. Причем без изменения схемы включения.
В-четвертых, люди, занимающиеся профессиональной разработкой больше склонны к использованию 32-разрядных МК, и чаще всего это модели от NXP, Texas Instruments и ST Microelectronics. Да и мне можно было в любой момент подойти к своим инженерам из отдела разработки и разузнать о том, как решить ту или иную задачу и получить консультацию по интересующим меня вопросам.
После Keil спросит нас какой МК будет использоваться в проекте. Выбираем нужный нам МК и нажимаем ОК.
Для того, чтобы сконфигурировать параметры проекта и настроить наш программатор нужно правым кликом по Target 1 открыть соответствующее меню.
Для удобства можно настроить параметр, отвечающий за то, чтобы МК сбрасывался автоматически после перепрошивки. Для этого нужно поставить галочку в поле
В Keil имеется удобный навигатор по проекту, в котором мы можем видеть структуру проекта, необходимые для работы справочные материалы, в т. ч. те, которые мы уже скачали к себе на компьютер до этого (схема Discovery, datasheet, reference manual), список функций, использованных в проекте и шаблоны для быстрой вставки разных языковых конструкций языка программирования.
Что ж, теперь мы можем приступить к созданию нашей программы.
Первым делом, необходимо подключить к нашему исполняемому файлу заголовочный документ нашего семейства микроконтроллеров. Добавим в файл main.c строки следующего содержания, данная программа заставить попеременно моргать наши светодиоды:
/* Заголовочный файл для нашего семейства микроконтроллеров*/
#include "stm32f0xx.h"
/* Тело основной программы */
int main(void)
{
/* Включаем тактирование на порту GPIO */
RCC->AHBENR |= RCC_AHBENR_GPIOCEN;
/* Настраиваем режим работы портов PC8 и PC9 в Output*/
GPIOC ->MODER = 0x50000;
/* Настраиваем Output type в режим Push-Pull */
GPIOC->OTYPER = 0;
/* Настраиваем скорость работы порта в Low */
GPIOC->OSPEEDR = 0;
while(1)
{
/* Зажигаем светодиод PC8, гасим PC9 */
GPIOC->ODR = 0x100;
for (int i=0; i<500000; i++){} // Искусственная задержка
/* Зажигаем светодиод PC9, гасим PC8 */
GPIOC->ODR = 0x200;
for (int i=0; i<500000; i++){} // Искусственная задержка
}
}
Список статей:
Нахрена UHDTV телевизор, если никто не вещает UHDTV контент?Раньше и DVD было редкостью, а сейчас FullHD есть не у всех
А что может сделать Умная Микроволновка? Сама борщ сварит?Если кинешь нужное в горшочек… сварит 🙂 По крайней мере я уже 20 лет назад научился готовить в полном цикле на микроволновке… но иногда приходится останавливать процесс и вручную переворачивать… например при разморозке или при подогреве пюре (некоторые продукты греются неравномерно — верх горячий на уровне кипятка, а внутри лёд).
Или Умный Холодильник сам продукты привезет?Задача Холожильника сохранить в наивысшем качестве!!! а не бегать по магазинам… хотя и вести список нужных покупок для него не проблема.
Самая главная фишка, которая нужна реально Умному Дому — совершенная система распознавания образов (голосов/изображений и т.п.). Это то, что человеческий мозг уверенно может делать через 2-3 года после рождения. Чтобы компьютер со 100% уверенностью мог сказать, сколько людей в комнате, кто они и где они.А вот это мне сейчас нафиг надо… как тупой комп может определить когда надо, а когда не надо включать и какой именно свет? Вот конкретно сейчас я тихо захожу в комнату в темноте, чтобы не побеспокоив узнать состояние больного/ребёнка по дыханию… я конечно мог бы поставить видеокамеру и микрофоны, тепловизоры/датчики температуры тела и артериального давления в умную кровать…
Те кто знаком с восьмибитными контроллерами типа AVR и PIC, наверняка хорошо знают о такой нужной вещи как встроенная EEPROM память. Она позволяет сохранять в нее некоторые данные и потом считывать их после выключения/включения контроллера. Энергонезависимая память одним словом. Перейдя на контроллеры STM32 я с удивлением обнаружил, что такой памяти у них просто нет! Но как потом оказалось, существует аж целых две альтернативы такой памяти. Первая — использовать backup домен. Это не совсем энергонезависимая память, чтоб информация не разрушалась после выключения основного питания, к определенному выводу контроллера должна быть подключена батарейка (вроде тех, которые стоят в материнских платах). Об этом я подробнее расскажу в следующей статье. А сейчас мы рассмотрим второй способ энергонезависимого хранения пользовательских данных — flash память контроллера.
ЦАП (или DAC по-буржуйски) это АЦП с точностью до наоборот — он преобразовывает некоторые цифровые данные в их аналоговое представление (читай напряжение). Говоря еще проще — ЦАП позволит нам относительно плавно изменять напряжение на ноге контроллера. Области практического применения: генерация звука, и сигналов произвольной формы. Можно прикрутить к контроллеру SD карточку и сделать wav плеер. Производительности контроллера точно хватит, ибо я делал такое даже на AVR, а у них кстати нет ни какого встроенного ЦАПа и я прикручивалвнешний. Работать с ЦАПом очень легко, и в этой статейке я попробую рассказать все, что мне известно о ЦАПе в STM32. На картинке ниже — генерация синуса при помощи ЦАПа:
В предыдущей статье про базовые таймеры, мы в очередной раз мигали светодиодами, а в этот раз пойдем гораздо дальше и попробуем вкурить как заставить контроллер STM32 генерировать ШИМ. Для этого нам придётся использовать один из таймеров общего назначения, ведь именно у них есть всё что для этого нужно. Весь остальной функционал этих таймеров конечно впечатляет, но в моей практике он пока не пригодился. Хотя возможно, что в будущем мне пригодятся такие полезные фичи как функция подсчёта внешних импульсов и возможность аппаратно обрабатывать повороты энкодера. Но пока займемся ШИМом. Есть вот такая схема из контроллера, трех резисторов и RGB светодиода которым мы будем управлять. Управление заключается в том, чтоб плавно зажечь и погасить каждый цвет. Разумеется можно взять три разных светодиода если нет RGB.
Таймеры — это такая периферия контроллера STM32 позволяющая нам очень точно отсчитывать интервалы времени. Это пожалуй одна из самых важных и наиболее используемых функций, однако есть и другие. Следует начать с того, что в контроллерах STM32 существуют таймеры разной степени крутости. Самые простые это Basic timers. Они хороши тем, что очень просто настраиваются и управляются при помощи минимума регистров. Все что они умеют это отсчитывать временные интервалы и генерировать прерывания когда таймер дотикает до заданного значения. Следующая группа (general-purpose timers) гораздо круче первой, они умеют генерировать ШИМ, умеют считать испульсы поступающие на определённые ножки, можно подключать энкодер итд. И самый крутой таймер это advanced-control timer, думаю что его я использовать не буду еще очень долго так как мне пока без надобности управлять трехфазным электродвигателем. Начать знакомство с таймерами следует с чего попроще, я решил взяться за Basic таймеры. Задача которую я себе поставил: Заставить таймер генерить прерывания каждую секунду.
В этой статье я планирую поделиться с читателями своими скромными познаниями в области прерываний. Начать следует с того, что же представляют собой прерывания. Прерывание — это событие как правило связанное с каким-либо блоком периферии микроконтроллера STM32. Событий которые могут породить прерывание может быть множество. Например если речь о таком блоке периферии как UART, то там могут быть такие события: передача завершена, приём завершен, возникла ошибка чётности итд. Использование прерываний позволит нашей программе мгновенно регировать на подобные события. Сам термин прерывание говорит о том, что что-то должно прерваться и в нашем случае прервется выполнение основного кода вашей программы и управление будет передано некоторому другому куску кода который называется обработчиком прерывания. Таких обработчиков достаточно много, ибо периферийных устройств в STM32 предостаточно. Стоит отметить важный момент: В случае возникновения двух разных прерываний от одного блока периферии возникает одно и тоже прерывание. Например если произойдет прерывание по приёму байта через UART и прерывание по завершению передачи через тот же UART, то в обоих случаях будет вызван один и тот же обработчик. Для того чтоб определить какое из возможных прерываний произошло нужно смотреть на флаги состояния. И само собой очищать их перед выходом из прерывания. Когда обработчик прерывания отработает, управление будет передано той самой строчке кода, во время выполнения которой наступило прерывание. То есть основная программа продолжит работать дальше как ни в чем не бывало.
Насто время сделать что-то практическое с АЦП, для начала пусть это будет несложный, пример который считывает значение с какого либо канала, а потом исходя из этого значения будем менять частоту мигания тех самых многострадальных светодиодов стоящих на платке STM32VL Discovery. Для данного практического эксперимента нам потребуется сама платка дискавери и плюс переменный резистор номиналом примерно от 1К до 200К. Короче ставьте любой какой найдете, скорее всего он подойдет 🙂 Главное чтоб сопротивление было не слишком уж маленьким, а то он начнет греться, да и стабилизатор на плате может вспотеть от такой нагрузки. Соединить резистор с платой нужно так, как я показал на схеме в прерыдущей статье про регистры АЦП. Кстати, если у вас вообще нет этой платы, то просто посмотрите на ту же схему и подсоедините всю обвязку как там нарисовано. Ну а счастливым обладателям дискавери я нарисовал вот такую простую картинку:
Микроконтроллер штука цифровая и обменивается с внешним миром цифоровыми сигналами: нулями и единицами. Однако иногда перед микроконтроллером встает задача произвести измерение какой либо плавно изменяющейся величины. Это может быть всё то, что принимает несколько промежуточных состояний (а не только два) например это может быть темепература, напряжение, сила тока, освещенность и так далее, примеров много. Однако, нога контроллера настроенная на вход различает только два состояния — присутствие на ноге напряжения (лог. 1) и его отсутствие (лог. 0). Для измерения температуры это малопригодно, ведь мало кому интересен градусник имеющий только два состояния -50 и +200 градусов 🙂 Для решения проблем измерения аналоговых величин придумали АЦП – Аналого-цифровой преобразователь. Принцип работы с АЦП в двух словах: На вход АЦП поступает аналоговый сигнал и через некоторое время из АЦП можно прочитать результат преобразования, тоесть цифровое представление аналогово сигнала. Существуют микроконтроллеры STM32 со встроенным АЦП, то есть ничего подключать к контроллеру не надо, точнее почти ничего. Посмотрим на картинку:
Порты ввода/вывода пожалуй важнейшая часть микроконтроллера, без неё всё остальное просто бессмысленно. Сколько бы не было у контроллера памяти, периферии, какой бы высокой не была тактовая частота — это всё не имеет значения если он не может взаимодействовать с внешним миром. А взаимодействие это осуществляется через эти самые порты ввода/вывода. Далее для краткости будем называть их просто портами. Порт это некоторый именованный набор из 16-ти (как правило) ног контроллера, каждая из которых может быть индивидуально настроена и использована. Количество портов может различаться, например в контроллере установленном в отладочной плате STM32vl Discovery имеются три порта A,B,C. Существует два основных режима работы ног контроллера: вход и выход. Когда нога контроллера настроена на выход — к ней можно прицепить любой потребитель: светодиод, пищалку, да и вообще что угодно. Нужно понимать что ноги у контроллера не потянут большую нагрузку. Максимальный ток который может пропустить через себя одна нога составляет ~20 мА. Если планируется подключать что-то с более высоким энергопотреблением то нужно делать это через транзисторный ключ. В противном случае нога порта (а то и весь порт, чем черт не шутит) сгорит и перестанет выполнять свои функции. Чтобы обезопасить ногу порта можно прицепить к ней резистор номиналом примерно 220 ом. Таким образом при напряжении питания 3.3 вольта даже при коротком замыкании ноги на землю ток не превысит критического значения. Второй режим работы ноги контроллера — это вход. Благодаря этому режиму мы можем считывать например состояние кнопок, проверяя есть ли на ноге напряжение или нет. Это вкратце, а сейчас рассмотрим подробнее как работать с портами. Рассматривать будем конечно же на практике, благо что аппаратная часть (светодиоды и кнопка) для наших экспериментов уже реализована на плате STM32vl Discovery. Если же платы нет, то можно подключить к контроллеру светодиоды и кнопку следующим образом:
Так уж сложилось, что на моем компьютере всегда была установлена Windows, поэтому весь софт который мы будем использовать в ходе изучения микроконтроллеров STM32 предназначен для винды. Кстати у STM32 есть еще одно преимущество перед другими популярными контроллерами (типа pic или avr), для STM32 нет особой проблемы с софтом под линукс (об этом подробнее в другой раз). Весь софт который нам понадобится можно поделить на три группы:
Это означает что у суровых челябинских металлургов есть возможность писать программы хоть в блокноте, потом делать make файлы, компилировать всё это дело и прошивать. Но мы пойдем читерским путём, заюзаем софт который будет делать всю грязную работёнку за нас, ведь на самых первых порах, получение результата гораздо важнее глубокого понимания принципов работы. Выбор IDE дело ответственное, среди трёх кандидатов (IAR, Eclipse и CooCox) я выбрал последнего по ряду причин: он бесплатный, легкий в настройке, есть поддержка ST-LINK (того который в STM32 Discovery стоит), удобный редактор кода и отладчик, интерфейс похож на эклипс который многие видели и юзали. От слов переходим к делу — скачаем, установим и настроим софт.
В этом топике хочу представить вам цикл уроков по программированию LabWindowsCVI с использованием отладочной платы STM32F4Discovery…
В процессе работы мы напишем простое приложение :
С помощью этого приложения мы сможем:
Спасибо за внимание!
На отладочной плате установлен аудио-ЦАП со встроенным усилителем (его выход соединен с разъемом для наушников) и цифровой MEMS-микрофон, благодаря чему на базе STM32F4-Discovery можно легко изготовить устройство, работающее со звуком.
Распознавание речи с использованием Google Voice Search описано здесь: Статья.
Для того, чтобы распознать какую-либо сказанную фразу с использованием микроконтроллера, нужно выполнить ряд действий:
• Записать звук в память контроллера.
• Произвести кодирование звука.
• Установить соединение с сервером Google.
• Отправить на сервер POST-запрос и закодированные аудиоданные.
• Принять ответ от сервера.
Запись голоса
Поскольку на плате уже есть цифровой микрофон, записывать звук будем с его помощью. В данном случае это PDM-микрофон. Он имеет только два сигнальных вывода — тактирование и данные. При наличии сигнала тактирования, на выходе данных микрофона появляется сигнал, закодированный при помощи PDM модуляции (подробнее о ней рассказано в Википедии: Pulse-density modulation). На STM32F4-Discovery микрофон соединен с SPI/I2S — для приема данных с микрофона достаточно сконфигурировать I2S на прием данных, и по прерыванию от I2S считывать из регистра полученные данные. Эти данные сохраняются в память контроллера, и после того, как будет записано достаточное количество данных, производится их фильтрация, результатом которой являются несколько семплов аудиоданных.
Работа с микрофоном описана в документе AN3998 от ST — там объясняется принцип действия микрофона, особенности его подключения и описывается работа с функцией фильтрации.
На сайте ST среди различных примеров для платы есть пример работы со звуком, вот только он достаточно навороченный — в примере показано, как воспроизводить звук из памяти контролера и с подключенной к плате USB-флешки. Так же демонстрируется запись звука на флешку. Код для воспроизведения и записи звука я брал именно оттуда. Вот только в этом коде оказалось немало ошибок и недоделок — вероятно, пример писали в спешке.
Кодирование записанного звука
Описания работы с сервисом распознавания речи уже не раз приводились в интернете. Во всех случаях авторы используют аудиокодек FLAC, так как в Google используют нестандартное кодирование Speex данных.
Это видно из кода браузера Chromium: Код, отвечающий за запись звука.
В описании POST запроса указывается, что тип данных — «audio/x-speex-with-header-byte».
Вот только на STM32 не удастся закодировать данные в формат FLAC — нет таких библиотек. А вот код Speex портирован на STM32, поэтому для кодирования я использовал именно этот кодек. Из кода Chromium довольно легко понять, в чем заключается модификация кодека — перед началом каждого фрейма закодированных аудиоданных вставляется дополнительный байт, равный длине фрейма в байтах.
Запись и кодирование звука идут одновременно — с использованием двойной буферизации: в то время, пока в один из буферов записываются 160 семплов аудиоданных, данные из другого буфера кодируются в формат Speex. Закодированные данные сохраняются в памяти контроллера. Запись идет в течении 2 секунд, в результате чего формируются 2100 байт закодированных аудиоданных. Частота дискретизации — 8 кГц.
Связь с сервером Google
Для соединения с интернетом используется отладочная плата с WIFI модулем — RN-XV. На ней установлен WIFI-модуль RN-171 (снизу платы), антенна, 3 сетодиода и штыревые разъемы. Связь с модулем идет через UART, так что для работы с ним достаточно 4 проводов. Стоимость платы в sparkfun, откуда я его заказывал — 35$. Сам WIFI — модуль стоит 30$. Подробнее о модуле можно прочитать на сайте sparkfun: RN-XV WiFly Module.
Для того того, чтобы передать данные на сервер, нужно подключится к нему по протоколу TCP, а затем передать запрос такого вида:
POST http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=ru-RU HTTP/1.1@#Content-type: audio/x-speex-with-header-byte; rate=8000@#Connection: close@#Content-length: 2100@#@#
Символы @# программа заменяет на CRLF. После передачи запроса нужно отправить на сервер 2100 байт закодированных аудиоданных. Получив все данные, сервер производит распознавание речи, и передает распознанную строку вместе с дополнительной информацией, после чего соединение с сервером закрывается.
После того, как ответ сервера принят, программа выделяет из него распознанную строку и выводит ее через другой UART микроконтроллера. Данные из этого UART передаются на компьютер в терминал, в окне которого и появляется распознанная фраза. После этого контролер готов в запуску записи новой фразы.
Получившаяся конструкция выглядит так:
А вот как она работает:
Обновление:
Уже после того, как я выложил статью, я смог реализовать запуск записи при появлении громкого звука (в том числе и речи). Для этого программа постоянно ведет запись и кодирование звука. Закодированные данные помещаются в массив. После достижения его конца, данные начинают помещаться в его начало. В то же время программа постоянно проверяет, не появился ли громкий звук. При его появлении программа сохраняет значение указателя записи и ведет запись в течение 2 секунд. После остановки записи, программа копирует данные в другой буфер. Так как известно, в какой момент появился звук, можно брать данные незадолго до этого. Таким образом, первые звуки слова не теряются.
Видео работы VAD:
Программа написана в IAR.
Программа позволяет воспроизводить записанную фразу, перед тем как отправить ее на сервер. Для этого достаточно раскомментировать некоторые строки в функции main.
В приложенном архиве несколько проектов:
my_audio_test — записывает и сразу же воспроизводит звук с микрофона.
speex_out — воспроизводит звук в формате Speex, хранящийся в Flash памяти контроллера.
speex_rec — записывает и кодирует звук при помощи Speex в течение 2 секунд, после чего воспроизводит запись.
speech_wifi — сам проект распознавания речи, в этом проекте используется WIFI.
speech_wifi_vad — проект распознавания речи с VAD, в этом проекте используется WIFI.
www.dropbox.com/s/xke5rq8lzi980x5/NEW_VOICE.zip?dl=0
STM32F4DISCOVERY — это отладочная плата, которая была создана для того, чтобы можно было удобнее изучать микроконтроллеры серии STM32F4. Она включает в себя все необходимое для того, чтобы быстрее приступить к освоению 32-битных ARM-микроконтроллеров STM32F407VGT6 семейства Cortex-M4.
На плате установлены:
Для подачи напряжения питания на плату STM32F4 Discovery используется разъём mini-USB от программатора/отладчика ST-Link. При наличии напряжения питания горит светодиод LD2. Светодиод LD1 показывает работу программатора ST-Link.
Если плату с заводской прошивкой подключить через разъём micro-USB для USB OTG к компьютеру, то она будет вести себя как джойстик класса USB HID.
Официальная страница, посвященная отладочной плате STM32F4DISCOVERY, размещается на сайте производителя STMicroelectronics по адресу www.st.com/stm32f4-discovery
Расширение функциональных возможностей происходит за счет дополнительных модулей, описание которых есть на www.st.com/stm32f4dis-expansion. К STM32F4 Discovery можно подключить Ethernet, ЖК-дисплей и другие фишечки.
.
Для начального знакомства с контроллерами STM32 идеальным вариантом будет готовая отладочная плата. Так получилось, что я совершенно бесплатно заполучил платку STM32VL Discovery. Было время когда их раздавали бесплатно всем, кто изъявил желание её получить. Если покупать, то стоит она сравнительно не дорого, например в наших краях ~20$. Как правило любая отладочная плата (из всех что я видел) представляет собой непосредственно сам микроконтроллер, программатор подключенный к этому контроллеру и некоторый набор внешней периферии которая так же определённым образом подключена к контроллеру. И все это на одной платке. Под периферией подразумеваются различные кнопки, индикаторы, светодиоды и прочие ништяки 🙂 Надо отметить что в плане периферии эта платка очень бедна: Есть всего лишь 2 светодиода и одна кнопка (+ одна кнопка сброса но она не в счет). Для первого знакомства достаточно, но если идти дальше а не только мигать диодом — то маловато будет и надо паять что-то своё или дорабатывать эту платку. Выглядит сама платка так:
Присмотревшись, не сложно будет понять откуда взялся логотип для этого сайта 🙂 Начнем по порядку. Во-первых плата поделена на две части: Отладчик ST-LINK и непосредственно сам контроллер с обвязкой. Отладчик мне очень понравился: умет работать со многими (если вообще не со всеми) контроллерами STM32. Наружу выведен интерфейс SWD, этот интерфейс физически реализован в виде двух проводов, что весьма удобно. Это позволяет нам прошивать другие контроллеры STM32 при помощи этой платы. Перед прошивкой какого-либо внешнего контроллера необходимо снять две перемычки через которые отладчик соединен с программируемым контроллером на установленном на плате. Для удобства рядом с двумя контактами SWD есть еще земля и плюс питания. Кроме SWD есть еще JTAG, проводов там побольше и разъёма на плате нет. При желании можно подпаяться к контроллеру (который в отладчике), но смысла я в этом пока не вижу, так как через SWD отладка и программирование работают отлично. Кроме выполнения своих прямых функций, отладчик также обеспечивает питанием 3.3 вольта всю плату. Подключается к компьютеру через обычный mini-usb кабель который к сожалению в комплект не входил. У отладчика так же есть два светодиода, один показывает что на плату подается питание, а второй мигает во время любой активности. Переходим к оставшейся части платы: Самое главное в ней — это как ни странно контроллер 🙂 На плате установлен STM32F100RBT6B. Чип вполне нормальный, нет разве что USB что немного огорчает. Основные характеристики такие: Тактовая частота 24 МГц, 128 кб флеш памяти, 8 кб ОЗУ, наличие ADC, DAC, I2C, SPI, USART, RTC и некоторых других вещей со страшными названиями. Для первого знакомства — самое оно! Естественно голый чип, (пусть даже подключенный к отладчику и питанию) ни какого интереса не представляет по понятным причинам: Отработала зашитая вами программа, а результата не видно. Для взаимодействия с внешним миром у этого контроллера есть ноги, причем 51 нога (из 64-х) может менять свое состояние по желанию программиста. Вот как раз к двум таким ногам подключены два светодиода — зелёный и синий, первое время тренироваться будем на них. Из «устройств вывода» это всё. Для того чтоб как-то воздействовать на выполнение программы есть одна кнопка (синяя). В программе можно определять её состояние (нажата или отпущена), а вот вторая кнопка служит для сброса контроллера. По сути дела, кнопка и пара светодиодов это все с чем может работать пользователь этой платы. После некоторого числа экспериментов возникнет желание подключить какой-нибудь дисплей, карту памяти, дополнительные кнопки или еще чего, но на первое время нам хватит этого. В плане подключения внешних устройств — плата довольно удобна, так как все выводы контроллера посажены на три гребёнки штырьков по бокам платы:
На счёт подключения дополнительное периферии — будут статьи. Еще очень важно обратить внимание на перемычку управляющую питанием. Если её снять то контроллер будет обесточен и соответственно работать ничего не будет. Удобно вместо перемычки подключать амперметр и смотреть на ток потребления, если конечно вы любознательный человек вроде меня 🙂 На плате так же имеются два кварца : на 32768 Гц и на 8 МГц. От последнего тактируется контроллер, причем кварц этот легко вынимается и заменяется на другой без всякой пайки, это если вдруг пользователю захочется скорости, но для большинства наших первых экспериментов хватит и 8 МГц. Второй кварц — часовой. Его наличие не обязательно, но он будет использоваться нами в экспериментах с часами реального времени. Но до этого еще далеко, а сейчас я предлагаю вам попробовать сделать что-то практическое с этой платкой.
P.S. Возможно пригодится схема STM32vl Discovery
Комплект STM32F4DISCOVERY использует возможности высокопроизводительных микроконтроллеров STM32F407, чтобы пользователи могли легко разрабатывать приложения с аудио.
Он включает встроенный инструмент отладки ST-LINK, один цифровой акселерометр ST-MEMS, цифровой микрофон, один аудио ЦАП со встроенным драйвером динамика класса D, светодиоды, кнопки и разъем USB OTG micro-AB.
Чтобы расширить функциональные возможности комплекта STM32F4DISCOVERY за счет подключения к сети Ethernet, ЖК-дисплея и многого другого, посетите веб-страницу www.st.com/stm32f4dis-expansion.
С последним усовершенствованием платы новый код заказа STM32F407G-DISC1 заменил старый эталонный STM32F4DISCOVERY.
Основные характеристики
В этом руководстве показано, как создать простой проект для платы STM32F4-Discovery с помощью Visual Studio.
Для работы с этим руководством вам потребуется следующее оборудование и программное обеспечение:
Мы создадим простой проект «мигающего светодиода», построим его и пройдемся по нему в отладчике.
Инструменты оценки Свернуть меню