сайт для палких паяльників

DMA

DMA (Direct Memory Access) контроллер прямого доступа к памяти. Его главная задача: передача данных на аппаратном уровне между памятью и периферией без участия процессора. Имеется в виду, что при этом наша программа может выполнять другие операции, не отвлекаясь на передачу данных. В предыдущей статье мы задействовали DMA для работы с АЦП. И это было круто. Теперь рассмотрим работу DMA подробнее и еще раз убедимся в мощной пользе DMA на примере еще одной типичной задачи: отправки данных через USART.

Мы уже использовали USART. Отправка данных через USART – достаточно длительный процесс, во время которого (в предыдущих примерах) процессор ожидает, пока будет отправлен весь буфер. Смотри функцию USARTSend. Пока данная функция не закончит отправку всего буфера, обработка в главном цикле программы далее не идет. Все ждут. У нас были достаточно простые примеры и нам было все равно. Но, рано или поздно, нам понадобится вся мощность контроллера и надо будет оптимизировать эту операцию. Один из методов – использование DMA. Мы подготовим данные на отправку, дадим задание DMA, он будет отправлять байт за байтом, а процессор займется чем-то более важным.

Читати далі

8. STM32. Программирование STM32F103. DMA
(на русском языке)

DMA (Direct Memory Access) контролер прямого доступу до пам’яті. Його головна задача: передача даних на апаратному рівні між пам’ятю і периферією без участі процесора. Мається на увазі, що при цьому наша програма може виконувати інші операції, не відволікаючись на передачу даних. В попередній статті ми задіяли DMA для роботи з АЦП. І це було круто. Тепер розглянемо роботу DMA докладніше і ще раз впевнимось у потужній користі DMA на прикладі ще однієї типової задачі: відправки даних через USART.

Ми вже використовували USART. Відправка даних через USART – досить тривалий процес, під час якого (у попередніх прикладах) процесор чекає, поки буде відправлений весь буфер. Дивись функцію USARTSend. Поки ця функція не закінчить відправку всього буфера, далі обробка у головному циклі програми не йде. Усі чекають. У нас були досить прості приклади і нам було байдуже. Але, рано чи пізно, нам знадобиться вся потужність контролера і треба буде оптимізувати цю операцію. Один з методів – використання DMA. Ми підготовимо дані на відправку, дамо завдання DMA, він буде собі відправляти байт за байтом, а процесор займеться чимось більш важливим.

Читати далі

ADC (Analog-to-Dogital Converter) – аналого-цифровой преобразователь (далее АЦП). АЦП преобразует аналоговый сигнал в цифровой код. Такой себе вольтметр, который мы сегодня заставим работать в нескольких режимах, в том числе с применением DMA. Микроконтроллеры могут иметь несколько АЦП. STM32F103C8 имеет 2 АЦП. АЦП может обрабатывать несколько каналов (до 18). Канал – это внешний сигнал, который может быть заведен на одну из ног микроконтроллера, или внутренний канал, например встроенный термометр. Аналоговый сигнал можно подавать на ноги, которые имеют маркировку ADC12_INn. Где n – номер канала. Например, ADC12_IN1.

Читати далі

7. STM32. Программирование STM32F103. ADC
(на русском языке)

ADC (Analog-to-Dogital Converter) – Аналого-цифровий перетворювач (далі АЦП). АЦП конвертує аналоговий сигнал у цифровий код. Такий собі вольтметр, який ми сьогодні заставимо працювати у декількох режимах, у тому числі із застосуванням DMA. Мікроконтролери можуть мати декілька АЦП. Конкретно STM32F103C8 має 2 АЦП. АЦП може обробляти декілька каналів (до 18). Канал – це зовнішній сигнал, який може бути заведений на одну з ніг мікроконтроллера, або внутрішній канал, наприклад вбудований термометр. Аналоговий сигнал можна подавати на ноги, які мають маркування ADC12_INn. Де n – номер каналу. Наприклад, ADC12_IN1.

Читати далі

Translate
Архіви

© 2011-2017 Андрій Корягін, Кременчук - Київ, Україна