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

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

Электронное периодическое издание

№ 27


Учредитель, гл. редактор и автор – Засыпкин С.В.

Цена свободная.

Дата выхода: 20.01.2017

Издание зарегистрировано в Федеральной службе по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор).

Свидетельство о регистрации СМИ – Эл № ФС77-43332 от 28 декабря 2010 г.

12+

 


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

1. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с АЦП. Регулярные каналы. Непрерывное преобразование, режим сканирования (программный запуск).

                Работа с АЦП рассматривалась в ранних выпусках журнала (15,25,26). В данной статье рассмотрим новые примеры работы с АЦП.

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

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

...

2. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с АЦП. Регулярные каналы. Запуск по триггеру.

                В данной статье рассмотрим примеры запуска с АЦП с помощью триггеров. В качестве триггеров могут использоваться сигналы с таймеров или внешние прерывания. Список источников детерминирован и не может быть изменен. В «Примере 11» рассмотрим запуск по триггеру «Timer 2 TRGO event». Для этого нужно настроить АЦП и таймер соответствующим образом (в программе выделено серым).

...

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

                В данной статье рассмотрим примеры запуска АЦП в режиме с инжектированными каналами. Инжектированные каналы интересны тем, что результат преобразования по каждому каналу записывается в отдельный регистр. По сравнению с регулярными каналами, где все результаты записываются в один и тот же регистр, при работе с инжектированными каналами упрощается сохранение результатов, но число каналов в последовательности только от 1 до 4. Также в отличие от регулярных каналов последовательность записи номеров инжектированных каналов отличается и не особо «логична». Поскольку работа в режиме измерения одного канала практически такая же как и в случае с регулярными каналами, рассмотрим сразу пример с последовательностью из двух каналов.

...

4. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с АЦП. Инжектированные каналы. Запуск по триггеру.

                Примеры программ сделаны для компилятора «CooCox®» [4].  Отладочная плата - «STM32F4DISCOVERY» [5]. Текст основной программы (дополнительные файлы исходного кода вы можете найти в приложении):

                Набор триггеров для инжектированных каналов практически другой по сравнению с регулярными. Я нашел только одно совпадение – сигнал «TIM2_TRGO». Поэтому в примерах будут другие триггеры.

                В Примере 15 вместо триггера «TIM2_TRGO» используется триггер «TIM2_СС1».

...

5. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с АЦП. Инжектированные каналы. Измерение внутренней температуры, напряжения батареи RTC и внутреннего опорного напряжения. Запуск по триггеру.

                АЦП может измерять кроме внешних, определенные внутренние напряжения – напряжение батареи RTC, напряжение встроенного источника опорного напряжения и встроенного датчика температуры микросхемы. Для работы с внутренними источниками напряжений кроме указания номеров каналов в последовательности, нужно их разрешить для измерения в регистре «CCR», который является общим для всех АЦП. Температура в градусах получается по формуле из документации [1,2].

...

6. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с АЦП. Автоматический запуск измерений инжектированных каналов после регулярных.

                При последовательном запуске оцифровки регулярной и инжектированной последовательности можно получить измерение до 20 каналов.

Сделаем сохранение результатов преобразования регулярных каналов в массив, т.к. непосредственный вывод их по терминалу в прерывании  приводит к перезаписи результата (установке флага «OVR»). Добавим также контроль флага перезаписи результата и уменьшим тактовую частоту АЦП. В примере 20 запуск будет программным. Для сохранения результатов и контроля перезаписи будут использоваться прерывания.

...

7. Программирование на языке С на примере микроконтроллера STM32F407VGT6. Работа с АЦП. Регулярные каналы. Использование DMA. Запуск по таймеру.

                В ранних статьях о АЦП при работе с регулярными каналами использовались массивы, заполняемые программно. С помощью DMA можно сделать этот процесс аппаратным.

В примере 22 настроим АЦП на работу с DMA (биты «DMA», «DDS» , «EOCS»), сам DMA (функция «DMA2_init»). Далее запустим оцифровку на «HalfWords_NUM» значений. После установки флага окончания DMA выведем полученные результаты.
...

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

Несколько АЦП могут быть запущены одновременно или последовательно один за другим. Первый вариант может использоваться, например, для оцифровки значений тока и напряжения, чтобы получить мощность в данный момент времени. Второй вариант – для повышения частоты оцифровки сигнала.

Примеры программ сделаны для компилятора «CooCox®» [4].  Отладочная плата - «STM32F4DISCOVERY» [5]. Текст основной программы (дополнительные файлы исходного кода вы можете найти в приложении).

Рассмотрим пример 23 для одновременного измерения двух регулярных каналов  с запуском по таймеру. В этом режиме не рекомендуется оцифровывать один и тот же канал одновременно разными АЦП, при оцифровке последовательностей интервал времени запускающего триггера должен быть больше в 2 (при 2-х АЦП) или 3 (при 3-х АЦП) раза наиболее длинной последовательности, чтобы не происходил перезапуск длинной последовательности до ее завершения, триггеры запуска каналов устанавливаем одинаковые [2].

...

9. Работа с модулями радиосвязи в беспроводных сетях. Часть 10. Соединение точка-точка.

Продолжение (Начало см. в № 4-7,26).

                В ряде случаев необходимо сделать радио удлинитель UART так, чтобы он сразу же работал в режиме передачи данных (без конфигурирования с помощью хоста). Такая возможность в модулях WizFi210/220 есть. Ниже приведен пример, в котором модули конфигурируются аналогично предыдущей статье (см. №26). Далее необходимо сохранить сделанные настройки как определенный профиль (например «профиль 1») и сделать его активным при запуске.


...

10. Программирование на языке С на примере микроконтроллера STM32F051R8T6. Запись на карту памяти непрерывного потока данных.

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

В данной статье рассмотрим тест такой записи на карты «SD». Будем использовать стандартные библиотечные функции, которые идут вместе с компилятором. Пример программы сделан для компилятора  «MikroC PRO for ARM» [4].

...

...