Засыпкин С.В.

Лаборатория электроники и программирования

Электронный журнал с приложениями

№ 14

© Засыпкин С.В., 2011-2014

На главную страницу

 

Содержание

1. Программирование на языке С на примере микроконтроллера STM32F051R8T6. Работа с символьным LCD модулем.

Примеры программ даны для IDE  «CooCox®»  [4]

 

2. Программирование на языке С на примере микроконтроллера STM32F051R8T6. Работа модулем RTC. Установка и считывание времени.

                Приведен пример, в котором RTC включаются и инициализируются определенным значением времени. Потом в основном цикле программы значение времени периодически считывается из RTC и выводится на LCD индикатор. Схема подключения плат та же, что и в предыдущем занятии.

Примеры программ даны для IDE  «CooCox®»  [4]

 

3. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с картами памяти.

                Рассмотрим работу с картами памяти. Карты могут работать по интерфейсам SPI® или SDIO.

Фото макета:

Лог работы программы в терминальной программе:

Запись и чтение карты памяти:

Запись в файл.

Чтение из файла.

Считанные данные:

Привет, программер!

Примеры даны для компилятора «MikroC PRO for ARM» [4].

 

4. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с картами памяти. Чтение данных из звукового файла «.wav».

                Рассмотрим пример  программы, которая считывает данные с аудио файла для их последующей обработки. Аудиофайл состоит из заголовка и собственно  аудиоданных. Описание формата можно посмотреть, например, по ссылкам [11, 12].

Результат вывода в терминальной программе:

Чтение WAV файла:

Идентификатор файла: RIFF

Число байт в файле: 69174

Формат файла: WAVE

Начало описания формата: fmt

Оставшееся число байт заголовке: 18

аудиоформат: 1

количество каналов: 1

частота дискретизации: 11025

Количество байт, переданных за секунду воспроизведения: 22050

Количество байт для одного сэмпла, включая все каналы: 2

Разрядность оцифровки: 16

Начало области данных: data

Количество байт в области данных: 66436

Чтение аудиоданных завершено

 

5. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Воспроизведение звукового файла «.wav» с помощью ЦАП.

Макет устройства аналогичен используемому в прошлой статье. Таймер TIM4 запрограммирован так, чтобы обеспечить нужную частоту вывода данных на ЦАП в соответствии с заголовком аудио файла (используется параметр «sampleRate»).  Вывод данных происходит при каждом прерывании таймера (прерывания отключаются после полного вывода файла). Важно правильно преобразовать данные файла, которые могут быть 8 и 16 разрядными в данные для 12-ти разрядного ЦАП

Для прослушивания файла необходимо подключить выход ЦАП (PA4/DAC1_OUT) к УНЧ, либо в простейшем случае подключить миниатюрный наушник последовательно с резистором 1кОм (чтобы не перегружать выход ЦАП).

Пример дан для компилятора «MikroC PRO for ARM» [4].

 

6. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Вывод на ЦАП с помощью DMA.

Рассмотрим пример использования DAC совместно с DMA для генерации аналогового сигнала. Создадим в памяти массив для таблицы синусоидального сигнала и заполним его значениями с помощью функции sin(x). Будем с его помощью формировать аналоговый сигнал на выходе DAC1.

При настройке периферийных устройств необходимо учесть следующие рекомендации, описанные в документации на микроконтроллер [1,2,9]:

- В микроконтроллере есть два DMA контроллера на 8 потоков каждый с возможностью подключения к каждому потоку  одного из 8 каналов. Каждое периферийное устройство может быть подключено к определенному каналу и потоку определенного контроллера DMA (см.  Табл. 35 и 36 в [2]).

- DAC с DMA может запускаться только по внешнему триггеру.

Пример написан для компилятора «MikroC PRO for ARM» [4].

 

7. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Схема захвата таймера. Определение периода импульсов.

Схема захвата позволяет запомнить значение счетчика таймера в специальном регистре при поступлении импульса на вход схемы захвата. Если посчитать разницу между двумя такими значениями таймера, то получим период импульсов. Регистр хранения результата захвата один, поэтому его необходимо сохранить до прихода следующего импульса. Это удобно сделать через прерывание по событию захвата.

                В приведенном ниже примере сделаем на TIM4 генератор ШИМ сигнала, а TIM3 будем использовать для захвата и измерения. Входной сигнал будем подавать на вход TIM3_CH1. Прохождение сигнала на структурной схеме таймера показано зелеными стрелочками:

«

» [2].

Настройка схемы захвата состоит из следующих действий:

Пример программы дан для IDE  «CooCox®»  [4].

 

 

8. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Схема захвата таймера. Определение длительности импульсов.

                Программа по определению длительности аналогична определению периода. Просто после запоминания первого значения захвата необходимо изменить детектор фронта импульса на противоположный. После третьего шага  измерения снова вернуть детектор в исходное состояние. Т.е. переключать детектор по мере необходимости измерения того или иного фронта.

Пример программы дан для IDE  «CooCox®»  [4].

 

 

9. Говорящий вольтметр «167».

                Приборы с голосовым  воспроизведением результатов измерений могут помочь вам оптимизировать свою деятельность при проведении измерений. В качестве примера рассмотрим задачу создания «говорящего» вольтметра.

В основе схемы микроконтроллер STM32F051R8T6 (D1) [1,2], разъем интерфейса SWD для его программирования и отладки (X1), цепь сброса (К1,  R1, C1), элементы тактового генератора (BQ1, C2, C3), блокировочные конденсаторы С4 … С7. Фильтр для питания аналоговой части C8 …  C11, R3, L1.

 Интерфейс USB FT232RL [3] (D3, X3, R12, R13, LED1, LED2, C13-C14).  Служит для нескольких целей:

- зарядка аккумулятора

- обмен данными с компьютером

- обновление прошивки микроконтроллера

 

10. Сигнализация для компьютера «168».

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

В основе схемы микроконтроллер STM32F050F в корпусе TSSOP-20 [1,2].

Питание устройства осуществляется от 3В литиевой батареи.