Урок 28
HAL. DAC. Triangle
На прошлом занятии мы познакомились с цифро-аналоговым преобразователем (ЦАП) и изучили, каким образом он реализован в микроконтроллерах STM32.
Мы также добились того, что занесение какого-нибудь числа в регистр данных ЦАП теперь в нашем проекте влияет на напряжение на определённой ножке, также мы зациклили занесение величин и добились какого-то сигнала, регулярно изменяющегося во времени, и отследили данное изменение на самодельном осциллографе.
У нас было что-то похожее на треугольные импульсы, но тем не менее это были не совсем они. Поэтому сегодня мы попробуем отобразить на экране нашего осциллографа более настоящие треугольные импульсы. Для этого мы воспользуемся триггером, а также аппаратной генерацией треугольных импульсов в периферии ЦАП.
Поэтому перейдём к проекту.
Проект создаём из проекта DAC, т.к. там ничего лишнего не подключено. Назовем его DAC_ TRIANGLE. Запустим проект в Cube, включим там таймер 6
В Clock Configuration ничего не трогаем, перейдем в настройки таймера
В самом DAC настройки следующие
Больше ничего не включаем, прерывания и 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);
Соберем, прошьем и посмотрим результат в самодельном осциллографе
Увеличим частоту, введя в значения таймера в Кубе 1 вместо 4, не забыв, конечно, перед этим закрыть проект.
Сгенерируем, соберем, прошьем, посмотрим
Теперь единственное, что мы можем еще сделать для увеличения частоты, в Clock Configuration увеличим частоту на APB1, к которой подключен наш таймер вдвое.
Сгенерируем, соберем, прошьем, посмотрим
Вот теперь генератор работает с максимальной частотой.
С разрешением 12 бит большей частоты мы не добьёмся, разве что только с меньшим разрешением. Попробуем выставить 255. Это, правда, не разрешение, а число, до которого будет считать таймер, разрешение по всей видимости будет 256 или 8 бит
Сгенерируем проект, откроем его в Keil, соберём код и прошьём контроллер. У нас будет вот такая картина
На следующем занятии мы попробуем сгенерировать уже аппаратный шум от ЦАП.
Предыдущий урок Программирование МК STM32 Следующий урок
Купить отладочную плату можно здесь STM32F4-DISCOVERY
Добавить комментарий