Тег: dma
8. STM32. Програмування STM32F103. DMA
DMA (Direct Memory Access) контролер прямого доступу до пам`яті. Його головна задача: передача даних на апаратному рівні між пам’ятю і периферією без участі процесора. Мається на увазі, що при цьому наша програма може виконувати інші операції, не відволікаючись на передачу даних. В попередній статті ми задіяли DMA для роботи з АЦП. І це було круто. Тепер розглянемо роботу DMA докладніше і ще раз впевнимось у потужній користі DMA на прикладі ще однієї типової задачі: відправки даних через USART.
Ми вже використовували USART. Відправка даних через USART - досить тривалий процес, під час якого (у попередніх прикладах) процесор чекає, поки буде відправлений весь буфер. Дивись функцію USARTSend. Поки ця функція не закінчить відправку всього буфера, далі обробка у головному циклі програми не йде. Усі чекають. У нас були досить прості приклади і нам було байдуже. Але, рано чи пізно, нам знадобиться вся потужність контролера і треба буде оптимізувати цю операцію. Один з методів - використання DMA. Ми підготовимо дані на відправку, дамо завдання DMA, він буде собі відправляти байт за байтом, а процесор займеться чимось більш важливим.
7. STM32. Програмування STM32F103. ADC
ADC (Analog-to-Dogital Converter) - Аналого-цифровий перетворювач (далі АЦП). АЦП конвертує аналоговий сигнал у цифровий код. Такий собі вольтметр, який ми сьогодні заставимо працювати у декількох режимах, у тому числі із застосуванням DMA. Мікроконтролери можуть мати декілька АЦП. Конкретно STM32F103C8 має 2 АЦП. АЦП може обробляти декілька каналів (до 18). Канал - це зовнішній сигнал, який може бути заведений на одну з ніг мікроконтроллера, або внутрішній канал, наприклад вбудований термометр. Аналоговий сигнал можна подавати на ноги, які мають маркування ADC12_INn. Де n - номер каналу. Наприклад, ADC12_IN1.
Tags
pmsm mongodb bme280 bmp280 exti nodemcu timer ssd1331 dma sms meteo max1674 foc stm32 i2c eeprom adc usart git java-script programmator ssd1306 watchdog nvic html flask raspberry-pi st-link mpu-9250 remap examples rs-232 hih-4000 css rtc bkp bluetooth bldc motor esp8266 mpu-6050 encoder capture soldering ngnix wifi usb flash rfid displays tim battery avr smd websocket 3d-printer barometer books lcd python servo eb-500 atmega web pwm piezo mpx4115a uart dht11 solar gps options dc-dc ethernet brushless docker sensors gpio led
Архіви