MSP12 DMA

background image

MSP430

DMA

background image

Układ bezpośredniego dostępu do pamięci (Direct Memory Access - DMA)
umożliwia przesyłanie danych spod jednego adresu pod inny adres bez
pośrednictwa jednostki centralnej. Na przykład możliwy jest transfer
danych z rejestrów przetwornika ADC12 do wybranego obszaru pamięci
RAM.

W zależności od modelu mikrokontrolera może on zawierać od jednego do
trzech układów DMA.

Użycie kontrolera DMA może zwiększyć przepustowość danych pomiędzy
peryferiami mikrokontrolera. Może również zmniejszać pobór energii gdyż
na czas działania układu jednostka centralna jest wprowadzana w stan
uśpienia.

background image

Układ DMA na następujące właściwości:
- do trzech niezależnych kanałów transmisyjnych
- wybór konfiguracja priorytetów dla kanałów
- tylko dwa cykle na transfer
- możliwość transmisji bajt, słowo lub bajt/słowo
- blok transmisji danych do 65535 bajtów lub słów
- wybór źródła wyzwalania
- wybór wyzwalania zboczem lub poziomem
- cztery tryby adresowania
- trzy tryby transmisji:
pojedyncza
blokowa
blokowa przerywana

background image

background image

background image

Tryby adresowania

Ustawianie trybów adresowania dla każdego kanału jest niezależne.
- stały adres do stałego adresu:

background image

- Stały adres do bloku adresów

background image

- Blok adresów do stałego adresu

background image

- blok adresów do bloku adresów

background image

background image

Transfer pojedynczy

Znacznik DMASRCINCRx określa, czy adres źródła jest inkrementowany,
dekrementowany czy pozostaje bez zmian.
Znacznik DMADSTINCRx określa, czy adres przeznaczenia jest
inkrementowany, dekrementowany czy pozostaje bez zmian.

Jeżeli następuje transfer słowo – bajt, to przesyłany jest tylko mniej
znaczący bajt słowa.
Jeżeli następuje transfer bajt – słowo, bardziej znaczący bajt słowa jest
zerowany.

Rejestry
DMAxSZ - jest używany do określenia liczby transferów.
DMAxSA – rejestr z adresem źródła.
DMAxDA - rejestr z adresem przeznaczenia.
Jeżeli DMAxSZ = 0, to nie ma transmisji. Zawartości rejestrów DMAxSA,
DMAxDA i DMAxSZ są kopiowane do rejestrów pomocniczych .
Zawartość rejestru DMAxSZ jest dekrementowana po każdej operacji
transferu. Jeżeli stan rejestru po dekrementacji osiągnie 0, to rejestr ten
jest ładowany z rejestru pomocniczego i jest ustawiany znacznik DMAIFG
– start przerwania.
Jeżeli znacznik DMADTx = 0, znacznik DMAEN jest kasowany
automatycznie kiedy DMAxSZ osiągnie wartość 0 i musi być ustawiony
ponownie, by odbył się kolejny transfer.
W trybie powtarzania DMAEN = 1 i transfer następuje po przyjściu
sygnału wyzwalania.

background image

background image

Transfer blokowy


W trybie pracy blokowej jeden sygnał wyzwalający uruchamia przesyłanie
całego bloku danych. W trakcie przesyłania danych inne sygnały
wyzwalające są pomijane. Gdy znacznik DMADTx = 1, po skończonej
transmisji znacznik DMAEN jest zerowany. Przed kolejną transmisją musi
on być ustawiony ponownie.
DMAxSZ – określa liczbę przesłanych danych, DMADSTINCRx
inkrementację/dekrementację adresu przeznaczenia, a DMASRCINCRx –
inkrementację/dekrementację adresu źródła.
Rejestry DMAxSA, DMAxDA, and DMAxSZ pracują tak samo jak przy
przesyłaniu pojedynczym. Znacznik DMAIFG jest ustawiany gdy rejestr
DMAxSZ osiągnie wartość 0.
W trakcie transmisji jest wstrzymywana praca CPU. Trnsmisja blokowa
trwa 2xMCLK x DMAxSZ.
Jeżeli transfer blokowy jest powtarzany cyklicznie to znacznik DMAEN
pozostaje ustawiony po skończonym przesłaniu bloku i układ oczekuje na
następny sygnał wyzwalania.

