STM32 DAC. Пример использования и настройка в STM32CubeMx.

Работа с модулем DAC

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

В общем, открываем STM32CubeMx и создаем новый проект. Я буду использовать для тестирования платку с микроконтроллером STM32F103VET6. Соответственно, его я и выбрал при создании проекта. Теперь давайте разберемся с периферией – пусть будет задействован модуль DAC и выход DAC_OUT2 (PA5). Так и настраиваем:

Настройка модуля STM32 DAC.

Сразу же видим, что нужный нам вывод PA5 Cube автоматически настроил на работу в нужном режиме:

Конфигурация ЦАП.

В принципе, больше ничего пока менять не будем, генерируем проект и видим, что Cube создал для нас функцию:

/* DAC init function */
void MX_DAC_Init(void)
{
	DAC_ChannelConfTypeDef sConfig;

	/**DAC Initialization */
	hdac.Instance = DAC;
	HAL_DAC_Init(&hdac);

	/**DAC channel OUT2 config */
	sConfig.DAC_Trigger = DAC_TRIGGER_NONE;
	sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
	HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_2);
}

В STM32 DAC 12-ти битный, поэтому мы можем преобразовать в аналоговый сигнал любое цифровое значение от 0 до 4095. Для того, чтобы это осуществить есть специальная функция. Давайте к примеру сгенерируем на выходе уровень напряжения равный 3.3В / 2 = 1.65 В. Соответствующее цифровое значение, которое необходимо преобразовать, равно 2048:

uint16_t currentDACData = 2048;

// Включаем ЦАП, нужный канал
HAL_DAC_Start(&hdac, DAC_CHANNEL_2);
HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, currentDACData);

Как видите, все сводится к вызову специальной функции, да и только 🙂 Параметры тут все понятные – структура, которая соответствует нашему модулю DAC, номер канала, выравнивание данных (по левому краю, либо по правому), ну и последний аргумент – сами данные.

Такая вот получилась совсем небольшая статья… Оставайтесь с нами, подписывайтесь на обновления и заходите на сайт!

Поделиться!

12
Оставить комментарий

avatar
4 Цепочка комментария
8 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
5 Авторы комментариев
ВитяАлександрMaraudeurAvealDenis Авторы недавних комментариев
  Подписаться  
новее старее большинство голосов
Уведомление о
Denis
Гость
Denis

А не будет ли интереснее рассмотреть какую-нибудь Discovery с её усилителем и выводом звука на наушники, через уже разведенный разъем?

Maraudeur
Гость
Maraudeur

Знаете, ничего не работало, пока не нашёл в примере от STM тот факт, что нужно перед уставкой значения,нужно запустить сам DAC:
HAL_DAC_Start(&hdac, DAC_CHANNEL_2);
А так, спасибо за уроки!

Александр
Гость
Александр

а где вторая и третья статьи? хоть бы ссылки на них

Витя
Участник

Здравствуйте, а как можно прогнать ШИМ от таймера через ЦАП?

Присоединяйтесь!

Profile Profile Profile Profile Profile
Vkontakte
Twitter

Язык сайта

Июнь 2020
Пн Вт Ср Чт Пт Сб Вс
« Май    
1234567
891011121314
15161718192021
22232425262728
2930  

© 2013-2020 MicroTechnics.ru