Вы находитесь на странице: 1из 7

Chapitre

Le Bloc EXTI

Chapitre

Le Bloc EXTI

Bus masters GP DMA 1 GP Ethernet DMA DMA 2


USB Transfer Requests From Periphs To DMAs APB1 Peripherals APB2 Peripherals

Cortex-M3
Instructions Bus

DMA

Chapitre
Contrleurs DMA usage gnral (GP-DMA) dans les microcontrleurs STM32 (Famille F1)
Par Damergi Emir

Data Bus

System B

AHB Periph.

Embedded SRAM System SRAM (2K) D Flash I Figure -1 : Bus slaves


Data only Instructions only Data + Instructions

On voit bien que le processeur cortex-M3 peut accder aux instructions dans les mmoires Flash, SRAM systme (system SRAM) et la SRAM embarque (embedded SRAM). Pour les donnes, elles peuvent se trouver dans les diffrentes mmoires cites ainsi quau niveau des priphriques et peuvent tre accdes aussi bien par le processeur que par les 2 DMAs. Grce larchitecture en matrice du bus, il est possible deffectuer plusieurs transferts

1. Introduction
Comme tous les systmes processeurs, les microcontrleurs STM32 (famille F1) sont dots de contrleurs DMAs : 1 GP-DMA pour les low density et medium density devices. 2 GP-DMA pour les High density devices. 4 pour les connectivity line devices : 2GP-DMA et 2 contrleurs DMA ddis (SP-DMA) respectivement aux transferts vers et depuis les priphriques de communication Ethernet et USB. Ces Contrleurs DMA se partagent avec le Cortex-M3 un bus en matrice (multi AHB bus matrix) et permettent diffrentes combinaisons de transfert entre mmoires et priphriques (Figure 1).

simultans. Ainsi on peut avoir, par exemple, paralllement: Un accs du Cortex-M3 la mmoire Flash pour rcuprer des instructions (Inst bus). Un accs du DMA1 la mmoire Flash pour transfrer des donnes vers la mmoire SRAM embarque. Un accs du DMA2 la mmoire SRAM systme pour transfrer des donnes vers les priphriques.

Donc en bien choisissant les emplacements de stockage des donnes, les matres et les esclaves impliqus dans les transferts, on peut viter au maximum les conflits daccs une mme ressource et par consquent atteindre des performances optimales.

2. Les DMA usage gnral du STM32


Les 2 GP-DMA sont : DMA 1 : disponible dans toutes les versions de la famille F1 et il est capable de grer jusqu

Chapitre

Le Bloc EXTI

Chapitre

Le Bloc EXTI

7 canaux possdant des niveaux de priorits matrielles fixes (Fixed hardware priority) par dfaut (Figure 3) qui peuvent tre reconfigurs par soft. Les priphriques pouvant mettre une requte de transfert aux diffrents canaux sont nombreux (Figure 3), mais un instant donn un seul priphrique par canal est autoris mettre une requte. Le transfert ne peut commencer si le signal de requte et le canal sont actifs Pour effectuer un transfert dune mmoire un autre, cest le signal MEM2MEM qui doit tre activ, et ceci ne peut se faire que par programmation soft (Figure 3). Dans ce cas le transfert sera lanc directement si le canal est actif. DMA 2 : disponible dans toutes les versions de la famille F1 lexception des low density devices qui ne contiennent que le DMA1. Le DMA 2 a les mmes proprits que le DMA 1 et est capable de grer jusqu 5 canaux (Figure 4).

Figure -4 : Liste des requtes des canaux du DMA2

3. Registres des canaux des GP-DMA


En plus des registres (2 par DMA) permettant de grer les interruptions (paragraphe 5), Chaque Canal contient 4 Registres (Figure 5): DMA_CCRx 1(DMA Channel x Configuration Register) : Cest un registre 32 bits, mais uniquement 15 bits sont utiliss pour activer et configurer le canal (paramtres du transfert). DMA_CPARx (DMA Channel x Peripheral Address Register) : cest un registre 32 bits qui contient ladresse dun registre dun priphrique (ou dun emplacement mmoire si on effectue un transfert mmoire mmoire) reprsentant ladresse source ou bien destination du transfert en fonction du sens du transfert dtermin par le registre DMA-CCRx DMA_CMARx (DMA Channel x Memory Address Register) : cest un registre 32 bits qui contient ladresse dun emplacement mmoire (ou dun registre dun priphrique si on effectue un transfert de priphrique priphrique) reprsentant ladresse source ou bien destination du transfert. Ceci dpend du sens du transfert qui peut tre dtermin par le Figure -3 : Liste des requtes des canaux du DMA1 registre DMA-CCRx. DMA_CNDTRx (DMA Channel x Number of Data Register) : cest un registre 32 bits, uniquement les 16 bits poids faible sont utiliss pour indiquer le nombre dunits de donnes
1

x dnotant le numro du canal, donc de 1 7 pour le DMA1 et de 1 5 pour le DMA2

Chapitre

Le Bloc EXTI

Chapitre

Le Bloc EXTI

transfrer, donc un maximum de 65535 units. Lunit pouvant tre 8, 16 ou 32 bits et est dtermine galement par le registre DMA_CCRx.
31.15 Not used DMA (Channel x) DMA_CMARx DMA_CNDTRx Data size Enable DMA_CRRx Transfer Direction Periph. DMA_CPARx 1 4 mem2 mem 1 3 Registre DMA_CCRx 1 2 1 1 MSIZE 1 0 9 8 PSIZE 7 MINC 6 PINC 5 CIRC 4 DIR 3
Interrupts

1
ENABLE

0 Channel ENABLE

bit

Pririty Level

// Voir parag 5
uint32_t DMA_M2M; uint32_t DMA_Priority; uint32_t DMA_MemoryDataSize;

Mmoire

Bridge

uint32_t DMA_PeripheralDataSize; uint32_t DMA_MemoryInc; uint32_t DMA_PeripheralInc; uint32_t DMA_Mode;

Figure -5 :

4. Registres & configuration des canaux GP-DMA


Dans cette partie, on prsentera paralllement les registres des DMA et la signification de leurs contenus ainsi que structures et fonctions de la librairie Firmware ST permettant de les manipuler dune faon transparente. Ceci permet de choisir entre une programmation par accs directe aux registres ou bien en utilisant la librairie ST. Ci-dessous, une correspondance entre les diffrents paramtres de la structure

uint32_t DMA_DIR;

DMA_InitTypeDef;

Pour la configuration du DMA au niveau du code C (aprs activation de lhorloge) : 1On commence par dclarer une structure de type DMA_InitTypeDef DMA_InitStructure ;

