background image

1

Podstawy techniki 

mikroprocesorowej 

ETEW006

DMA

Andrzej Stępień

Katedra Metrologii Elektronicznej i Fotonicznej

Transmisja danych z układu I/O do pamięci

DREQx

DACKx

IOR#

MCU

HRQ

HOLDA

MEMR#

Memory

(pami

ęć

)

Address Bus 

(magistrala adresowa)

Data Bus 

(magistrala danych)

MEMW#

IOW#

DMA

MEMW#

(MEMory Write
zapis pami

ę

ci)

IOR#

(Input/Output Read
odczyt układu I/O)

I/O

(układ)

CPU wysyła

sygnał do układu I/O o gotowo

ś

ci odczytu danych

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

– CPU sygnalizuje

pami

ę

ci gotowo

ść

 zapisu danych

pami

ęć

 zapisuje 

dane w swojej wewn

ę

trznej strukturze

Programowa transmisja danych

pamięć 

układ I/O  

[1#2]

DREQx

DACKx

IOR#

HRQ

HOLDA

MEMR#

Memory

(pami

ęć

)

MEMW#

IOW#

CPU

 magistrala adresowa: adres układu I/O

 sygnał gotowo

ś

ci odczytu 

IOR#

, transmisji danych z układu I/O

układ I/O

magistrala danych: dane gotowe do transmisji

CPU

 wpis danych do rejestru Rn

 koniec sygnału gotowo

ś

ci 

IOR#

DMA

MEMW#

(MEMory Write
zapis do pami

ę

ci)

IOR#

(Input/Output Read
odczyt układu I/O)

I/O

(układ)

MCU

Address Bus 

(magistrala adresowa)

Data Bus 

(magistrala danych)

rejestr Rn jako 
element pomocniczy

DREQx

DACKx

IOR#

HRQ

HOLDA

MEMR#

Memory

(pami

ęć

)

MEMW#

IOW#

DMA

MEMW#

(MEMory Write
zapis do pami

ę

ci)

IOR#

(Input/Output Read
odczyt układu I/O)

I/O

(układ)

MCU

Address Bus 

(magistrala adresowa)

Data Bus 

(magistrala danych)

Mem CS#

MEMW#

wpis

danych

Data

clock

wpis
danych

Programowa transmisja danych

pamięć 

układ I/O  

[2#2]

CPU

magistrala adresowa: adres komórki pami

ę

ci

MEMW#

: sygnał gotowo

ś

ci zapisu do pami

ę

ci,

transmisja danych do pami

ę

ci

CPU

magistrala danych: zawarto

ść

 rejestru Rx

koniec sygnału gotowo

ś

ci 

MEMW#

wpis danych do pami

ę

ci:

zboczem 

sygnału

MEMW#

zboczem 

sygnału taktuj

ą

cego 

Mem Add

Transmisja danych z układu I/O do pamięci

DREQx

DACKx

IOR#

HRQ

HOLDA

MEMR#

Memory

(pami

ęć

)

MEMW#

IOW#

DMA

MEMW#

(MEMory Write
zapis pami

ę

ci)

IOR#

(Input/Output Read
odczyt układu I/O)

I/O

(układ)

CPU

 magistrala adresowa: adres układu I/O

 

IOR#

: sygnał gotowo

ś

ci odczytu danych z układu I/O

układ I/O

magistrala danych: dane gotowe do transmisji

CPU

 wpis danych do rejestru Rx

 koniec sygnału gotowo

ś

ci 

IOR#

CPU

 magistrala adresowa: adres komórki pami

ę

ci

 

MEMW#

: sygnał gotowo

ś

ci zapisu do pami

ę

ci, 

transmisja danych do pami

ę

ci

CPU

 magistrala danych: zawarto

ść

 rejestru Rx

 koniec sygnału gotowo

ś

ci 

MEMW#

Address Bus 

(magistrala adresowa)

MCU

Data Bus 

(magistrala danych)

powtórzenie 
cyklu 
przesłania

Transmisja  danych  w  PC

Programowy transfer

512 bajtów z urz

ą

dzenia o adresie 0x380 do bufora w pami

ę

ci RAM:

przeslij_dane: 

mov

bx, bufor

; adres pami

ę

ci RAM

mov

cx, 512

; liczba transmitowanych bajtów

mov

dx, 380h

; adres portu

loop:

in

al, dx

; odczyt zawarto

ś

ci portu

mov

[bx], al

; wpis do pami

ę

ci RAM

inc

bx

; przygotowanie do kolejnego wpisu

dec

cx

; dekrementacja liczby przesłanych  bajtów

jnz

loop

; zamkni

ę

cie p

ę

tli przesła

ń

ELEC 464 : MICROCOMPUTER SYSTEM DESIGN. 

1996/97 WINTER SESSION TERM 1

background image

2

Cortex-M0

Transmisja  bloku danych  

[1#2]

Programowy transfer 10 słów – 149 cykli maszynowych:

unsigned int i

;

unsigned int tab1[]

= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

unsigned int tab2[10]

;

for(

i=0; i<11; i++

tab2[

i

]

=

tab1[

i

]

;

www.keil.com 

→ µµµµ

Vision v.4.70

Cortex-M0

Transmisja  bloku danych  

[2#2]

for(

i=0; i<11; i++

tab2[

i

]

=

tab1[

i

]

;

//

149 cykli maszynowych

www.keil.com 

→ µµµµ

Vision v.4.70

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)

0x00000314

5808

LDR

r0, [r1, r0]

; r0 

(r1 + r0) 

0x00000316

00A1 LSLS

r1, r4, #2

; r0 

r4 << 2 (ofset)

0x00000318

466A MOV

r2, sp

; r2 

adres tab2[0] (baza)

0x0000031A 5050

STR

r0, [r2, r1]

; (r0) 

(r2 + r1)

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)

STM32  Microcontrollers 

CPU Transfer  or  DMA Transfer

http://www.embedds.com/

using-direct-memory-access-dma-in-stm23-projects

544

µ

s je

ś

li kopiowanie z udziałem CPU

214

µ

s je

ś

li kopiowanie z udziałem DMA

Kopiowanie 800 słów 32-bitowych

(STM32VLDiscovery  – ST32F100RB MCU, 

Cortex-M3,

pojedynczy, 7-kanałowy kontroler DMA)

DMA 

(Direct Memory Access)

tryb bezpo

ś

redniego dost

ę

pu do pami

ę

ci 

z pomini

ę

ciem jednostki 

centralnej

(CPU)

w trakcie wymiany danych

przewa

ż

nie  jako 

transfer 

(wymiana)

danych

mi

ę

dzy układami we/wy 

(nap

ę

dy FDD, pami

ę

ci masowe HDD, karty d

ź

wi

ę

kowe, bufory 

kontrolerów portów szeregowych, szybkie  przetworniki A/C i C/A itp.)
a pami

ę

ci

ą

 komputera / systemu procesorowego

redukcja energii

niezb

ę

dnej przy przesyle  danych

Kontroler  DMA

Kontroler DMA

sprz

ę

towa realizacja funkcji transmisji danych do pami

ę

ci :

uaktywnienie urz

ą

dzenia wej

ś

ciowego

pobranie danych z urz

ą

dzenia wej

ś

ciowego

wpis danych do pami

ę

ci RAM

inkrementacja adresu pami

ę

ci RAM

dekrementacja liczby przesyłanych  bajtów

okre

ś

lenie ko

ń

ca transmisji danych

komputerach PC kontroler DMA

przesyła:

dane z urz

ą

dzenia wej

ś

ciowego  do pami

ę

ci RAM w czasie 

jednego

cyklu 

maszynowego (brak mapowania urz

ą

dze

ń

 we/wy w przestrzeni pami

ę

ci)

dane z pami

ę

ci RAM o adresie addr1 do pami

ę

ci RAM o adresie addr2 w 

czasie 

dwóch

cykli maszynowych  (mapowanie urz

ą

dze

ń

 we/wy w 

przestrzeni pami

ę

ci)

Kontroler DMA

Sygnały

DREQx 

(Dma REQuest)

DACKx#

(DMA ACKnowledge)

HRQ 

(Hold ReQuest)

HOLDA

(HOLD Acknowledge)

MEMR#

(MEMory Read)

MEMW#

(MEMory Write)

IOR#

(Input/Output Read)

IOW#

(Input/Output Write)

DREQx

DACKx

IOR#

MCU

HRQ

HOLDA

MEMR#

Memory

(pami

ęć

)

Address Bus 

(magistrala adresowa)

Data Bus 

(magistrala danych)

MEMW#

IOW#

DMA

(kontroler)

I/O

(układ)

background image

3

Kontroler DMA - rejestry

DREQx

DACKx

IOR#

MCU

HRQ

HOLDA

MEMR#

Memory

(pami

ęć

)

Address Bus 

(magistrala adresowa)

Data Bus 

(magistrala danych)

MEMW#

IOW#

DMA

(kontroler)

rejestr 

ź

ródłowy 

(source address)

, inkrementowany lub dekrementowany

rejestr docelowy 

(destination address)

, inkrementowany lub 

dekrementowany

rejestr powtórze

ń

 

(transfer count)

rejestr inicjalizuj

ą

cy tryb DMA 

(trigger source(s)

I/O

(układ)

Inicjalizacja trybu DMA  

[1#2]

1.

DREQx 

(

DMA Request

żą

danie dost

ę

pu do trybu DMA

2.

HRQ

(

Hold Request

) – ’zawieszenie’ procesora (wstrzymanie dost

ę

pu

procesora do magistral), ’zawieszenie ’ sterowania pami

ę

ci i układów I/O

3.

HOLDA

(

HOLD Acknowledge

) – akceptacja CPU kontrolera DMA o pocz

ą

tku 

lub ko

ń

cu ’zawieszenia’ procesora

4.

DACKx#

(

DMA Acknowledge

) – potwierdzenie 

żą

dania dost

ę

pu DMA

DREQx

DACKx

IOR#

MCU

HRQ

HOLDA

MEMR#

Memory

(pami

ęć

)

Address Bus 

(magistrala adresowa)

Data Bus 

(magistrala danych)

MEMW#

IOW#

DMA

(kontroler)

I/O

(układ)

Inicjalizacja trybu DMA  

[2#2]

DREQx

DACKx

IOR#

MCU

HRQ

HOLDA

MEMR#

Memory

(pami

ęć

)

Address Bus 

(magistrala adresowa)

Data Bus 

(magistrala danych)

MEMW#

IOW#

DMA

(kontroler)

I/O

(układ)

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

sterowanie przesłaniem bloku danych: pami

ęć

 

układ I/O

nieaktywny HOLD i ACK: zamkni

ę

cie kanału DMA po zako

ń

czonej transmisji 

bloku danych lub nieaktywnym DREQ

Typy transmisji DMA

wielokrotna, z powtórzeniami (

Burst Mode

)

z wykradaniem cykli 

(Cycle stealing mode)

Jest mo

ż

liwe jednoczesne

u

ż

ycie 

tylko 1

kanału DMA  

je

ś

li mikrokontroler ma

1

magistral

ę

 adresów i danych

pojedyncza 

(Single Transfer)

blokowa 

(Block Transfer)

blokowa  z przeplotem dost

ę

pu CPU (

Burst-Block  Transfer

)

pojedyncza z powtórzeniem 

(Repeated Single Transfer)

blokowa  z powtórzeniem 

(Repeated Block Transfer)

’rozrzu

ć

-zbierz’ 

(

Scatter-Gather Transfers)

Tryby DMA

Pojedynczy, blokowy, z przeplotem

Tryb pojedynczy 

(Single Transfer)

na ka

ż

de 

żą

danie wykonywany  jest pojedynczy transfer danych

kontroler DMA zwi

ę

ksza lub zmniejsza adres o liczb

ę

 transferowanych 

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

DMA ko

ń

czy prac

ę

 po transmisji całego bloku danych

kontroler DMA odcina CPU od magistral na czas transferu bloku danych

Tryb blokowy z przeplotem 

(Burst-Block Transfer)

:

podobie

ń

stwo do trybu blokowego ale z przeplotem dost

ę

pu DMA i CPU 

do magistral

zmniejsza wydajno

ść

  o 20% ale CPU nie jest odcinane od magistral na 

czas transmisji DMA

tryb ko

ń

czony po transmisji całego bloku danych

Ganier CJ: What is Direct Memory Access (DMA) ?

http://cnx.org

Tryb pojedynczy 

(Single Transfer)

na ka

ż

de 

żą

danie wykonywany  jest pojedynczy transfer danych

kontroler DMA zwi

ę

ksza lub zmniejsza adres o liczb

ę

 transferowanych 

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

DMA ko

ń

czy prac

ę

 po transmisji całego bloku danych

transfer odcina CPU od magistral na czas transferu bloku danych

Tryb pojedynczy  z powtórzeniem 

(Repeated Single Transfer

analogicznie  jak tryb pojedynczy ale nie jest blokowany  do mamentu 
zako

ń

czenia transmisji wszystkich danych (bloku danych)

Tryby DMA

Pojedynczy z powtórzeniem

background image

4

Tryby DMA

Transfer  Scatter-Gather

dotyczy procesu zbierania danych 

(gathering data from)

i rozproszenia-

rozrzucania danych 

(scattering data into)

(

http://en.wikipedia.org/wiki/Vectored_I/O "Scatter-Gather" (dosł.: rozrzu

ć

-zbierz

)

technika transferu nieci

ą

głych bloków danych jako seria małych 

spójnych, ci

ą

głych bloków  danych 

(

http://www.latticesemi.com/products/intellectualproperty/ipcores/scatter-

gatherdirectmemor/index.cfm

)

procedura DMA, Scatter-Gather (dosł.: „rozrzu

ć

-zbierz”), pozwalaj

ą

ca 

przenosi

ć

 dane do wielu obszarów pami

ę

ci w pojedynczym  transferze; 

pod wzgl

ę

dem skutków jest to równowa

ż

ne poł

ą

czeniu ła

ń

cuchowemu 

kilku transferów, jednak jest wyra

ź

nie szybsze 

(

http://pl.wikipedia.org/wiki/DMA

)

Tryby DMA

Buforowanie Ping-Pong

Galda M.: Audio Output Options for Kinetis. 

Using DMA and PWM, DAC, or I2S Audio Bus. Freescale Semi. AN4369, 02/2012

dwa niezale

ż

ne bufory napełniane naprzemiennie danymi, np. próbkami audio

po 
opró

ż

nieniu 

jednego 
bufora, 
odwrócenie
ról

realizacja 
przez 
przeł

ą

czanie 

wska

ź

ników 

(adresów) 
buforów

Figure 1. Audio input-output  data processing stream

Tryby DMA

Transfer z w

ykradaniem cykli

SH7211 Group. Data Transfer between 

On-chip RAM Areas with DMAC (Cycle-Stealing Mode). Renesas, March 2008

CPU nie ma dost

ę

pu do magistral w trakcie DMA, np. wykonuje program 

z wewn

ę

trznej pami

ę

ci podr

ę

cznej (cache); kontroler DMA zawiesza 

dost

ę

p CPU do magistral

kontroler DMA przejmuje kontrol

ę

 nad magistralami tylko je

ś

li CPU nie 

korzysta z magistral; wykrada cykle 

(Cycle stealing mode) 

CPU decyduje o momencie transferu danych przez DMA

transfer DMA ulega spowolnieniu  ale CPU i DMA maj

ą

 dost

ę

p do 

magistral

Tryby DMA

wg Cypress Semiconductor

Anu M. D.: An Introduction to DMA

Cypress Semiconductor Corp. March 2012

kontroler DMA 

(DMA controller - DMAC) 

nadzoruje transfer danych bez 

udziału CPU; CPU programuje kontroler DMA

typy transferów przy du

ż

ej liczbie danych:

punkt – punkt 

(Point-to-Point)

punkt – tablica 

(Point-to-Array)

tablica – punkt 

(Array-to-Point)

tablica – tablica 

(Array-to-Array)

podwójne, przemienne buforowanie 

(Ping Pong Buffering)

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

DMA  Operations

Example 1: Point-to-Point Transfer

Anu M. D.: An Introduction to DMA

Cypress Semiconductor Corp. March 2012

Fig. 1

sygnał ko

ń

ca konwersji (

E

nd 

o

C

onversion) przetwornika wymusza 

żą

danie 

transmisji DMA (

DMA request

)

układ 

DMA 

odczytuje dane z przetwornika ADC i wpisuje do rejestrów 

przetwornika 

DAC 

w ka

ż

dym cyklu 

żą

dania DMA (on each 

DMA request

)

DMA  Operations

Example 2: Point-to-Array Transfer

Anu M. D.: An Introduction to DMA

Cypress Semiconductor Corp. March 2012

kontroler 

DMA zapisuje 2-batowy

wynik konwersji przetwornika 

ADC do

bufora w pami

ę

ci 

RAM 

po ka

ż

dorazowym  wyst

ą

pieniu 

żą

dania transmisji

wska

ź

nik bufora pami

ę

ci RAM 

jest 

inkrementowany

po ka

ż

dorazowym 

transferze danych

Po 

przesłaniu zaprogramowanej liczby wyników przetwarzania  układ 

DMA

sygnalizuje zako

ń

czenie transferu danych

Fig. 3

background image

5

DMA  Operations

Example 3: Array-to-Point Transfer

Anu M. D.: An Introduction to DMA

Cypress Semiconductor Corp. March 2012

przetwornik DAC jest periodycznie aktualizowany 

warto

ś

ciami zapisanymi 

w pami

ę

ci Flash (lookup table)

na wyj

ś

ciu przetwornika 

DAC

tworzony jest 

sygnał sinusoidalny

żą

danie transmisji DMA 

jest

periodycznie wymuszane przez licznik 

(sygnał zegarowy)

cz

ę

stotliwo

ść

 

żą

da

ń

 

transmisji DMA 
(DMA trigger 
clock) 
oraz 
wielko

ść

 tablicy 

w pami

ę

ci 

Flash decyduj

ą

 

o parametrach 
sinusoidy.

Fig. 5

DMA  Operations

Example 4: Array-to-Array Transfer

Anu M. D.: An Introduction to DMA

Cypress Semiconductor Corp. March 2012

w pami

ę

ci 

RAM

jest tworzona kopia tablicy z pami

ę

ci 

Flash 

(8-bytowe dane)

z wykorzystaniem transferu DMA (from memory to Memory)

transfer jest wymuszany przez CPU 

(CPU request)

koniec 
transferu 

jest 

sygnalizowany 
przez sygnał 

NRQ

, który 

uruchamia 
przerwanie 
ISR_DMADone

wy

ś

wietla

zawarto

ść

 

pami

ę

ci 

RAM

na 

LCD

Fig. 7

DMA  Operations

Example 5: Ping-Pong Buffer  

[1#2]

Anu M. D.: An Introduction to DMA

Cypress Semiconductor Corp. March 2012

Fig. 10

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 
w buforze 2 
(RAM Buffer 
2)

DMA  Operations

Example 5: Ping-Pong Buffer  

[2#2]

Anu M. D.: An Introduction to DMA

Cypress Semiconductor Corp. March 2012

Fig. 13

naprzemienne wykorzystanie 
dwóch kanałów DMA

PC DMA Channels 0..3

http://www.pcguide.com/

DMA0 

– reserved for use by the internal Dynamic RAM refresh circuitry
– used only for system memory on almost all PCs and not available for 

use by peripherals

DMA1

– "low" DMA channel, normally  taken by the sound card (one must be 

chosen from DMAs 1, 2 or 3, while the other can be any free DMA 
channel)

– also a popular choice for many other peripherals

DMA2

– used on virtually every PC for the floppy disk controller

DMA3

– normally  the only one free on the first controller (DMAs 0 to 3) when you 

are using a sound card

– one of the most common uses of this channel is by ECP parallel ports, 

which require a DMA channel unlike other parallel  port modes

– on very old XT systems, DMA channel 3 is used by the hard disk drive 

PC DMA Channels 4..7

DMA4 

– reserved for cascade the two DMA controllers on systems with a 16-

bit ISA bus. It is not available for use by peripherals

DMA5

– "high" DMA channel for sound card
– other Common Uses: SCSI host adapters, network cards

DMA6

– normally  open and available for use by peripherals
– one of the least used channels in the system and is an alternative 

location for the "high" sound card DMA channel or other devices

DMA7

– normally  open and available for use by peripherals
– one of the least used channels in the system and is an alternative 

location for the "high" sound card DMA channel or other devices 

http://www.pcguide.com/

background image

6

MSP430x4xx 

DMA  Controller  Features

kontroler DMA 

(

direct memory access

przesyła dane z jednego adresu 

do innego, bez interwencji jednostki centralnej procesora (

CPU

), w całym 

zakresie adresów; np. kontroler DMA mo

ż

e zapisywa

ć

 wyniki 

przetwarzania  przetwornika ADC12 do pami

ę

ci RAM

kontroler DMA 

zwi

ę

ksza wydajno

ść

  układów peryferyjnych

wykorzystanie  transferu 

DMA redukuje pobór mocy 

przez mikrokontroler

przez wprowadzenie  CPU w tryb redukcji 

mocy (

low-power mode

), np. u

ś

pienia (

sleep mode

), bez konieczno

ś

ci 

zmiany trybu pracy  przy transmisji danych do/z układów peryferyjnych

MSP430x4xx Family. User’s Guide.

Mixed Signal Products. Texas Instruments, 2007, SLAU056G

MSP430x4xx 

DMA Controller

zapis danych w pami

ę

ci RAM w trybie 

DMA

:

ź

ródłem danych jest 

12-bitowy przetwornik ADC12

12-bitowy przetwornik DAC12

w trybie 8- lub 12-bitowym,

ź

ródłem danych lub układem docelowym  jest 

USART0

(

kontroler standardu 

I2C-Bus, zgodny ze standardem Philips I

2

C, wersja 2.1

)

w trybie podstawowym  (

standard mode, 100 kbps

MAX

lub szybkim (

fast 

mode, 400 kbps

MAX

)

adresowanie 7-bitowe lub 10-bitowe,  

praca w trybie master lub slave,

dwa dedykowane kanały DMA obsługuj

ą

ce 16-bitowy transfer I

2

C

automatyczny transfer danych do pami

ę

ci Flash

– transfer DMA bez 

udziału CPU, niezale

ż

nie od wybranego  trybu redukcji mocy (

low-power 

modes

)

MSP430x4xx Family. User’s Guide.

Mixed Signal Products. Texas Instruments, 2007, SLAU056G

MSP430x4xx 

DMA Controller

Block Diagram

up to three independent 
transfer channels

configurable DMA channel 
priorities
only 2 MCLK clock cycles

byte or word and mixed 
byte/word transfer capability

block sizes up to 65535 bytes 
or words

configurable transfer trigger 
selections
selectable  edge or level-
triggered transfer

four addressing modes

single, block, or burst-block 
transfer modes

Inicjalizacja 

transferu DMA

Wyzwalanie zboczem lub poziomem

transfer DMA 

nie jest 

przerywany 

przez kontroler 

przerwa

ń

 

procesora

MSP430x4xx 

Tryby adresowania DMA

oba stałe adresy

stały adres – adresy bufora

adresy bufora 1 –
– adresy bufora 2

adresy bufora – stały adres

4 tryby adresowania

ka

ż

dy kanał DMA programowany  niezale

ż

nie

Transfer:
– byte-to-byte,

– word-to-word, 

– byte-to-word,
– lub word-to-byte

STM32L053

Direct Memory Access

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

do 7 niezale

ż

nych, programowalnych kanałów DMA (

requests

)

sprz

ę

towe lub programowe wyzwalanie  ka

ż

dego kanału DMA

programowalne 4 poziomy priorytetów transferów DMA (

very high, high, 

medium, low priorities

)

niezale

ż

ne 

ź

ródło (

source

/ przeznaczenie  (

destination

), typ transferu (

byte

half word, word

); prawidłowy  sposób adresowania (so

urce/destination 

addresses must be aligned on the data size

)

wsparcie realizacji bufora kołowego (circular buffer)

3 znaczniki (

DMA Half Transfer, DMA Transfer complete and DMA Transfer 

Error

); logiczny OR dla pojedynczego przerwania ka

ż

dego z kanałów DMA

transfery: memory-to-memory, peripheral-to-memory oraz memory-to-
peripheral i peripheral-to-peripheral transfers (

access to Flash, SRAM, APB 

and AHB peripherals as source and destination

)

2-bajtowa liczba transmitowanych danych (

maksymalnie 65535 transferów

)

STM32  Microcontrollers 

Direct  Memory  Access

http://www.embedds.com/

using-direct-memory-access-dma-in-stm23-projects

Core

ARMv7-M

Ibus

Dbus

System

DMA

AHB

B

u

m

a

tr

ix

Peripherals

Peripherals

do

14 kanałów DMA

(

single unit

w procesorach ST32 

mało 

(

Low

i

ś

rednio 

(

Medium

zło

ż

onych

dwa kontrolery DMA 

z maksymalnie

12

niezale

ż

nymi 

kanałami 

procesorach ST32  

bardzo

(

High

zło

ż

onych

Flash

RAM

APB1

APB2

background image

7

STM32L053

DMA Transfer

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

odczyt 

danych z rejestrów układów peryferyjnych lub komórki pami

ę

ci 

adresowanej wewn

ę

trznym  rejestrem adresowym

adres pocz

ą

tkowy pierwszego transferu DMA 

w rejestrze:

-

DMA_CPARx 

(

peripheral base address of the data register from/to 

which the data will be read/written

)

- or

DMA_CMARx 

(

memory base address area from/to which 

the data will be read/written

)

dekrementacja 16-bitowego rejestru licznikowego 

(

DMA_CNDTRx –

DMA channel x number of data register

po ka

ż

dym transferze danych 

(

post-decrementing

)

STM32L053

DMA Channel x Configuration Register DMA_CCRx 

[1#3]

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

31:15

Reserved

14

MEM2MEM: Memory to memory mode

(

bit set & cleared by software

)

0: Memory to memory mode disabled
1: Memory to memory mode enabled

13:12

PL[1:0]: Channel priority level

(

bits set & cleared by software

)

00: Low

01: Medium

10: High

11: Very high

11:10

MSIZE[1:0]: Memory size

(

bits set & cleared by software

)

00: 8-bits

01: 16-bits

10: 32-bits

11: Reserved

9:8

PSIZE[1:0]: Peripheral size

(

bits set & cleared by software

)

00: 8-bits

01: 16-bits

10: 32-bits

11: Reserved

MINC: Memory increment mode

(

bit set & cleared by so

ftware)

0: Memory increment mode disabled
1: Memory increment mode enabled

STM32L053

DMA Channel x Configuration Register DMA_CCRx 

[2#3]

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

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: Circular mode enabled

4

DIR: Data transfer direction

(

bit set & cleared by software

)

0: Read from peripheral
1: Read from memory

3

TEIE: Transfer error interrupt enable

(

bit set & cleared by software

)

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

STM32L053

DMA Channel x Configuration Register DMA_CCRx 

[3#3]

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

TCIE: Transfer complete interrupt enable

(

bit set & cleared by software

)

0: TC interrupt disabled
1: TC interrupt enabled

0

EN: Channel enable

(

bit set & cleared by software

)

0: Channel disabled
1: Channel enabled

STM32L053

Circular and Memory-to-memory mode 

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

tryb bufora kołowego 

(

Circular mode

do obsługi buforów kołowych (handle 

circular buffers) np. skanowanie przetwornika ADC

odblokowanie  trybu bitem CIRC (

Circular mode

w rejestrze DMA_CCRx (

DMA

Channel x Configuration  Register

)

ą

czenie  trybu automatycznie uaktualnia liczb

ę

 transferów programowan

ą

 w 

trakcie programowania kontrolera DMA

Memory-to-memory mode

– transfer DMA nie musi by

ć

 aktywowany  przez 

urz

ą

dzenie peryferyjne

ustawienie bitu MEM2MEM (

Memory to memory mode

w rejestrze 

DMA_CCRx (

DMA Channel x Configuration Register

), rozpoczyna  transfer 

DMA po ustawieniu bitu  EN (

Channel enable

w rejestrze DMA_CCRx

transfer jest ko

ń

czony je

ś

li zwarto

ść

 rejestru DMA_CNDTRx (

DMA channel x 

number of data register

jest równa 0

tryb Memory-to-Memory mo

ż

e by

ć

 u

ż

yty równolegle  z trybem bufora kołowego

STM32L053

Error management

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

kontroler DMA 

generuje

ą

przy próbie 

odczytu/zapisu z obszaru 

zarezerwowanego

ą

d transmisji automatycznie blokuje  kanał DMA 

(

disabled

i kasuje 

bit 

EN = 0

(

Channel enable

we wła

ś

ciwym  dla tego kanału rejestrze 

konfiguracyjnym 

DMA_CCRx

(

DMA Channel x Configuration Register

)

ą

d transmisji wywołuje przerwanie

ustawiany jest znacznik

TEIF = 1 

(

Channel x transfer error flag

w rejestrze DMA_IFR (

DMA Interrupt 

Requests Register

je

ś

li odblokowane  jest maskowanie przerwania, bit 

TEIE = 1

(

Transfer error interrupt enable

), we wła

ś

ciwym  dla tego kanału 

rejestrze konfiguracyjnym 

DMA_CCRx

(

DMA Channel x Configuration 

Register

)

background image

8

STM32L053

DMA Request

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014, tab. 43

Request

Peri-

Channel

number

pherals

1

2

3

4

5

7

ADC 

ADC 

ADC

SPI1

SPI1

SPI1

_RX

_TX

2

SPI2 

SPI2 

SPI2 

SPI2 

SPI2

_RX

_TX

_RX

_TX

3

USART1

USART1

USART

USART1 USART1

_TX

_RX

_TX

_RX

4

USART2

USART2 USART2

USART2

USART2

_TX

_RX

_RX

_TX

5

LPUART1

LPUART1 LPUART1

LPUART1 LPUART1

_TX

_RX

_RX

_TX

6

I2C1

I2C1

I2C1

I2C1

I2C1_RX

_TX

_RX

_TX

_TX

7

I2C2

I2C2

I2C2

_TX

_RX

8

TIM2

TIM2

TIM2

TIM2

TIM2

TIM2

TIM2_CH2

_CH3

_UP

_CH2

_CH4

_CH1

TIM2_CH4

9

TIM6_UP

TIM6/DAC

/DAC_Ch1

_Ch1

11

AES

AES

AES

AES

AES

_IN

_OUT

_OUT

_IN

Universal Synchronous / Asynchronous  Receiver / Transmitter

Inter-integrated Circuit (I2C) interface

Analog-to-Digital Converter

Low-Power Universal Asynchronous  Receiver / Transmitter

Serial peripheral interface/ inter-IC sound

general-purpose TIMer 2

Advanced  Encryption Standard hardware accelerator

basic TIMer 6

Digital-to-Analog Converter

STM32L053

DMA Request

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014, tab. 43

Request

Peri-

Channel

number

pherals

1

2

3

4

5

7

ADC 

ADC 

ADC

SPI1

SPI1

SPI1

_RX

_TX

2

SPI2 

SPI2 

SPI2 

SPI2 

SPI2

_RX

_TX

_RX

_TX

3

USART1

USART1

USART

USART1 USART1

_TX

_RX

_TX

_RX

4

USART2

USART2 USART2

USART2

USART2

_TX

_RX

_RX

_TX

5

LPUART1

LPUART1 LPUART1

LPUART1 LPUART1

_TX

_RX

_RX

_TX

6

I2C1

I2C1

I2C1

I2C1

I2C1_RX

_TX

_RX

_TX

_TX

7

I2C2

I2C2

I2C2

_TX

_RX

8

TIM2

TIM2

TIM2

TIM2

TIM2

TIM2

TIM2_CH2

_CH3

_UP

_CH2

_CH4

_CH1

TIM2_CH4

9

TIM6_UP

TIM6/DAC

/DAC_Ch1

_Ch1

11

AES

AES

AES

AES

AES

_IN

_OUT

_OUT

_IN

STM32L053

DMA Channel configuration procedure 

[1#2]

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

zaprogramuj:

1.

adres pobieranych 

(

source

danych z wybranego układu 

peryferyjnego 

w rejestrze 

DMA_CPARx

(

DMA peripheral base address 

of the data register from/to which the data will be read/written

); dane 

mog

ą

 by

ć

 tak

ż

e pobierane z pami

ę

ci

2.

adres wysyłanych 

(

destination

)

danych w pami

ę

ci 

w rejestrze 

DMA_CMARx

(

DMA memory base address area from/to which the data 

will be read/written

); dane mog

ą

 by

ć

 tak

ż

e wysyłane do wybranego 

układu peryferyjnego

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 

danych warto

ść

 tego rejestru b

ę

dzie dekrementowana

STM32L053

DMA Channel configuration procedure 

[2#2]

RM0367. Reference manual. Ultra-low-power STM32L0x3 

advanced ARM

®

-based 32-bit MCUs. STMicroelectronics, April 2014

zaprogramuj:

4.

priorytet wybranego kanału

, bity

PL[1:0]

(

channel priority level

rejestrze DMA_CCRx (

DMA Channel x Configuration Register

)

5.

−−−−

kierunek 

transferu danych (

data transfer direction

)

−−−−

transfer w 

trybie bufora kołowego 

(

circular mode

)

−−−−

tryb inkrementacji 

dla układu peryferyjnego / pami

ę

ci (

peripheral & 

memory incremented mode

)

−−−−

rozmiar

transmitowanych danych (

peripheral & memory data size

)

−−−−

typ przerwania 

po połowie lub całym bloku transmitowanych danych 

(

interrupt after half and/or full transfer

w rejestrze DMA_CCRx

(

DMA Channel x Configuration Register

)

uaktywnij 

kanał

DMA

, bit 

ENABLE = 1 

w rejestrze DMA_CCRx (

DMA 

Channel x Configuration Register

)

NXP LPC17xx

AN10878 Migrating to the LPC1700 series.
NXP Semiconductors, App Note, Rev. 01 - 6 October 2009

Multilayer AHB Bus Matrix

Multilayer interconnect

system 

allows

simultaneous operation:

CPU execution from 
on-chip flash

Ethernet DMA

USB DMA

General Purpose DMA

– simultaneous access to

be spread over three
separate SRAMs with no
contention between those
functions 

Problemy i pytania

1. Jaki jest powód wprowadzenie trybu DMA ?

2. Jak opisa

ć

 działanie trybu DMA ?

3. Jaki jest udział jednostki centralnej (CPU) w trybie DMA ?

4. Jakie sygnały steruj

ą

 kontrolerem DMA ?

5. Jakie typy operacji s

ą

 mo

ż

liwe w trybie DMA ?

6. Na czym polega tryb ‘Single Transfer’ ?

7. Na czym polega tryb ‘Block Transfer’ ?

8. Na czym polega tryb ‘Burst-Block Transfer’ ?

Na czym polega tryb ‘Scatter-Gather Transfer’ ?

Jakie s

ą

 ró

ż

nice przy wymianie danych typu: ‘Point-to-Point’ i ‘Point-to-Array’ ?

Jakie s

ą

 ró

ż

nice przy wymianie danych typu: ‘Array-to-Point’ i ‘Array-to-Array’ ?

Na czym polega operacja typu ‘Ping Pong Buffering’ ?

Jakie układy peryferyjne mikrokontrolerów wykorzystuj

ą

 tryb DMA (przykłady) ?

Ile kanałów DMA mo

ż

e równocze

ś

nie transmitowa

ć

 dane ?

Czy tryb DMA sprzyja redukcji mocy w mikrokontrolerach ?