На главную страницу |
![]() |
Засыпкин С.В. Лаборатория электроники и
программирования Электронное периодическое издание № 27
Учредитель, гл. редактор и автор – Засыпкин С.В. Цена свободная. Дата выхода: 20.01.2017 Издание зарегистрировано в Федеральной
службе по надзору в сфере связи, информационных технологий и массовых
коммуникаций (Роскомнадзор). Свидетельство о регистрации СМИ – Эл № ФС77-43332 от 28
декабря 2010 г. 12+
|
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 можно сделать этот процесс
аппаратным. ... |
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]. ![]() ... |
На главную страницу |