NIIETCM4 PD  v0.10.5
Драйвер периферии для микроконтроллеров на базе ядра ARM Cortex-M4
 Указатель Структуры данных Файлы Функции Переменные Перечисления Элементы перечислений Группы Страницы
niietcm4_dma.h
См. документацию.
1 
29 /* Define to prevent recursive inclusion -------------------------------------*/
30 #ifndef __NIIETCM4_DMA_H
31 #define __NIIETCM4_DMA_H
32 
33 /* Start of section using anonymous unions */
34 #if defined (__CC_ARM)
35  #pragma push
36  #pragma anon_unions
37 #endif
38 
39 #ifdef __cplusplus
40  extern "C" {
41 #endif
42 
43 /* Includes ------------------------------------------------------------------*/
44 #include "niietcm4.h"
45 
63 #define CHANNEL_CFG_CYCLE_CTRL_Pos 0
64 #define CHANNEL_CFG_NEXT_USEBURST_Pos 3
65 #define CHANNEL_CFG_N_MINUS_1_Pos 4
66 #define CHANNEL_CFG_R_POWER_Pos 14
67 #define CHANNEL_CFG_SRC_PROT_CTRL_Pos 18
68 #define CHANNEL_CFG_DST_PROT_CTRL_Pos 21
69 #define CHANNEL_CFG_SRC_SIZE_Pos 24
70 #define CHANNEL_CFG_SRC_INC_Pos 26
71 #define CHANNEL_CFG_DST_SIZE_Pos 28
72 #define CHANNEL_CFG_DST_INC_Pos 30
74 #define CHANNEL_CFG_CYCLE_CTRL_Msk ((uint32_t)0x00000007)
75 #define CHANNEL_CFG_NEXT_USEBURST_Msk ((uint32_t)0x00000008)
76 #define CHANNEL_CFG_N_MINUS_1_Msk ((uint32_t)0x00003FF0)
77 #define CHANNEL_CFG_R_POWER_Msk ((uint32_t)0x0003C000)
78 #define CHANNEL_CFG_SRC_PROT_CTRL_Msk ((uint32_t)0x001C0000)
79 #define CHANNEL_CFG_DST_PROT_CTRL_Msk ((uint32_t)0x00E00000)
80 #define CHANNEL_CFG_SRC_SIZE_Msk ((uint32_t)0x03000000)
81 #define CHANNEL_CFG_SRC_INC_Msk ((uint32_t)0x0C000000)
82 #define CHANNEL_CFG_DST_SIZE_Msk ((uint32_t)0x30000000)
83 #define CHANNEL_CFG_DST_INC_Msk ((uint32_t)0xC0000000)
93 #define DMA_Channel_All ((uint32_t)0x00FFFFFF)
99 #define DMA_Channel_0 ((uint32_t)0x00000001)
100 #define DMA_Channel_1 ((uint32_t)0x00000002)
101 #define DMA_Channel_2 ((uint32_t)0x00000004)
102 #define DMA_Channel_3 ((uint32_t)0x00000008)
103 #define DMA_Channel_4 ((uint32_t)0x00000010)
104 #define DMA_Channel_5 ((uint32_t)0x00000020)
105 #define DMA_Channel_6 ((uint32_t)0x00000040)
106 #define DMA_Channel_7 ((uint32_t)0x00000080)
107 #define DMA_Channel_8 ((uint32_t)0x00000100)
108 #define DMA_Channel_9 ((uint32_t)0x00000200)
109 #define DMA_Channel_10 ((uint32_t)0x00000400)
110 #define DMA_Channel_11 ((uint32_t)0x00000800)
111 #define DMA_Channel_12 ((uint32_t)0x00001000)
112 #define DMA_Channel_13 ((uint32_t)0x00002000)
113 #define DMA_Channel_14 ((uint32_t)0x00004000)
114 #define DMA_Channel_15 ((uint32_t)0x00008000)
115 #define DMA_Channel_16 ((uint32_t)0x00010000)
116 #define DMA_Channel_17 ((uint32_t)0x00020000)
117 #define DMA_Channel_18 ((uint32_t)0x00040000)
118 #define DMA_Channel_19 ((uint32_t)0x00080000)
119 #define DMA_Channel_20 ((uint32_t)0x00100000)
120 #define DMA_Channel_21 ((uint32_t)0x00200000)
121 #define DMA_Channel_22 ((uint32_t)0x00400000)
122 #define DMA_Channel_23 ((uint32_t)0x00800000)
132 #define DMA_Channel_UART0_TX DMA_Channel_0
133 #define DMA_Channel_UART1_TX DMA_Channel_1
134 #define DMA_Channel_UART2_TX DMA_Channel_2
135 #define DMA_Channel_UART3_TX DMA_Channel_3
136 #define DMA_Channel_UART0_RX DMA_Channel_4
137 #define DMA_Channel_UART1_RX DMA_Channel_5
138 #define DMA_Channel_UART2_RX DMA_Channel_6
139 #define DMA_Channel_UART3_RX DMA_Channel_7
140 #define DMA_Channel_ADCSEQ0 DMA_Channel_8
141 #define DMA_Channel_ADCSEQ1 DMA_Channel_9
142 #define DMA_Channel_ADCSEQ2 DMA_Channel_10
143 #define DMA_Channel_ADCSEQ3 DMA_Channel_11
144 #define DMA_Channel_ADCSEQ4 DMA_Channel_12
145 #define DMA_Channel_ADCSEQ5 DMA_Channel_13
146 #define DMA_Channel_ADCSEQ6 DMA_Channel_14
147 #define DMA_Channel_ADCSEQ7 DMA_Channel_15
148 #define DMA_Channel_SPI0_TX DMA_Channel_16
149 #define DMA_Channel_SPI1_TX DMA_Channel_17
150 #define DMA_Channel_SPI2_TX DMA_Channel_18
151 #define DMA_Channel_SPI3_TX DMA_Channel_19
152 #define DMA_Channel_SPI0_RX DMA_Channel_20
153 #define DMA_Channel_SPI1_RX DMA_Channel_21
154 #define DMA_Channel_SPI2_RX DMA_Channel_22
155 #define DMA_Channel_SPI3_RX DMA_Channel_23
165 #define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) != (uint32_t)0x000000) && (((CHANNEL) & (uint32_t)0xFF000000) == ((uint32_t)0x0000)))
166 
167 
172 #define IS_GET_DMA_CHANNEL(CHANNEL) (((CHANNEL) == (DMA_Channel_0)) || \
173  ((CHANNEL) == (DMA_Channel_1)) || \
174  ((CHANNEL) == (DMA_Channel_2)) || \
175  ((CHANNEL) == (DMA_Channel_3)) || \
176  ((CHANNEL) == (DMA_Channel_4)) || \
177  ((CHANNEL) == (DMA_Channel_5)) || \
178  ((CHANNEL) == (DMA_Channel_6)) || \
179  ((CHANNEL) == (DMA_Channel_7)) || \
180  ((CHANNEL) == (DMA_Channel_8)) || \
181  ((CHANNEL) == (DMA_Channel_9)) || \
182  ((CHANNEL) == (DMA_Channel_10)) || \
183  ((CHANNEL) == (DMA_Channel_11)) || \
184  ((CHANNEL) == (DMA_Channel_12)) || \
185  ((CHANNEL) == (DMA_Channel_13)) || \
186  ((CHANNEL) == (DMA_Channel_14)) || \
187  ((CHANNEL) == (DMA_Channel_15)) || \
188  ((CHANNEL) == (DMA_Channel_16)) || \
189  ((CHANNEL) == (DMA_Channel_17)) || \
190  ((CHANNEL) == (DMA_Channel_18)) || \
191  ((CHANNEL) == (DMA_Channel_10)) || \
192  ((CHANNEL) == (DMA_Channel_20)) || \
193  ((CHANNEL) == (DMA_Channel_21)) || \
194  ((CHANNEL) == (DMA_Channel_22)) || \
195  ((CHANNEL) == (DMA_Channel_23)))
196 
213 typedef struct {
214  uint32_t CYCLE_CTRL :3;
215  uint32_t NEXT_USEBURST :1;
216  uint32_t N_MINUS_1 :10;
217  uint32_t R_POWER :4;
218  uint32_t SRC_PROT_PRIVILEGED :1;
219  uint32_t SRC_PROT_BUFFERABLE :1;
220  uint32_t SRC_PROT_CACHEABLE :1;
221  uint32_t DST_PROT_PRIVILEGED :1;
222  uint32_t DST_PROT_BUFFERABLE :1;
223  uint32_t DST_PROT_CACHEABLE :1;
224  uint32_t SRC_SIZE :2;
225  uint32_t SRC_INC :2;
226  uint32_t DST_SIZE :2;
227  uint32_t DST_INC :2;
229 
234 typedef struct
235 {
236  uint32_t SRC_DATA_END;
237  uint32_t DST_DATA_END;
238  union
239  {
240  uint32_t CHANNEL_CFG;
242  };
243  uint32_t RESERVED;
245 
250 typedef struct
251 {
254 
262 typedef struct
263 {
265  uint32_t RESERVED0[32];
267  uint32_t RESERVED1[32];
269 
274 typedef enum
275 {
285 
290 #define IS_DMA_MODE(MODE) (((MODE) == DMA_Mode_Disable) || \
291  ((MODE) == DMA_Mode_Basic) || \
292  ((MODE) == DMA_Mode_AutoReq) || \
293  ((MODE) == DMA_Mode_PingPong) || \
294  ((MODE) == DMA_Mode_PrmMemScatGath) || \
295  ((MODE) == DMA_Mode_AltMemScatGath) || \
296  ((MODE) == DMA_Mode_PrmPeriphScatGath) || \
297  ((MODE) == DMA_Mode_AltPeriphScatGath))
298 
303 typedef enum
304 {
317 
322 #define IS_DMA_ARBITRATION_RATE(ARBITRATION_RATE) (((ARBITRATION_RATE) == DMA_ArbitrationRate_1) || \
323  ((ARBITRATION_RATE) == DMA_ArbitrationRate_2) || \
324  ((ARBITRATION_RATE) == DMA_ArbitrationRate_4) || \
325  ((ARBITRATION_RATE) == DMA_ArbitrationRate_8) || \
326  ((ARBITRATION_RATE) == DMA_ArbitrationRate_16) || \
327  ((ARBITRATION_RATE) == DMA_ArbitrationRate_32) || \
328  ((ARBITRATION_RATE) == DMA_ArbitrationRate_64) || \
329  ((ARBITRATION_RATE) == DMA_ArbitrationRate_128) || \
330  ((ARBITRATION_RATE) == DMA_ArbitrationRate_256) || \
331  ((ARBITRATION_RATE) == DMA_ArbitrationRate_512) || \
332  ((ARBITRATION_RATE) == DMA_ArbitrationRate_1024))
333 
338 typedef struct
339 {
344 
349 typedef enum
350 {
355 
360 #define IS_DMA_DATA_SIZE(DATA_SIZE) (((DATA_SIZE) == DMA_DataSize_8) || \
361  ((DATA_SIZE) == DMA_DataSize_16) || \
362  ((DATA_SIZE) == DMA_DataSize_32))
363 
368 typedef enum
369 {
375 
380 #define IS_DMA_DATA_INC(DATA_INC) (((DATA_INC) == DMA_DataInc_8) || \
381  ((DATA_INC) == DMA_DataInc_16) || \
382  ((DATA_INC) == DMA_DataInc_32) || \
383  ((DATA_INC) == DMA_DataInc_Disable))
384 
389 typedef struct
390 {
414 
419 #define IS_DMA_TRANSFERS_TOTAL(TRANSFERS_TOTAL) (((TRANSFERS_TOTAL) <= ((uint32_t)1024)) && ((TRANSFERS_TOTAL) >= ((uint32_t)1)))
420 
425 typedef struct
426 {
427  uint32_t DMA_Channel;
441 
446 typedef enum
447 {
460 
465 #define IS_DMA_STATE(STATE) (((STATE) == DMA_State_Free) || \
466  ((STATE) == DMA_State_ReadConfigData) || \
467  ((STATE) == DMA_State_ReadSrcDataEndPtr) || \
468  ((STATE) == DMA_State_ReadDstDataEndPtr) || \
469  ((STATE) == DMA_State_ReadSrcData) || \
470  ((STATE) == DMA_State_WriteDstData) || \
471  ((STATE) == DMA_State_WaitReq) || \
472  ((STATE) == DMA_State_Pause) || \
473  ((STATE) == DMA_State_Done) || \
474  ((STATE) == DMA_State_PeriphScatGath))
475 
489 void DMA_ChannelDeInit(DMA_Channel_TypeDef* DMA_Channel);
490 void DMA_ChannelInit(DMA_Channel_TypeDef* DMA_Channel, DMA_ChannelInit_TypeDef* DMA_ChannelInitStruct);
491 void DMA_ChannelStructInit(DMA_ChannelInit_TypeDef* DMA_ChannelInitStruct);
492 
501 void DMA_DeInit(void);
502 void DMA_Init(DMA_Init_TypeDef* DMA_InitStruct);
503 void DMA_StructInit(DMA_Init_TypeDef* DMA_InitStruct);
504 
513 void DMA_BasePtrConfig(uint32_t BasePtr);
514 void DMA_ProtectionConfig(DMA_Protect_TypeDef *DMA_Protection);
516 void DMA_SWRequestCmd(uint32_t DMA_Channel);
517 void DMA_UseBurstCmd(uint32_t DMA_Channel, FunctionalState State);
518 void DMA_ReqMaskCmd(uint32_t DMA_Channel, FunctionalState State);
519 void DMA_ChannelEnableCmd(uint32_t DMA_Channel, FunctionalState State);
520 void DMA_PrmAltCmd(uint32_t DMA_Channel, FunctionalState State);
521 void DMA_HighPriorityCmd(uint32_t DMA_Channel, FunctionalState State);
522 
534 FunctionalState DMA_WaitOnReqStatus(uint32_t DMA_Channel);
536 void DMA_ClearErrorStatus(void);
537 
546 #ifdef __cplusplus
547 }
548 #endif
549 
550 /* -------------------- End of section using anonymous unions ------------------- */
551 #if defined(__CC_ARM)
552  #pragma pop
553 #endif
554 
555 #endif /* __NIIETCM4_DMA_H */
556 
565 /******************* (C) COPYRIGHT 2015 NIIET *****END OF FILE****/
FunctionalState DMA_ReqMask
Definition: niietcm4_dma.h:432
OperationStatus
Описывает коды возврата для функций при выполнении какой-либо операции.
Definition: niietcm4.h:185
DMA_Protect_TypeDef DMA_SrcProtect
Definition: niietcm4_dma.h:401
Защита шины при чтении из источника или записи в приемник через DMA.
Definition: niietcm4_dma.h:338
void DMA_Init(DMA_Init_TypeDef *DMA_InitStruct)
Инициализация контроллера DMA.
Definition: niietcm4_dma.c:195
DMA_Mode_TypeDef DMA_Mode
Definition: niietcm4_dma.h:393
void DMA_UseBurstCmd(uint32_t DMA_Channel, FunctionalState State)
Установка пакетного обмена каналов DMA.
Definition: niietcm4_dma.c:324
void DMA_ClearErrorStatus(void)
Сброс флага ошибки на шине.
Definition: niietcm4_dma.c:524
Тип, описывающий структуру канала DMA.
Definition: niietcm4_dma.h:234
void DMA_ReqMaskCmd(uint32_t DMA_Channel, FunctionalState State)
Маскирование каналов DMA.
Definition: niietcm4_dma.c:349
DMA_State_TypeDef
Возможные состояния конечного автомата управления контроллером DMA.
Definition: niietcm4_dma.h:446
FunctionalState DMA_MasterEnableStatus(void)
Состояние контроллера DMA.
Definition: niietcm4_dma.c:455
FunctionalState DMA_PrmAlt
Definition: niietcm4_dma.h:434
void DMA_ChannelStructInit(DMA_ChannelInit_TypeDef *DMA_ChannelInitStruct)
Заполнение каждого члена структуры DMA_ChannelInitStruct значениями по умолчанию. ...
Definition: niietcm4_dma.c:146
FunctionalState PRIVELGED
Definition: niietcm4_dma.h:340
DMA_ConfigStruct_TypeDef ALT_DATA
Definition: niietcm4_dma.h:266
void DMA_SWRequestCmd(uint32_t DMA_Channel)
Программный запрос на осуществление передач DMA по выбранным каналам.
Definition: niietcm4_dma.c:308
DMA_Mode_TypeDef
Выбор режима работы DMA.
Definition: niietcm4_dma.h:274
FunctionalState DMA_WaitOnReqStatus(uint32_t DMA_Channel)
Показывает поддерживает ли канал одиночные SREQ запросы.
Definition: niietcm4_dma.c:478
void DMA_ChannelInit(DMA_Channel_TypeDef *DMA_Channel, DMA_ChannelInit_TypeDef *DMA_ChannelInitStruct)
Инициализация канала DMA.
Definition: niietcm4_dma.c:102
DMA_State_TypeDef DMA_StateStatus(void)
Доступ к текущему конечного автомата контроллера DMA.
Definition: niietcm4_dma.c:441
DMA_Protect_TypeDef DMA_Protection
Definition: niietcm4_dma.h:429
DMA_DataSize_TypeDef
Разрядность данных источника или приемника
Definition: niietcm4_dma.h:349
void DMA_ChannelEnableCmd(uint32_t DMA_Channel, FunctionalState State)
Активация каналов DMA.
Definition: niietcm4_dma.c:373
Битовый доступ к регистру CHANNEL_CFG в DMA_Channel_TypeDef.
Definition: niietcm4_dma.h:213
void DMA_HighPriorityCmd(uint32_t DMA_Channel, FunctionalState State)
Установка высокого приоритета каналов DMA.
Definition: niietcm4_dma.c:421
DMA_ArbitrationRate_TypeDef DMA_ArbitrationRate
Definition: niietcm4_dma.h:399
void DMA_ChannelDeInit(DMA_Channel_TypeDef *DMA_Channel)
Деинициализация канала DMA.
Definition: niietcm4_dma.c:87
DMA_DataInc_TypeDef DMA_DstDataInc
Definition: niietcm4_dma.h:411
uint32_t DMA_Channel
Definition: niietcm4_dma.h:427
FunctionalState DMA_UseBurst
Definition: niietcm4_dma.h:430
Совокупность из основной и управляющей структур DMA. Общий размер 1 кБ.
Definition: niietcm4_dma.h:262
FunctionalState CACHEABLE
Definition: niietcm4_dma.h:342
_CHANNEL_CFG_bits CHANNEL_CFG_bit
Definition: niietcm4_dma.h:241
DMA_Protect_TypeDef DMA_DstProtect
Definition: niietcm4_dma.h:403
void DMA_PrmAltCmd(uint32_t DMA_Channel, FunctionalState State)
Установка первичной/альтернативной управляющей структуры каналов DMA.
Definition: niietcm4_dma.c:397
void DMA_BasePtrConfig(uint32_t BasePtr)
Установка базового адреса управляющих каналов.
Definition: niietcm4_dma.c:231
OperationStatus DMA_ErrorStatus(void)
Показывает наличие ошибки на шине.
Definition: niietcm4_dma.c:503
FunctionalState
Описывает логическое состояние периферии. Используется для операций включения/выключения периферийных...
Definition: niietcm4.h:169
DMA_DataSize_TypeDef DMA_DstDataSize
Definition: niietcm4_dma.h:407
Это главный заголовочный файл драйвера, обычно включаемый в main.c.
void DMA_ProtectionConfig(DMA_Protect_TypeDef *DMA_Protection)
Управление защитой шины при обращении DMA к управляющим данным.
Definition: niietcm4_dma.c:243
DMA_DataSize_TypeDef DMA_SrcDataSize
Definition: niietcm4_dma.h:405
DMA_DataInc_TypeDef DMA_SrcDataInc
Definition: niietcm4_dma.h:409
void DMA_DeInit(void)
Деинициализация контроллера DMA.
Definition: niietcm4_dma.c:174
DMA_ArbitrationRate_TypeDef
Выбор количества передач до выполнения переарбитрации.
Definition: niietcm4_dma.h:303
FunctionalState DMA_HighPriority
Definition: niietcm4_dma.h:436
FunctionalState BUFFERABLE
Definition: niietcm4_dma.h:341
Структура инициализации канала DMA.
Definition: niietcm4_dma.h:389
FunctionalState DMA_NextUseburst
Definition: niietcm4_dma.h:395
void DMA_StructInit(DMA_Init_TypeDef *DMA_InitStruct)
Заполнение каждого члена структуры DMA_InitStruct значениями по умолчанию.
Definition: niietcm4_dma.c:212
void DMA_MasterEnableCmd(FunctionalState State)
Разрешения работы контроллера DMA.
Definition: niietcm4_dma.c:287
Структура инициализации контроллера DMA.
Definition: niietcm4_dma.h:425
DMA_ConfigStruct_TypeDef PRM_DATA
Definition: niietcm4_dma.h:264
DMA_DataInc_TypeDef
Шаг инкремента адреса источника при чтении или приемника при записи
Definition: niietcm4_dma.h:368
FunctionalState DMA_ChannelEnable
Definition: niietcm4_dma.h:438
Управляющая структура данных DMA.
Definition: niietcm4_dma.h:250