STM32 DAC Примеры использования

Прежде чем приступить к использованию ЦАПа в реальных устройствах, давайте немного поиграемся с ним на отладочной плате. Для начала напомним некоторые сведения об этом модуле.

Микроконтроллер содержит двухканальный 12-разрядный ЦАП (он же DAC). Канал 1 подключен к выводу PA4, канал 2 – к выводу PA5.

Регистры DOR1 и DOR2 – это 16-разрядные регистры данных для первого и второго каналов. Если в регистре данных содержится 0, то на соответствующем выходе напряжение равно нулю. Если в регистре данных 4095, то на выходе максимальное напряжение, равное опорному. Напряжение на выходе рассчитывается по следующей формуле:

Vout = Vref  x  ( DOR / 4095 ), где Vref – опорное напряжение, DOR – значение в регистре данных.

Прочитать остальную часть записи »

STM32 Воспроизведение звука. Структура WAV-файлов

Возникла потребность в воспроизведении с помощью микроконтроллера WAV-файлов, расположенных на карте памяти. Учитывая, что STM32 имеют “на борту” ЦАП и ДМА, эта задача вполне выполнима. Помимо практической стороны она также полезна в целях самообразования – изучим работу ЦАПа и некоторые другие возможности контроллера.

Для начала необходимо разобраться в том, что из себя представляет WAV-файл. Он содержит оцифрованный звук: с помощью АЦП через строго заданные интервалы времени производится измерение уровня сигнала, после чего результат измерения сохраняется. Затем с помощью ЦАПа оцифрованные данные можно превратить в звук.

Прежде чем записать оцифрованные данные в файл их необходимо “упаковать в обертку”, на которой указать некоторую информацию об этих данных: их размер, сколько каналов, частоту дискретизации. Структура этой обертки, т.е. формат WAV-файла, изображена ниже:

Прочитать остальную часть записи »

STM32 FatFs. Обзор библиотечных функций

Итак, карту памяти мы подключили, инициализация ее прошла успешно. В предыдущей статье были рассмотрены функции, которые нужны для работы с картой памяти. Теперь, прежде чем начать работу с FAT, рассмотрим некоторые функции, которые предоставляет библиотека FatFs:

Прочитать остальную часть записи »

STM32 Работа с библиотекой FatFs

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

Существуют свободно распространяемые библиотеки для работы с FAT. Одна из них – FatFs. Больше информации о ней на русском языке можно найти здесь http://microsin.net/programming/ARM/fatfs-file-system.html 

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

Библиотеку можно использовать для 8-ми битных контроллеров, а для 32-х разрядных и подавно. Имеется возможность работы с длинными именами файлов, в кодировке Unicode.

Есть смысл познакомиться с ней поближе.

Прочитать остальную часть записи »

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

Делая очередной терморегулятор столкнулся с проблемой: заказчику не очень нравилось кнопочное задание температуры. Ему хотелось, чтобы была какая-то “крутилочка”, которой можно устанавливать нужную температуру. Так как заказчик всегда прав, пришлось искать способ удовлетворить его хотение.

Первое что пришло в голову  — поставить переменный резистор и использовать АЦП. Но у этого способа есть подводные камни. Во-первых, сложно выставить точное значение, т.к. резистор это все-таки аналоговый прибор. Во-вторых, обычные резисторы имеют ограниченный угол поворота (меньше 360 градусов).  Если нужно регулировать температуру в широких пределах будет низкая точность. Начал было думать о многооборотных резисторах. И вдруг меня меня осенило – а почему бы не использовать энкодер. Ведь в музыкальных центрах для регулирования громкости они с успехом используются.

Поход в магазин “Радиолюбитель” увенчался успехом – потратив 15грв (немногим меньше двух долларов) я стал обладателем сего чуда враждебной техники. Размеры были подходящие. При вращении ручки энкодера чувствовались приятные щелчки. Всего таких щелчков было 12 на один оборот. 

Прочитать остальную часть записи »

STM32 USART. Использование StdPeriph_Lib

Для работы с USART в библиотеке имеются файлы stm32f10x_usart.c и stm32f10x_usart.h

Рассмотрим некоторые основные функции.

void USART_Init ( USART_TypeDef * USARTx, USART_InitTypeDef  USART_InitStruct )

Данная ф-я выполняет инициализацию выбранного модуля USART. Номер модуля задается первым аргументом (USARTx), который может принимать следующие значения: USART1, USART2, USART3, USART4 или USART5. Второй аргумент – указатель на инициализационную структуру. Она имеет следующий вид:

Прочитать остальную часть записи »

STM32 GPIO. Использование StdPeriph_Lib

Для работы с портами ввода/вывода посредством стандартных библиотечных ф-й понадобятся следующие файлы:

  • stm32f10x_gpio.h  и  stm32f10x_gpio.c – для работы с портами;
  • stm32f10x_rcc.c и stm32f10x_rcc.h – для управления тактированием портов.

Имеется ряд функций для работы с портами. Ниже приводится описание каждой.

Прочитать остальную часть записи »

Страница 2 из 1112345...10...Последняя »