background image

background image

Transfer blokowy przerywany


W tym trybie układ DMA pracuje na przemian z CPU. CPU wykonuje 2
cykle MCLK po każdy przesłaniu czterech bajtów lub słów. Po skończonej
transmisji znacznik DMAEN jest kasowany. Przed następną transmisją
musi być ponownie ustawiony.
Przychodzące sygnały wyzwalające podczas transferu są ignorowane.
Praca rejestrów i ustawianie znaczników jest takie samo jak podczas
pracy blokowej za wyjątkiem przesyłania ciągu bloków. Po skończeniu
transmisji jednego bloku znacznik DMAEN pozostaje ustawiony i
transmisja kolejnego loku następuje od razu - bez sygnału
wyzwalającego. Przerwanie transmisji może nastąpić poprzez
zerowanie znacznika DMAEN lub przerwanie niemaskowane NMI jeżeli
jest odblokowane.

background image

background image

Rejestr DMAxTSELx

Każdy kanał DMA jest ustawiany niezależnie poprzez wpis odpowiednich
wartości do rejestrów DMAxTSELx. Modyfikacja tych rejestrów może
nastąpić tylko wtedy, gdy odpowiadający im znacznik DMAEN jest
wyzerowany. W przeciwnym przypadku działanie DMA jest
nieprzewidywalne. Układ DMA działa tylko na zbocze narastające sygnału
wyzwalającego z wyjątkiem sygnału zewnętrznego.
Uwaga! Transfer uruchamiany przez wybrany układ struktury
wewnętrznej startuje w momencie ustawienia znacznika przerwania ale
tylko wtedy gdy nie jest ustawiony odpowiedni znacznik odblokowujący
przerwanie. Znacznik przerwania jest automatycznie kasowany po
rozpoczęciu transferu.

0000 - transfer jest wyzwalany po ustawieniu znacznika DMAREQ.
Znacznik jest kasowany

automatycznie po

rozpoczęciu transmisji.
0001 – transfer jest wyzwalany gdy jest ustawiany znacznik CCIFG a
wyzerowany jest

znacznik CCIE rejestru TACCR2. Znacznik

CCIFG jest zerowany automatycznie

po rozpoczęciu transferu.

0010 - transfer jest wyzwalany gdy jest ustawiany znacznik CCIFG a
wyzerowany jest

znacznik CCIE rejestru TBCCR2. Znacznik

CCIFG jest zerowany automatycznie

po rozpoczęciu transferu.

background image

0011 - USART0: transfer jest wyzwalany gdy jest ustawiony znacznik
URXIFG0 a

wyzerowany jest znacznik URXIE0. Znacznik URXIFG0

jest zerowany automatycznie po rozpoczęciu transferu.
- USCI_A0: transfer jest wyzwalany gdy jest ustawiony znacznik
UCA0RXIFG a wyzerowany jest znacznik UCA0RXIE. Znacznik
UCA0RXIFG jest zerowany

automatycznie po rozpoczęciu transferu.

0100 - USART0: transfer jest wyzwalany gdy jest ustawiony znacznik
UTXIFG0 a

wyzerowany jest znacznik UTXIE0. Znacznik UTXIFG0

jest zerowany automatycznie po rozpoczęciu transferu.
- USCI_A0: transfer jest wyzwalany gdy jest ustawiony znacznik
UCA0TXIFG a wyzerowany jest znacznik UCA0TXIE. Znacznik
UCA0TXIFG jest zerowany

automatycznie po rozpoczęciu transferu.

0101 - transfer jest wyzwalany gdy jest ustawiany znacznik DAC12IFG a
wyzerowany jest

znacznik DAC12IE rejestru DAC12_0CTL.

Znacznik DAC12IFG jest zerowany

automatycznie po rozpoczęciu

transferu.
0110 – przy przetwarzaniu dla pojedynczego kanału transfer jest
wyzwalany gdy jest

