Transmisja danych z układu I/O do pamięci
Address Bus (magistrala adresowa)
MEMW#
HRQ DREQx
Memory MCU DMA
I/O
(MEMory Write
(pamięć)
(układ)
zapis pamięci)
HOLDA DACKx
IOR#
Podstawy techniki
MEMR# IOR#
(Input/Output Read
mikroprocesorowej MEMW# IOW#
odczyt układu I/O)
ETEW006
Data Bus (magistrala danych)
CPU wysyła sygnał do układu I/O o gotowości odczytu danych
DMA
urządzenie I/O umieszcza dane na magistrali danych i sygnalizuje ten fakt
CPU zapisuje przesyłane dane w wewnętrznym rejestrze i sygnalizuje
układowi I/O zakończenie odczytu
CPU wysyła adres (magistrala adresowa) i dane (magistrala danych)
do pamięci
Andrzej Stępień
CPU sygnalizuje pamięci gotowość zapisu danych
Katedra Metrologii Elektronicznej i Fotonicznej
pamięć zapisuje dane w swojej wewnętrznej strukturze
Programowa transmisja danych Programowa transmisja danych
pamięć ! układ I/O [1#2] pamięć ! układ I/O [2#2]
! !
! !
! !
Address Bus (magistrala adresowa) Address Bus (magistrala adresowa)
MEMW# MEMW#
HRQ DREQx HRQ DREQx
MCU DMA MCU DMA
Memory I/O Memory I/O
(MEMory Write (MEMory Write
(pamięć) (układ) (pamięć) (układ)
zapis do pamięci) zapis do pamięci)
HOLDA DACKx HOLDA DACKx
IOR# IOR#
MEMR# IOR# MEMR# IOR#
(Input/Output Read (Input/Output Read
MEMW# IOW# MEMW# IOW#
odczyt układu I/O) odczyt układu I/O)
Data Bus (magistrala danych) Data Bus (magistrala danych)
CPU % magistrala adresowa: adres komórki pamięci
Mem Add
% MEMW#: sygnał gotowości zapisu do pamięci,
CPU % magistrala adresowa: adres układu I/O
transmisja danych do pamięci
% sygnał gotowości odczytu IOR#, transmisji danych z układu I/O
Data
CPU % magistrala danych: zawartość rejestru Rx
układ I/O % magistrala danych: dane gotowe do transmisji
Mem CS#
% koniec sygnału gotowości MEMW#
rejestr Rn jako
wpis
CPU % wpis danych do rejestru Rn
wpis danych do pamięci: MEMW#
element pomocniczy
danych
% koniec sygnału gotowości IOR# wpis
% zboczem sygnału MEMW#
danych
clock
% zboczem sygnału taktującego
ELEC 464 : MICROCOMPUTER SYSTEM DESIGN.
1996/97 WINTER SESSION TERM 1
Transmisja danych z układu I/O do pamięci
Transmisja danych w PC
Address Bus (magistrala adresowa)
MEMW#
HRQ DREQx
Memory MCU DMA
I/O
(MEMory Write
(pamięć)
(układ)
Programowy transfer
zapis pamięci)
HOLDA DACKx
512 bajtów z urządzenia o adresie 0x380 do bufora w pamięci RAM:
IOR#
MEMR# IOR#
(Input/Output Read
MEMW# IOW#
odczyt układu I/O)
przeslij_dane:
mov bx, bufor ; adres pamięci RAM
Data Bus (magistrala danych)
mov cx, 512 ; liczba transmitowanych bajtów
CPU % magistrala adresowa: adres układu I/O
mov dx, 380h ; adres portu
% IOR#: sygnał gotowości odczytu danych z układu I/O
loop:
układ I/O % magistrala danych: dane gotowe do transmisji
in al, dx ; odczyt zawartości portu
CPU % wpis danych do rejestru Rx
mov [bx], al ; wpis do pamięci RAM
% koniec sygnału gotowości IOR# powtórzenie
inc bx ; przygotowanie do kolejnego wpisu
cyklu
CPU % magistrala adresowa: adres komórki pamięci
przesłania dec cx ; dekrementacja liczby przesłanych bajtów
% MEMW#: sygnał gotowości zapisu do pamięci,
transmisja danych do pamięci jnz loop ; zamknięcie pętli przesłań
CPU % magistrala danych: zawartość rejestru Rx
% koniec sygnału gotowości MEMW#
1
www.keil.com Vision v.4.70 www.keil.com Vision v.4.70
Cortex-M0 Cortex-M0
Transmisja bloku danych [1#2] Transmisja bloku danych [2#2]
for(i=0; i<11; i++) tab2[i] = tab1[i]; // 149 cykli maszynowych
Programowy transfer 10 słów 149 cykli maszynowych:
0x0000030C 2400 MOVS r4, #0x00 ; i = 0
0x0000030E E006 B 0x0000031E
0x00000310 00A0 LSLS r0, r4, #2 ; r0 ! r4 << 2 (ofset)
0x00000312 A90A ADD r1, sp, #0x28 ; r1 ! adres tab1[0] (baza)
unsigned int i;
0x00000314 5808 LDR r0, [r1, r0] ; r0 ! (r1 + r0)
0x00000316 00A1 LSLS r1, r4, #2 ; r0 ! r4 << 2 (ofset)
unsigned int tab1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
0x00000318 466A MOV r2, sp ; r2 ! adres tab2[0] (baza)
unsigned int tab2[10];
0x0000031A 5050 STR r0, [r2, r1] ; (r0) ! (r2 + r1)
for(i=0; i<11; i++) tab2[i] = tab1[i]; 0x0000031C 1C64 ADDS r4, r4, #1 ; i++
0x0000031E 2C0B CMP r4, #0x0B ; 0x0B = 11
0x00000320 D3F6 BCC 0x00000310 ; jeśli mniejsze to skok
Cortex-M0 (LPC1114) / Cortex-M0+ (STM32L053)
http://www.embedds.com/
using-direct-memory-access-dma-in-stm23-projects
STM32 Microcontrollers
DMA (Direct Memory Access)
CPU Transfer or DMA Transfer
tryb bezpośredniego dostępu do pamięci z pominięciem jednostki
544s jeśli kopiowanie z udziałem CPU centralnej (CPU) w trakcie wymiany danych
Kopiowanie 800 słów 32-bitowych
przeważnie jako transfer (wymiana) danych między układami we/wy
(STM32VLDiscovery ST32F100RB MCU,
(napędy FDD, pamięci masowe HDD, karty dzwiękowe, bufory
Cortex-M3,
kontrolerów portów szeregowych, szybkie przetworniki A/C i C/A itp.),
pojedynczy, 7-kanałowy kontroler DMA)
a pamięcią komputera / systemu procesorowego
214s jeśli kopiowanie z udziałem DMA
redukcja energii niezbędnej przy przesyle danych
Kontroler DMA
Kontroler DMA
Sygnały
Kontroler DMA sprzętowa realizacja funkcji transmisji danych do pamięci :
Address Bus (magistrala adresowa)
uaktywnienie urządzenia wejściowego
HRQ DREQx
pobranie danych z urządzenia wejściowego Memory MCU DMA I/O
(pamięć) (kontroler) (układ)
wpis danych do pamięci RAM
HOLDA DACKx
inkrementacja adresu pamięci RAM
dekrementacja liczby przesyłanych bajtów MEMR# IOR#
MEMW# IOW#
określenie końca transmisji danych
Data Bus (magistrala danych)
W komputerach PC kontroler DMA przesyła:
dane z urządzenia wejściowego do pamięci RAM w czasie jednego cyklu
DREQx (Dma REQuest) DACKx# (DMA ACKnowledge)
maszynowego (brak mapowania urządzeń we/wy w przestrzeni pamięci)
HRQ (Hold ReQuest) HOLDA (HOLD Acknowledge)
dane z pamięci RAM o adresie addr1 do pamięci RAM o adresie addr2 w
MEMR# (MEMory Read) MEMW# (MEMory Write)
czasie dwóch cykli maszynowych (mapowanie urządzeń we/wy w
IOR# (Input/Output Read) IOW# (Input/Output Write)
przestrzeni pamięci)
2
Kontroler DMA - rejestry
Inicjalizacja trybu DMA [1#2]
Address Bus (magistrala adresowa)
Address Bus (magistrala adresowa)
HRQ DREQx
Memory MCU DMA I/O HRQ DREQx
Memory MCU DMA I/O
(pamięć) (kontroler) (układ)
(pamięć) (kontroler) (układ)
HOLDA DACKx
HOLDA DACKx
MEMR# IOR#
MEMR# IOR#
MEMW# IOW#
MEMW# IOW#
Data Bus (magistrala danych)
Data Bus (magistrala danych)
rejestr zródłowy (source address), inkrementowany lub dekrementowany
1. DREQx (DMA Request) żądanie dostępu do trybu DMA
rejestr docelowy (destination address), inkrementowany lub 2. HRQ (Hold Request) zawieszenie procesora (wstrzymanie dostępu
dekrementowany procesora do magistral), zawieszenie sterowania pamięci i układów I/O
3. HOLDA (HOLD Acknowledge) akceptacja CPU kontrolera DMA o początku
rejestr powtórzeń (transfer count)
lub końcu zawieszenia procesora
rejestr inicjalizujący tryb DMA (trigger source(s)
4. DACKx# (DMA Acknowledge) potwierdzenie żądania dostępu DMA
Jest możliwe jednoczesne
użycie tylko 1 kanału DMA
Inicjalizacja trybu DMA [2#2]
jeśli mikrokontroler ma
Typy transmisji DMA
1 magistralę adresów i danych
Address Bus (magistrala adresowa)
HRQ DREQx
Memory MCU DMA I/O
(pamięć) (kontroler) (układ)
pojedyncza (Single Transfer)
HOLDA DACKx
blokowa (Block Transfer)
MEMR# IOR# blokowa z przeplotem dostępu CPU (Burst-Block Transfer)
MEMW# IOW#
pojedyncza z powtórzeniem (Repeated Single Transfer)
Data Bus (magistrala danych) blokowa z powtórzeniem (Repeated Block Transfer)
rozrzuć-zbierz (Scatter-Gather Transfers)
DREQ (DMA Request): żądanie transferu danych
HRQ/HOLDRQ (Hold Request): żądanie zwolnienia magistral
HOLDA (HOLD Acknowledge): potwierdzenie zwolnienia magistral
DACK (DMA Acknowledge): potwierdzenie otwarcia kanału DMA
wielokrotna, z powtórzeniami (Burst Mode)
sterowanie przesłaniem bloku danych: pamięć ! układ I/O
!
!
!
z wykradaniem cykli (Cycle stealing mode)
nieaktywny HOLD i ACK:zamknięcie kanału DMA po zakończonej transmisji
bloku danych lub nieaktywnym DREQ
Ganier CJ: What is Direct Memory Access (DMA) ?
http://cnx.org
Tryby DMA
Tryby DMA
Pojedynczy, blokowy, z przeplotem
Pojedynczy z powtórzeniem
Tryb pojedynczy (Single Transfer):
- na każde żądanie wykonywany jest pojedynczy transfer danych Tryb pojedynczy (Single Transfer):
- kontroler DMA zwiększa lub zmniejsza adres o liczbę transferowanych - na każde żądanie wykonywany jest pojedynczy transfer danych
bajtów (1 lub 2 lub 4 bajty)
- kontroler DMA zwiększa lub zmniejsza adres o liczbę transferowanych
- transfer danych (DMA) odcina CPU od magistral bajtów (1 lub 2 lub 4 bajty)
- transfer danych (DMA) odcina CPU od magistral
Tryb blokowy (Block Transfer):
- na żądanie transferowany jest blok danych
Tryb pojedynczy z powtórzeniem (Repeated Single Transfer)
- DMA kończy pracę po transmisji całego bloku danych
analogicznie jak tryb pojedynczy ale nie jest blokowany do mamentu
- kontroler DMA odcina CPU od magistral na czas transferu bloku danych
zakończenia transmisji wszystkich danych (bloku danych)
Tryb blokowy z przeplotem (Burst-Block Transfer):
- podobieństwo do trybu blokowego ale z przeplotem dostępu DMA i CPU Tryb blokowy (Block Transfer):
do magistral
- na żądanie transferowany jest blok danych
- zmniejsza wydajność o 20% ale CPU nie jest odcinane od magistral na
- DMA kończy pracę po transmisji całego bloku danych
czas transmisji DMA
- transfer odcina CPU od magistral na czas transferu bloku danych
- tryb kończony po transmisji całego bloku danych
3
Galda M.: Audio Output Options for Kinetis.
Using DMA and PWM, DAC, or I2S Audio Bus. Freescale Semi. AN4369, 02/2012
Tryby DMA Tryby DMA
Transfer Scatter-Gather Buforowanie Ping-Pong
dwa niezależne bufory napełniane naprzemiennie danymi, np. próbkami audio
dotyczy procesu zbierania danych (gathering data from) i rozproszenia-
rozrzucania danych (scattering data into)
po
(http://en.wikipedia.org/wiki/Vectored_I/O - "Scatter-Gather" (dosł.: rozrzuć-zbierz) opróżnieniu
jednego
bufora,
technika transferu nieciągłych bloków danych jako seria małych
odwrócenie
spójnych, ciągłych bloków danych
ról
(http://www.latticesemi.com/products/intellectualproperty/ipcores/scatter-
gatherdirectmemor/index.cfm)
realizacja
przez
procedura DMA, Scatter-Gather (dosł.: rozrzuć-zbierz ), pozwalająca
przełączanie
przenosić dane do wielu obszarów pamięci w pojedynczym transferze;
wskazników
pod względem skutków jest to równoważne połączeniu łańcuchowemu
(adresów)
kilku transferów, jednak jest wyraznie szybsze
buforów
(http://pl.wikipedia.org/wiki/DMA)
Figure 1. Audio input-output data processing stream
SH7211 Group. Data Transfer between Anu M. D.: An Introduction to DMA
On-chip RAM Areas with DMAC (Cycle-Stealing Mode). Renesas, March 2008 Cypress Semiconductor Corp. March 2012
Tryby DMA Tryby DMA
Transfer z wykradaniem cykli wg Cypress Semiconductor
CPU nie ma dostępu do magistral w trakcie DMA, np. wykonuje program
kontroler DMA (DMA controller - DMAC) nadzoruje transfer danych bez
z wewnętrznej pamięci podręcznej (cache); kontroler DMA zawiesza
udziału CPU; CPU programuje kontroler DMA
dostęp CPU do magistral
typy transferów przy dużej liczbie danych:
kontroler DMA przejmuje kontrolę nad magistralami tylko jeśli CPU nie
punkt punkt (Point-to-Point)
korzysta z magistral; wykrada cykle (Cycle stealing mode)
punkt tablica (Point-to-Array)
tablica punkt (Array-to-Point)
CPU decyduje o momencie transferu danych przez DMA
tablica tablica (Array-to-Array)
podwójne, przemienne buforowanie (Ping Pong Buffering)
transfer DMA ulega spowolnieniu ale CPU i DMA mają dostęp do
magistral
Anu M. D.: An Introduction to DMA Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012 Cypress Semiconductor Corp. March 2012
DMA Operations
DMA Operations
Example 2: Point-to-Array Transfer
Example 1: Point-to-Point Transfer
kontroler DMA zapisuje 2-batowy wynik konwersji przetwornika ADC do
sygnał końca konwersji (End of Conversion) przetwornika wymusza żądanie
bufora w pamięci RAM po każdorazowym wystąpieniu żądania transmisji
transmisji DMA (DMA request)
wskaznik bufora pamięci RAM jest inkrementowany po każdorazowym
układ DMA odczytuje dane z przetwornika ADC i wpisuje do rejestrów transferze danych
przetwornika DAC w każdym cyklu żądania DMA (on each DMA request)
Po przesłaniu zaprogramowanej liczby wyników przetwarzania układ DMA
sygnalizuje zakończenie transferu danych
po każdym transferze
licznik transferów jest
dekrementowany o 1
(burst count)
transfer jest kończony
jeśli licznik transferów
osiąga wartość 0
Fig. 1 Fig. 3
4
Anu M. D.: An Introduction to DMA Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012 Cypress Semiconductor Corp. March 2012
DMA Operations
DMA Operations
Example 3: Array-to-Point Transfer
Example 4: Array-to-Array Transfer
przetwornik DAC jest periodycznie aktualizowany wartościami zapisanymi
w pamięci RAM jest tworzona kopia tablicy z pamięci Flash (8-bytowe dane)
w pamięci Flash (lookup table)
z wykorzystaniem transferu DMA (from memory to Memory)
na wyjściu przetwornika DAC tworzony jest sygnał sinusoidalny
transfer jest wymuszany przez CPU (CPU request)
żądanie transmisji DMA jest periodycznie wymuszane przez licznik
koniec
(sygnał zegarowy)
transferu jest
częstotliwość sygnalizowany
żądań przez sygnał
transmisji DMA NRQ, który
(DMA trigger uruchamia
clock) oraz przerwanie
wielkość tablicy ISR_DMADone i
w pamięci wyświetla
Flash decydują zawartość
o parametrach pamięci RAM na
sinusoidy. LCD
Fig. 5 Fig. 7
Anu M. D.: An Introduction to DMA Anu M. D.: An Introduction to DMA
Cypress Semiconductor Corp. March 2012 Cypress Semiconductor Corp. March 2012
DMA Operations
DMA Operations
Example 5: Ping-Pong Buffer [2#2]
Example 5: Ping-Pong Buffer [1#2]
wyniki przetwarzania przetwornika ADC dane są zapisywane w buforze 1 w
pamięci RAM (RAM Buffer 1)
po
zapełnieniu
bufora 1
(RAM Buffer
1), dane są
zapisywane
naprzemienne wykorzystanie
dwóch kanałów DMA
w buforze 2
(RAM Buffer
2)
Fig. 10
Fig. 13
http://www.pcguide.com/ http://www.pcguide.com/
PC DMA Channels 0..3
PC DMA Channels 4..7
DMA0
reserved for use by the internal Dynamic RAM refresh circuitry
used only for system memory on almost all PCs and not available for DMA4
use by peripherals reserved for cascade the two DMA controllers on systems with a 16-
DMA1 bit ISA bus. It is not available for use by peripherals
"low" DMA channel, normally taken by the sound card (one must be
DMA5
chosen from DMAs 1, 2 or 3, while the other can be any free DMA
"high" DMA channel for sound card
channel)
other Common Uses: SCSI host adapters, network cards
also a popular choice for many other peripherals
DMA6
DMA2
normally open and available for use by peripherals
used on virtually every PC for the floppy disk controller
one of the least used channels in the system and is an alternative
DMA3 location for the "high" sound card DMA channel or other devices
normally the only one free on the first controller (DMAs 0 to 3) when you
DMA7
are using a sound card
normally open and available for use by peripherals
one of the most common uses of this channel is by ECP parallel ports,
one of the least used channels in the system and is an alternative
which require a DMA channel unlike other parallel port modes
location for the "high" sound card DMA channel or other devices
on very old XT systems, DMA channel 3 is used by the hard disk drive
5
MSP430x4xx Family. User s Guide. MSP430x4xx Family. User s Guide.
Mixed Signal Products. Texas Instruments, 2007, SLAU056G Mixed Signal Products. Texas Instruments, 2007, SLAU056G
MSP430x4xx
MSP430x4xx
DMA Controller
DMA Controller Features
zapis danych w pamięci RAM w trybie DMA:
kontroler DMA (direct memory access) przesyła dane z jednego adresu zródłem danych jest 12-bitowy przetwornik ADC12,
do innego, bez interwencji jednostki centralnej procesora (CPU), w całym
zakresie adresów; np. kontroler DMA może zapisywać wyniki 12-bitowy przetwornik DAC12 w trybie 8- lub 12-bitowym,
przetwarzania przetwornika ADC12 do pamięci RAM
zródłem danych lub układem docelowym jest USART0 (kontroler standardu
I2C-Bus, zgodny ze standardem Philips I2C, wersja 2.1)
kontroler DMA zwiększa wydajność układów peryferyjnych
- w trybie podstawowym (standard mode, 100 kbpsMAX) lub szybkim (fast
mode, 400 kbpsMAX),
- adresowanie 7-bitowe lub 10-bitowe,
wykorzystanie transferu DMA redukuje pobór mocy
- praca w trybie master lub slave,
przez mikrokontroler przez wprowadzenie CPU w tryb redukcji
- dwa dedykowane kanały DMA obsługujące 16-bitowy transfer I2C
mocy (low-power mode), np. uśpienia (sleep mode), bez konieczności
zmiany trybu pracy przy transmisji danych do/z układów peryferyjnych
automatyczny transfer danych do pamięci Flash transfer DMA bez
udziału CPU, niezależnie od wybranego trybu redukcji mocy (low-power
modes)
4 tryby adresowania
każdy kanał DMA programowany niezależnie
MSP430x4xx
MSP430x4xx
DMA Controller
Tryby adresowania DMA
Block Diagram
up to three independent
transfer channels
configurable DMA channel
Inicjalizacja
priorities
transferu DMA
Transfer:
only 2 MCLK clock cycles
byte-to-byte,
byte or word and mixed
oba stałe adresy stały adres adresy bufora
byte/word transfer capability
word-to-word,
block sizes up to 65535 bytes transfer DMA
or words nie jest
przerywany
configurable transfer trigger
selections przez kontroler
przerwań
selectable edge or level-
triggered transfer procesora
byte-to-word,
four addressing modes
lub word-to-byte
single, block, or burst-block
adresy bufora 1
adresy bufora stały adres
transfer modes
Wyzwalanie zboczem lub poziomem adresy bufora 2
RM0367. Reference manual. Ultra-low-power STM32L0x3 http://www.embedds.com/
advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014 using-direct-memory-access-dma-in-stm23-projects
STM32L053
STM32 Microcontrollers
Direct Memory Access
Direct Memory Access
do 7 niezależnych, programowalnych kanałów DMA (requests)
do 14 kanałów DMA (single unit) w procesorach ST32 mało (Low) i średnio
sprzętowe lub programowe wyzwalanie każdego kanału DMA
(Medium) złożonych
programowalne 4 poziomy priorytetów transferów DMA (very high, high,
dwa kontrolery DMA z maksymalnie 12 niezależnymi kanałami w
medium, low priorities)
procesorach ST32 bardzo (High) złożonych
niezależne zródło (source) / przeznaczenie (destination), typ transferu (byte,
Ibus
half word, word); prawidłowy sposób adresowania (source/destination
addresses must be aligned on the data size) Flash
Core
Dbus
wsparcie realizacji bufora kołowego (circular buffer)
ARMv7-M
3 znaczniki (DMA Half Transfer, DMA Transfer complete and DMA Transfer
System
Error); logiczny OR dla pojedynczego przerwania każdego z kanałów DMA RAM
transfery: memory-to-memory, peripheral-to-memory oraz memory-to-
peripheral i peripheral-to-peripheral transfers (access to Flash, SRAM, APB DMA
APB1 Peripherals
and AHB peripherals as source and destination)
AHB
APB2 Peripherals
2-bajtowa liczba transmitowanych danych (maksymalnie 65535 transferów)
6
Bus matrix
RM0367. Reference manual. Ultra-low-power STM32L0x3 RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014 advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014
STM32L053 STM32L053
DMA Channel x Configuration Register DMA_CCRx [1#3]
DMA Transfer
31:15 Reserved
14 MEM2MEM: Memory to memory mode (bit set & cleared by software)
odczyt danych z rejestrów układów peryferyjnych lub komórki pamięci
0: Memory to memory mode disabled
adresowanej wewnętrznym rejestrem adresowym
1: Memory to memory mode enabled
13:12 PL[1:0]: Channel priority level (bits set & cleared by software)
00: Low 01: Medium
adres początkowy pierwszego transferu DMA w rejestrze:
10: High 11: Very high
- DMA_CPARx (peripheral base address of the data register from/to
which the data will be read/written) 11:10 MSIZE[1:0]: Memory size (bits set & cleared by software)
- or DMA_CMARx (memory base address area from/to which 00: 8-bits 01: 16-bits
the data will be read/written) 10: 32-bits 11: Reserved
9:8 PSIZE[1:0]: Peripheral size (bits set & cleared by software)
00: 8-bits 01: 16-bits
dekrementacja 16-bitowego rejestru licznikowego (DMA_CNDTRx
10: 32-bits 11: Reserved
DMA channel x number of data register) po każdym transferze danych
(post-decrementing) 7 MINC: Memory increment mode (bit set & cleared by software)
0: Memory increment mode disabled
1: Memory increment mode enabled
RM0367. Reference manual. Ultra-low-power STM32L0x3 RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014 advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014
STM32L053 STM32L053
DMA Channel x Configuration Register DMA_CCRx [2#3] DMA Channel x Configuration Register DMA_CCRx [3#3]
6 PINC: Peripheral increment mode (bit set & cleared by software)
0: Peripheral increment mode disabled
1: Peripheral increment mode enabled
5 CIRC: Circular mode (bit set & cleared by software)
0: Circular mode disabled
1 TCIE: Transfer complete interrupt enable (bit set & cleared by software)
1: Circular mode enabled
0: TC interrupt disabled
4 DIR: Data transfer direction (bit set & cleared by software)
1: TC interrupt enabled
0: Read from peripheral
0 EN: Channel enable (bit set & cleared by software)
1: Read from memory
0: Channel disabled
3 TEIE: Transfer error interrupt enable (bit set & cleared by software)
1: Channel enabled
0: TE interrupt disabled
1: TE interrupt enabled
2 HTIE: Half transfer interrupt enable (bit set & cleared by software)
0: HT interrupt disabled
1: HT interrupt enabled
RM0367. Reference manual. Ultra-low-power STM32L0x3 RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014 advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014
STM32L053
STM32L053
Circular and Memory-to-memory mode
Error management
tryb bufora kołowego (Circular mode) do obsługi buforów kołowych (handle
circular buffers) np. skanowanie przetwornika ADC
kontroler DMA generuje błąd przy próbie odczytu/zapisu z obszaru
odblokowanie trybu bitem CIRC (Circular mode) w rejestrze DMA_CCRx (DMA
zarezerwowanego
Channel x Configuration Register)
włączenie trybu automatycznie uaktualnia liczbę transferów programowaną w
błąd transmisji automatycznie blokuje kanał DMA (disabled) i kasuje
trakcie programowania kontrolera DMA
bit EN = 0 (Channel enable) we właściwym dla tego kanału rejestrze
konfiguracyjnym DMA_CCRx (DMA Channel x Configuration Register)
Memory-to-memory mode transfer DMA nie musi być aktywowany przez
urządzenie peryferyjne
błąd transmisji wywołuje przerwanie, ustawiany jest znacznik TEIF = 1
ustawienie bitu MEM2MEM (Memory to memory mode) w rejestrze
(Channel x transfer error flag) w rejestrze DMA_IFR (DMA Interrupt
DMA_CCRx (DMA Channel x Configuration Register), rozpoczyna transfer
Requests Register) jeśli odblokowane jest maskowanie przerwania, bit
DMA po ustawieniu bitu EN (Channel enable) w rejestrze DMA_CCRx
TEIE = 1 (Transfer error interrupt enable), we właściwym dla tego kanału
transfer jest kończony jeśli zwartość rejestru DMA_CNDTRx (DMA channel x
rejestrze konfiguracyjnym DMA_CCRx (DMA Channel x Configuration
number of data register) jest równa 0
Register)
tryb Memory-to-Memory może być użyty równolegle z trybem bufora kołowego
7
RM0367. Reference manual. Ultra-low-power STM32L0x3 RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014, tab. 43 advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014, tab. 43
STM32L053 STM32L053
DMA Request DMA Request
Request Peri- Channel Request Peri- Channel
number pherals 1 2 3 4 5 6 7 number pherals 1 2 3 4 5 6 7
0 ADC ADC ADC 0 ADC ADC ADC
Analog-to-Digital Converter
1 SPI1 SPI1 SPI1 1 SPI1 SPI1 SPI1
_RX _TX _RX _TX
Serial peripheral interface/ inter-IC sound
2 SPI2 SPI2 SPI2 SPI2 SPI2 2 SPI2 SPI2 SPI2 SPI2 SPI2
_RX _TX _RX _TX _RX _TX _RX _TX
3 USART1 USART1 USART USART1 USART1 3 USART1 USART1 USART USART1 USART1
_TX _RX _TX _RX _TX _RX _TX _RX
Universal Synchronous / Asynchronous Receiver / Transmitter
4 USART2 USART2 USART2 USART2 USART2 4 USART2 USART2 USART2 USART2 USART2
_TX _RX _RX _TX _TX _RX _RX _TX
5 LPUART1 LPUART1 LPUART1 LPUART1 LPUART1 5 LPUART1 LPUART1 LPUART1 LPUART1 LPUART1
Low-Power Universal Asynchronous Receiver / Transmitter
_TX _RX _RX _TX _TX _RX _RX _TX
6 I2C1 I2C1 I2C1 I2C1 I2C1_RX 6 I2C1 I2C1 I2C1 I2C1 I2C1_RX
_TX _RX _TX _TX _TX _RX _TX _TX
Inter-integrated Circuit (I2C) interface
7 I2C2 I2C2 I2C2 7 I2C2 I2C2 I2C2
_TX _RX _TX _RX
8 TIM2 TIM2 TIM2 TIM2 TIM2 TIM2 TIM2_CH2 8 TIM2 TIM2 TIM2 TIM2 TIM2 TIM2 TIM2_CH2
general-purpose TIMer 2
_CH3 _UP _CH2 _CH4 _CH1 TIM2_CH4 _CH3 _UP _CH2 _CH4 _CH1 TIM2_CH4
9 TIM6_UP TIM6/DAC 9 TIM6_UP TIM6/DAC
basic TIMer 6 Digital-to-Analog Converter
/DAC_Ch1 _Ch1 /DAC_Ch1 _Ch1
11 AES AES AES AES AES 11 AES AES AES AES AES
Advanced Encryption Standard hardware accelerator
_IN _OUT _OUT _IN _IN _OUT _OUT _IN
RM0367. Reference manual. Ultra-low-power STM32L0x3 RM0367. Reference manual. Ultra-low-power STM32L0x3
advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014 advanced ARM-based 32-bit MCUs. STMicroelectronics, April 2014
STM32L053 STM32L053
DMA Channel configuration procedure [1#2] DMA Channel configuration procedure [2#2]
zaprogramuj:
zaprogramuj:
4. priorytet wybranego kanału, bity PL[1:0] (channel priority level) w
1. adres pobieranych (source) danych z wybranego układu
rejestrze DMA_CCRx (DMA Channel x Configuration Register)
peryferyjnego w rejestrze DMA_CPARx (DMA peripheral base address
of the data register from/to which the data will be read/written); dane
5. - kierunek transferu danych (data transfer direction)
-
-
-
mogą być także pobierane z pamięci
- transfer w trybie bufora kołowego (circular mode)
-
-
-
- tryb inkrementacji dla układu peryferyjnego / pamięci (peripheral &
-
-
-
2. adres wysyłanych (destination) danych w pamięci w rejestrze
memory incremented mode)
DMA_CMARx (DMA memory base address area from/to which the data
- rozmiar transmitowanych danych (peripheral & memory data size)
-
-
-
will be read/written); dane mogą być także wysyłane do wybranego
- typ przerwania po połowie lub całym bloku transmitowanych danych
-
-
-
układu peryferyjnego
(interrupt after half and/or full transfer) w rejestrze DMA_CCRx
(DMA Channel x Configuration Register)
3. liczbę przesyłanych danych w rejestrze DMA_CNDTRx (DMA number
of data to be transferred (0 up to 65535) register); po każdym transferze
uaktywnij kanał DMA, bit ENABLE = 1 w rejestrze DMA_CCRx (DMA
danych wartość tego rejestru będzie dekrementowana
Channel x Configuration Register)
AN10878 Migrating to the LPC1700 series.
NXP Semiconductors, App Note, Rev. 01 - 6 October 2009
Problemy i pytania
NXP LPC17xx
1. Jaki jest powód wprowadzenie trybu DMA ?
2. Jak opisać działanie trybu DMA ?
Multilayer AHB Bus Matrix 3. Jaki jest udział jednostki centralnej (CPU) w trybie DMA ?
4. Jakie sygnały sterują kontrolerem DMA ?
Multilayer interconnect
5. Jakie typy operacji są możliwe w trybie DMA ?
system allows
6. Na czym polega tryb Single Transfer ?
simultaneous operation:
7. Na czym polega tryb Block Transfer ?
CPU execution from
8. Na czym polega tryb Burst-Block Transfer ?
on-chip flash
Ethernet DMA " Na czym polega tryb Scatter-Gather Transfer ?
USB DMA
" Jakie są różnice przy wymianie danych typu: Point-to-Point i Point-to-Array ?
General Purpose DMA
" Jakie są różnice przy wymianie danych typu: Array-to-Point i Array-to-Array ?
simultaneous access to
" Na czym polega operacja typu Ping Pong Buffering ?
be spread over three
" Jakie układy peryferyjne mikrokontrolerów wykorzystują tryb DMA (przykłady) ?
separate SRAMs with no
contention between those " Ile kanałów DMA może równocześnie transmitować dane ?
functions
" Czy tryb DMA sprzyja redukcji mocy w mikrokontrolerach ?
8
Wyszukiwarka
Podobne podstrony:
2 Architektura 15 www7 Stos 15 www12 wartosci wlasne www4 Typy instrukcji Tryby?resowania 15 www (1)3 Przetw?nych Typy proces 15 www (1)13 Power 15 www8 Przerwania 15 www6 Pamieci ROM RAM 15 www9 Liczniki 15 wwwWM Cw9 Spraw v13 12 04 155 Architektura MCU 15 www (1)Wykład 9 15 12 12Plakat JELENIA GORA Przyjazdy wazny od 13 12 15 do 14 03 08więcej podobnych podstron