STM Урок 28. HAL. DAC. Triangle



 

Урок 28

 

HAL. DAC. Triangle

 

На прошлом занятии мы познакомились с цифро-аналоговым преобразователем (ЦАП) и изучили, каким образом он реализован в микроконтроллерах STM32.

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

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

Поэтому перейдём к проекту.

Проект создаём из проекта DAC, т.к. там ничего лишнего не подключено. Назовем его DAC_ TRIANGLE. Запустим проект в Cube, включим там таймер 6

 

image02

 

 

В Clock Configuration ничего не трогаем, перейдем в настройки таймера

 

image00

 

В самом DAC настройки следующие

 

image01

 

Больше ничего не включаем, прерывания и DMA никакие не нужны.

Генерируем и запускаем проект. Соберем код, настроим программатор и начнем писать.

Уберем из проекта всё лишнее, функцию задержки в микросекундах закомментируем, чтобы не было лишних предупреждений. Из бесконечного цикла также всё убираем. Останется только вот что

 

/* USER CODE BEGIN 2 */

        HAL_DAC_Start(&hdac,DAC_CHANNEL_1);

/* USER CODE END 2 */

 

Перед стартом ЦАП также нужно будет запустить и таймер

 

        HAL_TIM_Base_Start(&htim6);        

        HAL_DAC_Start(&hdac,DAC_CHANNEL_1);

 

Соберем, прошьем и посмотрим результат в самодельном осциллографе

 

image03

 

 

Увеличим частоту, введя в значения таймера в Кубе 1 вместо 4, не забыв, конечно, перед этим закрыть проект.

Сгенерируем, соберем, прошьем, посмотрим

 

image04

 

Теперь единственное, что мы можем еще сделать для увеличения частоты, в Clock Configuration увеличим частоту на APB1, к которой подключен наш таймер вдвое.

Сгенерируем, соберем, прошьем, посмотрим

 

image05

 

Вот теперь генератор работает с максимальной частотой.

С разрешением 12 бит большей частоты мы не добьёмся, разве что только с меньшим разрешением. Попробуем выставить 255. Это, правда, не разрешение, а число, до которого будет считать таймер, разрешение по всей видимости будет 256 или 8 бит

 

image06

 

Сгенерируем проект, откроем его в Keil, соберём код и прошьём контроллер. У нас будет вот такая картина

 

image07

 

На следующем занятии мы попробуем сгенерировать уже аппаратный шум от ЦАП.

 

 

Предыдущий урок Программирование МК STM32 Следующий урок

 

Исходный код

 

 

Купить отладочную плату можно здесь STM32F4-DISCOVERY

 

 

STM HAL. DAC. Triangle

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*