ustawiany odpowiadający mu znacznik

ADC12IFGx. Przy przetwarzaniu

sekwencyjnym transfer jest

wyzwalany po ustawieniu znacznika ADC12IFGx po

ostatnim

przetworzeniu. Ustawienie znacznika ADC12IFGx programowa nie da
żadnego efektu. Znaczniki ADC12IFGx są automatycznie kasowane gdy

odpowiedni rejestr ADC12MEMx jest odczytywany przez układ

DMA.

background image

0111 - transfer jest wyzwalany gdy jest ustawiany znacznik CCIFG a
wyzerowany jest

znacznik CCIE rejestru TACCR0. Znacznik

CCIFG jest zerowany automatycznie po rozpoczęciu transferu.
1000 - transfer jest wyzwalany gdy jest ustawiany znacznik CCIFG a
wyzerowany jest

znacznik CCIE rejestru TBCCR0. Znacznik

CCIFG jest zerowany automatycznie po

rozpoczęciu transferu.

1001 – transfer jest wyzwalany gdy jest ustawiany znacznik URXIFG1 a
wyzerowany jest

znacznik URXIE1. Znacznik URXIFG1 jest

zerowany automatycznie po

rozpoczęciu transferu.

1010 - transfer jest wyzwalany gdy jest ustawiany znacznik UTXIFG1 a
wyzerowany jest

znacznik UTXIE1. Znacznik UTXIFG1 jest

zerowany automatycznie po

rozpoczęciu transferu.

1011 - transfer jest wyzwalany gdy mnożnik hardware’owy jest gotowy do
nowej operacji
1100 - transfer jest wyzwalany gdy jest ustawiany znacznik UCB0RXIFG
a wyzerowany jest

znacznik UCB0RXIE. Znacznik

UCB0RXIFG jest zerowany automatycznie po rozpoczęciu transferu.
1101 - transfer jest wyzwalany gdy jest ustawiany znacznik UCB0TXIFG a
wyzerowany jest

znacznik UCB0TXIE. Znacznik

UCB0TXIFG jest zerowany automatycznie po rozpoczęciu transferu.
1110 - transfer jest wyzwalany gdy jest ustawiany znacznik DMAxIFG.
Znacznik DMA0IFG

wyzwala kanał 1, znacznik DMA1IFG wyzwala

kanał 2 a znacznik DMA2IFG wyzwala kanał 0. Powyższe znaczniki nie
są kasowane po starcie transferu.
1111 - transfer jest wyzwalany zewnętrznym sygnałem DMAE0.

background image

Wyzwalanie sygnałem zewnętrznym.
Sygnał zewnętrzny wyzwala transfer zboczem narastający gdy znacznik
DMALEVEL = 0. Transfer trwa do momentu przesłania wszystkich
danych. Gdy DMALEVEL = 1 transfer trwa tak długo jak znacznik DMAE0
jest w stanie wysokim. Jeżeli sygnał DMAE0 przyjmuje poziom niski
podczas transferu blokowego, to transfer ten jest przerywany. Ponowne
ustawienie tego znacznika powoduje kontynuację transferu, chyba że
zostały zmodyfikowane rejestry układu DMA.

Wstrzymanie pracy CPU.
Znacznik DMAONFETCH steruje sposobem pracy CPU podczas transferu
przez układ DMA.
Gdy DMAONFETCH = 0 jednostka centralna jest natychmiast
zatrzymywana po rozpoczęciu transferu przez układ DMA. Gdy
DMAONFETCH = 1 jednostka centralna najpierw kończy wykonywanie
instrukcji a dopiero potem jest zatrzymywana i w tym momencie startuje
transfer danych.
Gdy układ DMA realizuje wpis do pamięci flash znacznik DMAONFETCH
musi być ustawiony. W przeciwny przypadku trudno określić przebieg
operacji zapisu.

background image

Zatrzymanie pracy DMA
Pracę DMA można zatrzymać na dwa sposoby:
a. Każdy rodzaj transmisji można zatrzymać przerwaniem

