Данная библиотека позволяет работать одним или двумя ЦАП микроконтроллера STM32F4 в режиме DMA. Вывод сигнала происходит циклически, поэтому все его значения должны быть записаны в массив.
В данный момент в библиотеке реализовано 4 типа сигналов (синусойда, пилообразный, треугольный и прямоугольный, а также установка логического нуля).
Дополнительная функция позволяет корректировать частоту сигнала. Частота устанавливается двумя параметрами: предделителем и периодом. Эти два значения вычисляются заранее
(частота зависит также от количества значений кривой выбранного сигнала).
Используемый таймер должен быть указан в H-файле через определение. В статье используется Timer7, но так же можно применить TIM2, TIM4, TIM5.
Пример использования:
ЦАП жестко привязан к выводам процессора:
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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- ub_stm32f4_dac_dma_v101_rus.rar (5 Кб)
- Demo_24_DAC_DMA_rus.rar (222 Кб)
Комментарии (0) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация