DMA interrupt flag clear register (DMA_IFCR)

Регистр сброса флага статуса прерываний от каналов DMA

Смещение (Address offset): 0x04

Reset value: 0x0000'0000

3130292827262524
Reserved CTEIF7 CHTIF7 CTCIF7 CGIF7
------------wwww
00000000
2322212019181716
CTEIF6 CHTIF6 CTCIF6 CGIF6 CTEIF5 CHTIF5 CTCIF5 CGIF5
wwwwwwww
00000000


15141312111098
CTEIF4 CHTIF4 CTCIF4 CGIF4 CTEIF3 CHTIF3 CTCIF3 CGIF3
wwwwwwww
00000000
76543210
CTEIF2 CHTIF2 CTCIF2 CGIF2 CTEIF1 CHTIF1 CTCIF1 CGIF1
wwwwwwww
00000000


Регистр позволяет для каждого канала сбрасывать флаги трёх отдельных событий (регистр DMA_ISR), генерирующих прерывания:

- TE - transfer error: ошибка передачи данных в канале DMA;

- HT - half transfer: передана половина из общего количества данных, назначенных к передаче в канале DMA;

- TC - transfer complete: передача данных в канале DMA завершена.

Отдельный бит (CGIF - global interrupt clear) сбрасывает одновременно глобальный флаг и флаги всех трёх вышеперечисленных событий.

Назначение флагов в регистре идентично для всех каналов. Расшифровка приведена для 7 канала. Регистр доступен только для записи.

В контроллере DMA2 доступны только пять каналов: каналы 6 и 7 недоступны.

Bits 31:28
Reserved
Reserved, must be kept at reset value
Зарезервировано. Должно быть сохранено значение после сброса
Bit 27
CTEIF7
Channel 7 transfer error clear
Сброс флага ошибки передачи в 7 канале DMA

 0 : нет действия.

 1 : сброс флага ошибки передачи данных (TE - transfer error) в 7 канале.

Bit 26
CHTIF7
Channel 7 half transfer clear
Сброс флага передачи половины данных в 7 канале DMA

 0 : нет действия.

 1 : сброс флага передачи половины из общего количества данных, назначенных к передаче (HT - half transfer) в 7 канале.

Bit 25
CTCIF7
Channel 7 transfer complete clear
Сброс флага окончания передачи данных в 7 канале DMA

 0 : нет действия.

 1 : сброс флага окончания передачи данных (TC - transfer complete) в 7 канале.

Bit 24
CGIF7
Channel 7 global interrupt clear
Сброс флагов всех событий в 7 канале DMA

 0 : нет действия.

 1 : сброс одновременно глобального флага (GIF) и флагов всех трёх событий: TE, HT и TC в 7 канале.



/*******************  Bit definition for DMA_IFCR register  *******************/
#define  DMA_IFCR_CGIF1                      ((uint32_t)0x00000001)        /* Channel 1 Global interrupt clear */
#define  DMA_IFCR_CTCIF1                     ((uint32_t)0x00000002)        /* Channel 1 Transfer Complete clear */
#define  DMA_IFCR_CHTIF1                     ((uint32_t)0x00000004)        /* Channel 1 Half Transfer clear */
#define  DMA_IFCR_CTEIF1                     ((uint32_t)0x00000008)        /* Channel 1 Transfer Error clear */
#define  DMA_IFCR_CGIF2                      ((uint32_t)0x00000010)        /* Channel 2 Global interrupt clear */
#define  DMA_IFCR_CTCIF2                     ((uint32_t)0x00000020)        /* Channel 2 Transfer Complete clear */
#define  DMA_IFCR_CHTIF2                     ((uint32_t)0x00000040)        /* Channel 2 Half Transfer clear */
#define  DMA_IFCR_CTEIF2                     ((uint32_t)0x00000080)        /* Channel 2 Transfer Error clear */
#define  DMA_IFCR_CGIF3                      ((uint32_t)0x00000100)        /* Channel 3 Global interrupt clear */
#define  DMA_IFCR_CTCIF3                     ((uint32_t)0x00000200)        /* Channel 3 Transfer Complete clear */
#define  DMA_IFCR_CHTIF3                     ((uint32_t)0x00000400)        /* Channel 3 Half Transfer clear */
#define  DMA_IFCR_CTEIF3                     ((uint32_t)0x00000800)        /* Channel 3 Transfer Error clear */
#define  DMA_IFCR_CGIF4                      ((uint32_t)0x00001000)        /* Channel 4 Global interrupt clear */
#define  DMA_IFCR_CTCIF4                     ((uint32_t)0x00002000)        /* Channel 4 Transfer Complete clear */
#define  DMA_IFCR_CHTIF4                     ((uint32_t)0x00004000)        /* Channel 4 Half Transfer clear */
#define  DMA_IFCR_CTEIF4                     ((uint32_t)0x00008000)        /* Channel 4 Transfer Error clear */
#define  DMA_IFCR_CGIF5                      ((uint32_t)0x00010000)        /* Channel 5 Global interrupt clear */
#define  DMA_IFCR_CTCIF5                     ((uint32_t)0x00020000)        /* Channel 5 Transfer Complete clear */
#define  DMA_IFCR_CHTIF5                     ((uint32_t)0x00040000)        /* Channel 5 Half Transfer clear */
#define  DMA_IFCR_CTEIF5                     ((uint32_t)0x00080000)        /* Channel 5 Transfer Error clear */
#define  DMA_IFCR_CGIF6                      ((uint32_t)0x00100000)        /* Channel 6 Global interrupt clear */
#define  DMA_IFCR_CTCIF6                     ((uint32_t)0x00200000)        /* Channel 6 Transfer Complete clear */
#define  DMA_IFCR_CHTIF6                     ((uint32_t)0x00400000)        /* Channel 6 Half Transfer clear */
#define  DMA_IFCR_CTEIF6                     ((uint32_t)0x00800000)        /* Channel 6 Transfer Error clear */
#define  DMA_IFCR_CGIF7                      ((uint32_t)0x01000000)        /* Channel 7 Global interrupt clear */
#define  DMA_IFCR_CTCIF7                     ((uint32_t)0x02000000)        /* Channel 7 Transfer Complete clear */
#define  DMA_IFCR_CHTIF7                     ((uint32_t)0x04000000)        /* Channel 7 Half Transfer clear */
#define  DMA_IFCR_CTEIF7                     ((uint32_t)0x08000000)        /* Channel 7 Transfer Error clear */