niemaskowalnym NMI gdy w rejestrze DMACTL1 jest ustawiony
znacznik ENNMI.

b. Przerywana praca blokowa może być zatrzymana po wyzerowaniu

znacznika DMAEN.

Priorytety układu DMA
Priorytety dla układu DMA są następujące: DMA0−DMA1−DMA2. Jeżeli
przyjdą równocześnie dwa lub trzy sygnały wyzwalające, to startuje układ
o najwyższym priorytecie. Następnie jest uruchamiany układ o niższym
priorytecie, a na końcu o najniższym priorytecie, niezależnie od trybu
pracy układów DMA. Kanał o wyższym priorytecie czeka na zakończenie
trwającej transmisji kanału o niższym priorytecie.
Priorytety kanałów DMA można ustawiać znacznikiem ROUNDROBIN.
Jeżeli znacznik ten jest ustawiony, to kanał który skończy transmisję
przyjmuje najniższy priorytet. Natomiast układ priorytetów nie ulegają
zmianie, tzn. zachowana jest kolejność: DMA0−DMA1−DMA2.
Priorytety dla kanałów DMA nie mają zastosowania dla procesorów serii
MSP430FG43x.

background image

Liczba cykli transferu.
Układ DMA potrzebuje jednego lub dwóch cykli zegarowych do
synchronizacji przed każdym transferem pojedynczym lub do
zakończenia transferów blokowych. Każde przesłanie bajtu lub słowa
wymaga dwóch cykli MCLK po synchronizacji i jednego cyklu
opóźnienia po transferze. Ponieważ układ DMA jest taktowany sygnałem
MCLK, dlatego szybkość przesyłania zależy od trybu pracy i stanu
generatora , z którego jest pobierany sygnał MCLK.
Jeżeli źródło sygnału MCLK jest aktywne, a CPU jest wyłączone, to
układ DMA używa sygnału MCLK bez uruchamiania CPU. Jeżeli źródło
MCLK jest wyłączone, to układ DMA uruchamia to źródło na czas
transferu, a następnie je wyłącza.

background image

Układ DMA i system przerwań.
Wykonywany przez DMA transfer nie jest przerywany przez przerwanie.
System przerwań oczekuje na koniec transferu. Wyjątkiem jest
przerwanie NMI gdy jest ustawiony znacznik ENNMI.
Natomiast program obsługi przerwania jest przerywany gdy startuje
transfer DMA. Jeżeli wybrana procedura nie może być przerwana przez
układ DMA, to układ ten musi by zablokowany przed uruchomieniem tej
procedury.

Kontroler przerwań DMA
Każdy kanał DMA posiada własny znacznik przerwań DMAIFG. Znacznik
ten jest ustawiony dla dowolnego trybu pracy gdy odpowiadający mu
rejestr DMAxSZ dojdzie do zera. Jeżeli odpowiedni znacznik DMAIE jest
ustawiony i jest odblokowany znacznik ogólny przerwań GIE, jest
generowany sygnał przerwania.
Wszystkie znaczniki mają jeden wspólny wektor przerwań. Należy
programowo sprawdzić który układ DMA uruchomił przerwanie.
Znaczniki przerwań nie są automatycznie kasowane.
Wyjątkiem jest procesor serii MSP430FG461x który posiada rejestr
wektorów przerwań DMAIV wskazujący numer przerwania. Podobnie jak
w układach TimerA itp.

background image


Document Outline


Wyszukiwarka

Podobne podstrony:
2013 w05 DMA HWI 2013zid 28362 Nieznany
13 DMA
ECP DMA Select, ECP DMA Select
Mikrokontrolery STM32 Wykorzystanie ADC i DMA
Sukcesmodul11 dma
Kontroler DMA (2)
MSP12
isa816 eisa pci DMA, Studia, WAT Informatyka 2, semestr IV, systemy wejścia-wyjścia
12 DMA 2015 www
14 kontroler DMA 8237
Przerwania , DMA , itp, PRZERWANIA NIM
2013 w05 DMA HWI 2013zid 28362 Nieznany
13 DMA
Genesis DMA
DMA

więcej podobnych podstron