DMA_InitTypeDef relative au DMA (faisant partie de la librairie Firmaware ST) et le contenu des registres prsents prcdemment. On prsentera ensuite la signification des paramtres. typedef struct {
Registre DMA_CPAR_x

DMA_InitTypeDef 2-

Il est toujours conseill de rinitialiser le priphrique

DMA_Deinit (DMAy_Channelx, &DMA_InitStructure) ; 3On initialise le canal x du DMA y avec les paramtres en invoquant la fonction

uint32_t DMA_PeripheralBaseAddr;

31.0 Bit

// voir parag3 (DMA_CPARx)

DMA_Init (DMAy_Channelx, &DMA_InitStructure) ; 4On active le canal par mise 1 du bit ENABLE (Un 0 dsactive le DMA)

Registre DMA_CMAR_x

DMA_Cmd (DMAy_Channelx, ENABLE); // pour dsactiver, on utilise pour le 2me paramtre // la valeur DISABLE

uint32_t DMA_MemoryBaseAddr;

31.0 Bit

// voir parag3 (DMA_CMARx)

Registre DMA_CNDTRx 31.......16 15....0 Bit

Toujours 0 uint32_t DMA__BufferSize;


// voir parag3 (DMA_CNDTRx)

Chapitre

Le Bloc EXTI

Chapitre

Le Bloc EXTI

Pour chacun des paramtres, on prsente ci-dessous la signification ainsi que les valeurs possibles quil peut prendre.
Proprit (Firmware Library) Bit (s) DMA_CCRx Signification La valeur permet de dterminer si le transfert doit tre effectu entre 2 mmoires ou non Transfert entre 2 mmoires. Dans ce cas la proprit DMA_PeripheralBaseAddr qui prend la valeur du registre DMA_CPARx reprsente ladresse dune zone mmoire. DMA_M2M_Enable 1 Mem. DMA (Channel x) DMA_CMARx DMA_CPARx DMA_MemoryInc_Disable 0 DMA_MemoryInc_Enable 1

Indique si les adresses de la zone pointe par

DMA_MemoryInc

Bit 7

DMA_MemoryBaseAddr =DMA_CMARx doivent tre automatiquement incrmentes aprs chaque transfert. Incrmentation automatique de ladresse. Dans ce cas, si DMA_MemoryBaseAddr = X et DMA__BufferSize = Y. Alors le DMA commence par un transfert depuis ou vers ladresse X, ensuite incrmente ladresse aprs chaque transfert X+1, X+2,.X+Y. Donc, jusqu transfrer la totalit des donnes du Buffer. Paralllement DMA__BufferSize est dcrment. Aucune incrmentation. Cest gnralement le cas quand on lit partir dune adresse unique (DMA__BufferSize = 1).

DMA_M2M

Bit 14

DMA_PeripheralInc
DMA_M2M_Disable 0 Transfert entre un priphrique et une zone mmoire ou bien entre deux priphriques. Le Niveau de priorit attribu par programmation au canal. Si deux canaux ont le mme niveau de priorit, DMA_PeripheralInc_Disable DMA_PeripheralInc_Enable

Bit 6
1 0

Mme proprit que DMA_MemoryInc , mais pour la zone pointe par DMA_PeripheralBaseAddr Incrmentation automatique. Pas dincrmentation. Indique si le mode buffer circulaire est utilis. Le mode circulaire est utilis. Dans ce mode, une fois la dernire donne est transfre (ladresse X+Y), alors ladresse sera automatiquement rinitialise X et DMA__BufferSize Y. Rq: Ce mode ne peut tre utilis dans un transfert de mmoire mmoire (pour DMA_M2M = 1). Mode normal : aucune rinitialisation de ladresse

DMA_Priority

Bits 13, 12

alors cest la Fixed Hardware Priority (voir Parag 2) qui dtermine le canal le plus prioritaire. 4 niveaux sont possibles :

DMA_Mode

Bit5

DMA_Priority_VeryHigh DMA_Priority_High DMA_Priority_Medium DMA_Priority_Low

11 10 01 00

Trs haute priorit Haute priorit Priorit moyenne Priorit faible La taille dune unit de donnes de la zone pointe par le registre DMA_CMARx. Elle peut tre : 1 byte (8 bits) demi mot (16 bits) 1 mot (32 bits) La taille dune unit de donnes de la zone pointe par le registre DMA_CPARx. Elle peut tre : 1 byte (8 bits) demi mot (16 bits) 1 mot (32 bits) Remarques : DMA_DIR_PeripheralSRC 0 DMA_DIR_PeripheralDST 1 DMA_Mode_Normal 0 DMA_Mode_Circular 1

DMA_MemoryDataSize 2
DMA_MemoryDataSize_Byte DMA_MemoryDataSize_HalfWord DMA_MemoryDataSize_Word

Bits 11, 10
00 01 10

aprs un cycle de transfert de la totalit du buffer (Y units de donnes). DMA__BufferSize sera 0.

DMA_DIR

Bit 4

Indique la direction du transfert. Zone pointe par DMA_PeripheralBaseAddr est la destination. Zone pointe par DMA_PeripheralBaseAddr est la source.

DMA_PeripheralDataSize

Bits 9, 8
00 01 10

DMA_PeripheralDataSize_Byte DMA_PeripheralDataSize_HalfWord DMA_PeripheralDataSize_Word

Le changement dune proprit (donc laccs un registre) ne peut se faire que si le canal est dsactiv.

Si les tailles des zones source et destination sont diffrentes, consulter Paragraphe 6

Chapitre

Le Bloc EXTI

Chapitre

Le Bloc EXTI

5. Les interruptions relatives au transfert DMA


Chaque canal DMA peut tre configur pour gnrer une interruption pour un ou une combinaison des 3 vnements suivants: Transfer Error (TE) : Une erreur de transfert sest produite. Ca peut tre cause dun accs une zone mmoire rserve, ou un problme daccs au bus, etc En cas derreur de transfert, le canal sera automatiquement dsactiv par hardware. Half Transfer (HT) : La moiti des donnes a t transfre (DMA__BufferSize/2 units). Transfer Complete (TC) : La totalit des donnes a t transfre (DMA__BufferSize units).

1- Le registre DMA_ISR (DMA Interrupt Status Register) qui contient ltat des sources dinterruptions (IF : Interrupt Flag) de tous les canaux du DMA (4 bits pour chaque canal) et ne peut tre accd quen lecture :

Figure - 6 : Registre DMA_ISR Lactivation de ces sources dinterruptions se fait par la mise 1 des bits correspondants (Bits 3,2 et 1) dans le registre de configuration DMA_CCRx, un 0 pour les dsactiver :
4 3 TEIE 2 HTIE 1 TCIE 0 bit

Pour chaque canal x (x=1..7 pour DMA1 et x = 1..5 pour DMA2) : TEIFx, HTIFx et TCIFx chacun indiquant respectivement les tats des vnements (Transfer Error, Half Transfer et Transfer Complete). 1 si lvnement est a eu lieu, 0 sinon. GIFx (Global Interrupt Flag) est mis 1 si une ou plusieurs des 3 sources dinterruptions sont actives.

Bit 1 TCIE : Transfer Complete Interrupt Enable Bit 2 HTIE : Half Transfer Interrupt Enable Bit 3 TEIE : Transfer Error Interrupt Enable

Toutes les sources dinterruptions par canal ont une unique entre au niveau du contrleur dinterruptions NVIC et sont connectes au NIVIC comme suit (Figure 7)

DMA_ISR Register

DMA_CCRx Register

NVIC Register

Au niveau de la librairie Firmware ST, la fonction permettant daccder ces bits est : void DMA_ITConfig (param1, param2, param3) param1 tant le canal configurer ayant la syntaxe DMAy_Channelx (y : Nr DMA et x du canal). param2 spcifie les sources dinterruptions activer ou dsactiver et peut tre lune ou une combinaison (ou logique : | ) des valeurs suivantes : DMA_IT_TC, DMA_IT_HT et DMA_IT_TE. param3 prend la valeur ENABLED pour activer les sources dinterruptions et DISABLED pour les dsactiver. Exemple : pour activer les sources relatives au transfer complete et half transfer et dsactiver la source relative au transfer error du canal 5 du DMA2: DMA_ITConfig (DMA2_Channel5, DMA_IT_TC | DMA_IT_HT, ENABLE); DMA_ITConfig (DMA2_Channel5, DMA_IT_TE, DISABLE);

(Channel x)

DMAy Channelx Interrupt Enable bit

OR OR

&

&

&

INT (NVIC)

Figure 7 : Dclenchement des Interruptions relatives au DMA

Donc, pour quune interruption relative un canal x donn se dclenche, il faut que : Le canal DMA soit activ (bit EN du registre DMA_CCRx). Au moins, une parmi les sources dinterruptions autorises (bits TEIE, HTIE, TCIE du registre DMA_CCRx), se dclenche. Linterruption relative au canal soit autorise au niveau du NVIC. Ceci se fait par mise 1 du bit correspondant dans le registre de masquage du NVIC (ou bien en passant par la structure

En plus de ces bits, deux registres par DMA sont utiliss pour la gestion des sources dinterruptions :

NVIC_InitStructure avec NVIC_IRQChannel = DMAy_Channelx_IRQn y : le nr du DMA ; x : le nr du canal) voir chapitre

10

Chapitre

Le Bloc EXTI

Par consquent, lors du dclenchement dune interruption relative un canal x, on ne peut dterminer directement la source de lvnement actif puisque toutes les 3 activent la mme ligne dinterruption au niveau du NVIC. Il faut donc commencer par consulter le registre DMA_ISR pour dterminer connatre quelle source parmi celles autorises a dclench linterruption. Pour la lecture de ltat dune source dinterruption dun canal x, soit on accde directement au bit (le registre fait partie de la zone Bit Banding), ou bien on peut utiliser une fonction de la STM32 Firmware Library :

DMA_GetITStatus ( uint32_t DMA_IT )


Qui retourne vrai si le bit est 1, faux sinon. Pour le paramtre DMA_IT, il sagit du bit lire. La syntaxe utilise est la suivante DMAy_IT_ABx: y tant le numro du DMA, x le numro du canal AB le Type de lvnement qui peut tre (GL : Global, TC : Transfer Complete, HT : Half Transfer et TE : Transfer Error). Une fois linterruption servie, il faut remettre 0 la source dinterruption dans le registre DMA_ISR. Mais, tant donn que ce registre ne peut tre accd quen lecture, lopration dcriture se fait par le biais dun autre registre (voir paragraphe suivant).

2-

Le registre DMA_IFCR (DMA Interrupt Flag Clear Register) qui a exactement la mme

structure que le registre DMA_ISR (Figure 8). La mise 1 dun bit du registre DMA_IFCR a comme effet de remettre 0 le bit correspondant dans le registre DMA_ISR.

Figure -8 : Registre DMA_IFCR La mise 1 dun bit peut se faire par accs direct ou en utilisant la fonction du Firmware Library :

DMA_ClearITPendingBit (uint32_t DMA_IT )


Cette fonction na pas de valeur de retour et elle prend comme paramtre DMA_IT comme pour la fonction DMA_GetITStatus ( ). En ce qui concerne le gestionnaire dinterruptions, relatif au canal x du DMA y et ajouter au niveau du fichier stm32f10x_it.c, il doit porter le nom : DMAy_ChannelxIRQHandler ( )

11

RM0008

DMA controller (DMA)

DMA controller (DMA) Table 60.


Offset
0x04C

RM0008

10.4.7

DMA register map


The following table gives the DMA register map and the reset values.

DMA register map and reset values (continued)


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PA[31:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MEM2MEM 0 0 0 0 0 0 M SIZE [1:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MA[31:0] Reserved PSIZE [1:0] MINC CIRC PINC HTIE 0 0 0 0 TEIE PL [1:0] 0 0 0 0 0 0 0 0 0 0 0 0 M SIZE [1:0] TCIE 0 0 0 0 TCIE 0 0 0 0 TCIE 0 0 0 0 DIR Reserved 0 Reserved 0 PA[31:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MEM2MEM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MA[31:0] Reserved PSIZE [1:0] MINC CIRC PINC TEIE PL [1:0] 0 0 0 0 0 0 0 0 0 0 0 0 M SIZE [1:0] HTIE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NDT[15:0] 0 DIR Reserved 0 Reserved 0 PA[31:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MEM2MEM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MA[31:0] Reserved PSIZE [1:0] MINC CIRC PINC TEIE PL [1:0] 0 0 0 0 0 0 0 0 0 0 0 0 HTIE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NDT[15:0] 0 DIR Reserved 0 Reserved 0 PA[31:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 MA[31:0] Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NDT[15:0] 0

Register
DMA_CPAR4 Reset value DMA_CMAR4 Reset value

Table 60.
Offset
0x000

DMA register map and reset values


31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0x050 0x054 HTIF7 HTIF6 HTIF5 HTIF4 HTIF3 HTIF2 HTIF1 TCIF7 TCIF6 TCIF5 TCIF4 TCIF3 TCIF2 TCIF1 TEIF4 TEIF3 TEIF2 TEIF7 TEIF6 TEIF5 TEIF1 GIF4 GIF3 GIF2 GIF7 GIF6 GIF5 GIF1

Register
DMA_ISR Reset value DMA_IFCR Reset value

Reserved

0 CTEIF7

0 CHTIF7

0 CTCIF7

0 CGIF7

0 CTEIF6

0 CHTIF6

0 CTCIF6

0 CGIF6

0 CTEIF5

0 CHTIF5

0 CTCIF5

0 CGIF5

0 CTEIF4

0 CHTIF4

0 CTCIF4

0 CGIF4

0 CTEIF3

0 CHTIF3

0 CTCIF3

0 CGIF3

0 CTEIF2

0 CHTIF2

0 CTCIF2

0 CGIF2

0 CTEIF1

0 CHTIF1

0 CTCIF1

0 CGIF1

0x058

DMA_CCR5

0x004

Reserved

Reset value 0x05C 0x060 0x064 DMA_CNDTR5 Reset value DMA_CPAR5 Reset value DMA_CMAR5 Reset value

0 MEM2MEM

0 M SIZE [1:0]

0 PSIZE [1:0]

0 MINC

0 PINC

0 CIRC

0 TEIE

0 HTIE

0 TCIE

0x008

DMA_CCR1

Reserved

PL [1:0] 0 0 0 0 0 0 0 0 0 0 0 0

DIR

Reset value 0x00C 0x010 0x014 0x018 DMA_CNDTR1 Reset value DMA_CPAR1 Reset value DMA_CMAR1 Reset value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserved 0 PA[31:0] 0 0 0 0

0 0 0 0 MEM2MEM

0 0 0 0 M SIZE [1:0]

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

EN

0 0x068 0 0 0 0x070 0x06C

NDT[15:0]

DMA_CCR6

MA[31:0] Reset value DMA_CNDTR6 Reset value DMA_CPAR6 Reset value DMA_CMAR6 Reset value

PSIZE [1:0]

MINC

CIRC

PINC

HTIE

TEIE

0x01C

DMA_CCR2

Reserved

PL [1:0] 0 0 0 0 0 0 0 0 0 0 0 0

TCIE

DIR

EN

0x074 0x078

Reset value 0x020 0x024 0x028 0x02C DMA_CNDTR2 Reset value DMA_CPAR2 Reset value DMA_CMAR2 Reset value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserved 0 PA[31:0] 0 0 0 0

0 0 0 0 MEM2MEM

0 0 0 0 M SIZE [1:0]

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0x07C 0 0 0 0x084 0x080

NDT[15:0]

DMA_CCR7

MA[31:0] Reset value DMA_CNDTR7 Reset value DMA_CPAR7 Reset value DMA_CMAR7 Reset value

PSIZE [1:0]

MINC

CIRC

PINC

HTIE

TEIE

0x030

DMA_CCR3

Reserved

PL [1:0] 0 0 0 0 0 0 0 0 0 0 0 0

TCIE

DIR

EN

0x088 0x08C

Reset value 0x034 0x038 0x03C 0x040 DMA_CNDTR3 Reset value DMA_CPAR3 Reset value DMA_CMAR3 Reset value 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Reserved 0 PA[31:0] 0 0 0 0

0 0 0 0 MEM2MEM

0 0 0 0 M SIZE [1:0]

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

0 0x090 0 0 0

NDT[15:0]

Refer to Register boundary addresses table.

MA[31:0]

PSIZE [1:0]

MINC

CIRC

PINC

HTIE

TEIE

0x044

DMA_CCR4

Reserved

PL [1:0] 0 0 0 0 0 0

TCIE

DIR

Reset value 0x048 DMA_CNDTR4 Reset value Reserved 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

NDT[15:0] 0

Doc ID 13902 Rev 10

199/1003

EN

200/1003

Doc ID 13902 Rev 10

EN 0

EN 0

EN 0