Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

STM32F4. Урок 24 - Работа с ЦАП через DMA

Данная библиотека позволяет работать одним или двумя ЦАП микроконтроллера STM32F4 в режиме DMA. Вывод сигнала происходит циклически, поэтому все его значения должны быть записаны в массив.
В данный момент в библиотеке реализовано 4 типа сигналов (синусойда, пилообразный, треугольный и прямоугольный, а также установка логического нуля).
Дополнительная функция позволяет корректировать частоту сигнала. Частота устанавливается двумя параметрами: предделителем и периодом. Эти два значения вычисляются заранее
(частота зависит также от количества значений кривой выбранного сигнала).
Используемый таймер должен быть указан в H-файле через определение. В статье используется Timer7, но так же можно применить TIM2, TIM4, TIM5.

Пример использования:

dac

ЦАП жестко привязан к выводам процессора:

DAC1 к PA4
DAC2 к PA5

Требования:

   Подключаемые модули CooCox-IDE: GPIO, DAC, TIM, DMA.
   Поддерживаемые библиотеки: отсутствуют.

Перечисления:

typedef enum {
  SINGLE_DAC1_DMA = 0, // использовать только DAC1 на PA4
  SINGLE_DAC2_DMA,     // использовать только DAC2 на PA5
  DUAL_DAC_DMA         // использовать DAC1 (PA4) и DAC2 (PA5)
}DAC_DMA_MODE_t;
typedef enum {
  DAC_WAVE_OFF          = 0,    // длительный низкий уровень
  DAC_WAVE1_SINUS       = 1,    // форма сигнала 1 (синус)
  DAC_WAVE2_SAEGEZAHN   = 2,    // форма сигнала 2 (пилообразный)
  DAC_WAVE3_DREIECK     = 3,    // форма сигнала 3 (треугольный)
  DAC_WAVE4_RECHTECK    = 4     // форма сигнала 4 (прямоугольный)
}DAC_DMA_WAVE_NAME_t;

Функции:

void UB_DAC_DMA_Init(DAC_DMA_MODE_t mode);                     // инициализация настроек ЦАП
void UB_DAC_DMA_SetWaveform1(DAC_DMA_WAVE_NAME_t wave);        // установка формы сигнала для DAC1
void UB_DAC_DMA_SetWaveform2(DAC_DMA_WAVE_NAME_t wave);        // установка формы сигнала для DAC2
void UB_DAC_DMA_SetFrq1(uint16_t vorteiler, uint16_t periode); // регулировка частоты DAC1
void UB_DAC_DMA_SetFrq2(uint16_t vorteiler, uint16_t periode); // регулировка частоты DAC2

Пример использования:

//--------------------------------------------------------------
// File     : main.c
// Datum    : 24.03.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der DAC-DMA Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_dac_dma.h"

int main(void)
{
  SystemInit(); // Инициализация настроек кварца

  // инициализация ЦАП в режиме DMA (DAC-1 b DAC-2)
  UB_DAC_DMA_Init(DUAL_DAC_DMA);

  // выход синусоидального сигнала на DAC1 (PA4)
  UB_DAC_DMA_SetWaveform1(DAC_WAVE1_SINUS);


  // выход треугольного сигнала на DAC2 (PA5)
  UB_DAC_DMA_SetWaveform2(DAC_WAVE3_DREIECK);

  // Расчет частоты синусоидального сигнала в 1 Гц
  // Синусоидальный сигнал имеет 32 значения
  // f=84MHz/300/8750/32 = 1 Hz
  UB_DAC_DMA_SetFrq1(299,8749);



  // Расчет частоты треугольного сигнала в 10 Гц
  // Пилообразный сигнал имеет 32 значения
  // f=84MHz/30/8750/32 = 10 Hz
  UB_DAC_DMA_SetFrq2(29,8749);

  while(1)
  {

  }
}

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 2
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 2 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Pickit 2 - USB-программатор PIC-микроконтроллеров
Pickit 2 - USB-программатор PIC-микроконтроллеров
Макетная плата для пайки (10 шт) Arduino UNO
вверх