30 #ifndef __NIIETCM4_DMA_H
31 #define __NIIETCM4_DMA_H
57 #define CHANNEL_CFG_CYCLE_CTRL_Pos 0
58 #define CHANNEL_CFG_NEXT_USEBURST_Pos 3
59 #define CHANNEL_CFG_N_MINUS_1_Pos 4
60 #define CHANNEL_CFG_R_POWER_Pos 14
61 #define CHANNEL_CFG_SRC_PROT_CTRL_Pos 18
62 #define CHANNEL_CFG_DST_PROT_CTRL_Pos 21
63 #define CHANNEL_CFG_SRC_SIZE_Pos 24
64 #define CHANNEL_CFG_SRC_INC_Pos 26
65 #define CHANNEL_CFG_DST_SIZE_Pos 28
66 #define CHANNEL_CFG_DST_INC_Pos 30
68 #define CHANNEL_CFG_CYCLE_CTRL_Msk ((uint32_t)0x00000007)
69 #define CHANNEL_CFG_NEXT_USEBURST_Msk ((uint32_t)0x00000008)
70 #define CHANNEL_CFG_N_MINUS_1_Msk ((uint32_t)0x00003FF0)
71 #define CHANNEL_CFG_R_POWER_Msk ((uint32_t)0x0003C000)
72 #define CHANNEL_CFG_SRC_PROT_CTRL_Msk ((uint32_t)0x001C0000)
73 #define CHANNEL_CFG_DST_PROT_CTRL_Msk ((uint32_t)0x00E00000)
74 #define CHANNEL_CFG_SRC_SIZE_Msk ((uint32_t)0x03000000)
75 #define CHANNEL_CFG_SRC_INC_Msk ((uint32_t)0x0C000000)
76 #define CHANNEL_CFG_DST_SIZE_Msk ((uint32_t)0x30000000)
77 #define CHANNEL_CFG_DST_INC_Msk ((uint32_t)0xC0000000)
87 #define DMA_Channel_All ((uint32_t)0x00FFFFFF)
93 #define DMA_Channel_UART0_TX ((uint32_t)0x00000001)
94 #define DMA_Channel_UART1_TX ((uint32_t)0x00000002)
95 #define DMA_Channel_UART2_TX ((uint32_t)0x00000004)
96 #define DMA_Channel_UART3_TX ((uint32_t)0x00000008)
97 #define DMA_Channel_UART0_RX ((uint32_t)0x00000010)
98 #define DMA_Channel_UART1_RX ((uint32_t)0x00000020)
99 #define DMA_Channel_UART2_RX ((uint32_t)0x00000040)
100 #define DMA_Channel_UART3_RX ((uint32_t)0x00000080)
101 #define DMA_Channel_ADCSEQ0 ((uint32_t)0x00000100)
102 #define DMA_Channel_ADCSEQ1 ((uint32_t)0x00000200)
103 #define DMA_Channel_ADCSEQ2 ((uint32_t)0x00000400)
104 #define DMA_Channel_ADCSEQ3 ((uint32_t)0x00000800)
105 #define DMA_Channel_ADCSEQ4 ((uint32_t)0x00001000)
106 #define DMA_Channel_ADCSEQ5 ((uint32_t)0x00002000)
107 #define DMA_Channel_ADCSEQ6 ((uint32_t)0x00004000)
108 #define DMA_Channel_ADCSEQ7 ((uint32_t)0x00008000)
109 #define DMA_Channel_SPI0_TX ((uint32_t)0x00010000)
110 #define DMA_Channel_SPI1_TX ((uint32_t)0x00020000)
111 #define DMA_Channel_SPI2_TX ((uint32_t)0x00040000)
112 #define DMA_Channel_SPI3_TX ((uint32_t)0x00080000)
113 #define DMA_Channel_SPI0_RX ((uint32_t)0x00100000)
114 #define DMA_Channel_SPI1_RX ((uint32_t)0x00200000)
115 #define DMA_Channel_SPI2_RX ((uint32_t)0x00400000)
116 #define DMA_Channel_SPI3_RX ((uint32_t)0x00800000)
126 #define DMA_Channel_0 ((uint32_t)0x00000001)
127 #define DMA_Channel_1 ((uint32_t)0x00000002)
128 #define DMA_Channel_2 ((uint32_t)0x00000004)
129 #define DMA_Channel_3 ((uint32_t)0x00000008)
130 #define DMA_Channel_4 ((uint32_t)0x00000010)
131 #define DMA_Channel_5 ((uint32_t)0x00000020)
132 #define DMA_Channel_6 ((uint32_t)0x00000040)
133 #define DMA_Channel_7 ((uint32_t)0x00000080)
134 #define DMA_Channel_8 ((uint32_t)0x00000100)
135 #define DMA_Channel_9 ((uint32_t)0x00000200)
136 #define DMA_Channel_10 ((uint32_t)0x00000400)
137 #define DMA_Channel_11 ((uint32_t)0x00000800)
138 #define DMA_Channel_12 ((uint32_t)0x00001000)
139 #define DMA_Channel_13 ((uint32_t)0x00002000)
140 #define DMA_Channel_14 ((uint32_t)0x00004000)
141 #define DMA_Channel_15 ((uint32_t)0x00008000)
142 #define DMA_Channel_16 ((uint32_t)0x00010000)
143 #define DMA_Channel_17 ((uint32_t)0x00020000)
144 #define DMA_Channel_18 ((uint32_t)0x00040000)
145 #define DMA_Channel_19 ((uint32_t)0x00080000)
146 #define DMA_Channel_20 ((uint32_t)0x00100000)
147 #define DMA_Channel_21 ((uint32_t)0x00200000)
148 #define DMA_Channel_22 ((uint32_t)0x00400000)
149 #define DMA_Channel_23 ((uint32_t)0x00800000)
159 #define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) != (uint32_t)0x000000) && (((CHANNEL) & (uint32_t)0xFF000000) == ((uint32_t)0x0000)))
166 #define IS_GET_DMA_CHANNEL(CHANNEL) (((CHANNEL) == (DMA_Channel_0 || DMA_Channel_UART0_TX)) || \
167 ((CHANNEL) == (DMA_Channel_1 || DMA_Channel_UART1_TX)) || \
168 ((CHANNEL) == (DMA_Channel_2 || DMA_Channel_UART2_TX)) || \
169 ((CHANNEL) == (DMA_Channel_3 || DMA_Channel_UART3_TX)) || \
170 ((CHANNEL) == (DMA_Channel_4 || DMA_Channel_UART0_RX)) || \
171 ((CHANNEL) == (DMA_Channel_5 || DMA_Channel_UART1_RX)) || \
172 ((CHANNEL) == (DMA_Channel_6 || DMA_Channel_UART2_RX)) || \
173 ((CHANNEL) == (DMA_Channel_7 || DMA_Channel_UART3_RX)) || \
174 ((CHANNEL) == (DMA_Channel_8 || DMA_Channel_ADCSEQ0)) || \
175 ((CHANNEL) == (DMA_Channel_9 || DMA_Channel_ADCSEQ1)) || \
176 ((CHANNEL) == (DMA_Channel_10 || DMA_Channel_ADCSEQ2)) || \
177 ((CHANNEL) == (DMA_Channel_11 || DMA_Channel_ADCSEQ3)) || \
178 ((CHANNEL) == (DMA_Channel_12 || DMA_Channel_ADCSEQ4)) || \
179 ((CHANNEL) == (DMA_Channel_13 || DMA_Channel_ADCSEQ5)) || \
180 ((CHANNEL) == (DMA_Channel_14 || DMA_Channel_ADCSEQ6)) || \
181 ((CHANNEL) == (DMA_Channel_15 || DMA_Channel_ADCSEQ7)) || \
182 ((CHANNEL) == (DMA_Channel_16 || DMA_Channel_SPI0_TX)) || \
183 ((CHANNEL) == (DMA_Channel_17 || DMA_Channel_SPI1_TX)) || \
184 ((CHANNEL) == (DMA_Channel_18 || DMA_Channel_SPI2_TX)) || \
185 ((CHANNEL) == (DMA_Channel_10 || DMA_Channel_SPI3_TX)) || \
186 ((CHANNEL) == (DMA_Channel_20 || DMA_Channel_SPI0_RX)) || \
187 ((CHANNEL) == (DMA_Channel_21 || DMA_Channel_SPI1_RX)) || \
188 ((CHANNEL) == (DMA_Channel_22 || DMA_Channel_SPI2_RX)) || \
189 ((CHANNEL) == (DMA_Channel_23 || DMA_Channel_SPI3_RX)))
208 uint32_t CYCLE_CTRL :3;
209 uint32_t NEXT_USEBURST :1;
210 uint32_t N_MINUS_1 :10;
212 uint32_t SRC_PROT_PRIVILEGED :1;
213 uint32_t SRC_PROT_BUFFERABLE :1;
214 uint32_t SRC_PROT_CACHEABLE :1;
215 uint32_t DST_PROT_PRIVILEGED :1;
216 uint32_t DST_PROT_BUFFERABLE :1;
217 uint32_t DST_PROT_CACHEABLE :1;
218 uint32_t SRC_SIZE :2;
220 uint32_t DST_SIZE :2;
259 uint32_t RESERVED0[32];
261 uint32_t RESERVED1[32];
284 #define IS_DMA_MODE(MODE) (((MODE) == DMA_Mode_Disable) || \
285 ((MODE) == DMA_Mode_Basic) || \
286 ((MODE) == DMA_Mode_AutoReq) || \
287 ((MODE) == DMA_Mode_PingPong) || \
288 ((MODE) == DMA_Mode_PrmMemScatGath) || \
289 ((MODE) == DMA_Mode_AltMemScatGath) || \
290 ((MODE) == DMA_Mode_PrmPeriphScatGath) || \
291 ((MODE) == DMA_Mode_AltPeriphScatGath))
316 #define IS_DMA_ARBITRATION_RATE(ARBITRATION_RATE) (((ARBITRATION_RATE) == DMA_ArbitrationRate_1) || \
317 ((ARBITRATION_RATE) == DMA_ArbitrationRate_2) || \
318 ((ARBITRATION_RATE) == DMA_ArbitrationRate_4) || \
319 ((ARBITRATION_RATE) == DMA_ArbitrationRate_8) || \
320 ((ARBITRATION_RATE) == DMA_ArbitrationRate_16) || \
321 ((ARBITRATION_RATE) == DMA_ArbitrationRate_32) || \
322 ((ARBITRATION_RATE) == DMA_ArbitrationRate_64) || \
323 ((ARBITRATION_RATE) == DMA_ArbitrationRate_128) || \
324 ((ARBITRATION_RATE) == DMA_ArbitrationRate_256) || \
325 ((ARBITRATION_RATE) == DMA_ArbitrationRate_512) || \
326 ((ARBITRATION_RATE) == DMA_ArbitrationRate_1024))
354 #define IS_DMA_DATA_SIZE(DATA_SIZE) (((DATA_SIZE) == DMA_DataSize_8) || \
355 ((DATA_SIZE) == DMA_DataSize_16) || \
356 ((DATA_SIZE) == DMA_DataSize_32))
374 #define IS_DMA_DATA_INC(DATA_INC) (((DATA_INC) == DMA_DataInc_8) || \
375 ((DATA_INC) == DMA_DataInc_16) || \
376 ((DATA_INC) == DMA_DataInc_32) || \
377 ((DATA_INC) == DMA_DataInc_Disable))
413 #define IS_DMA_TRANSFERS_TOTAL(TRANSFERS_TOTAL) (((TRANSFERS_TOTAL) <= ((uint32_t)1024)) && ((TRANSFERS_TOTAL) >= ((uint32_t)1)))
459 #define IS_DMA_STATE(STATE) (((STATE) == DMA_State_Free) || \
460 ((STATE) == DMA_State_ReadConfigData) || \
461 ((STATE) == DMA_State_ReadSrcDataEndPtr) || \
462 ((STATE) == DMA_State_ReadDstDataEndPtr) || \
463 ((STATE) == DMA_State_ReadSrcData) || \
464 ((STATE) == DMA_State_WriteDstData) || \
465 ((STATE) == DMA_State_WaitReq) || \
466 ((STATE) == DMA_State_Pause) || \
467 ((STATE) == DMA_State_Done) || \
468 ((STATE) == DMA_State_PeriphScatGath))
FunctionalState DMA_ReqMask
DMA_Protect_TypeDef DMA_SrcProtect
Защита шины при чтении из источника или записи в приемник через DMA.
uint32_t * DMA_SrcDataEndPtr
void DMA_Init(DMA_Init_TypeDef *DMA_InitStruct)
Инициализация контроллера DMA.
DMA_Mode_TypeDef DMA_Mode
void DMA_UseBurstCmd(uint32_t DMA_Channel, FunctionalState State)
Установка пакетного обмена каналов DMA.
Тип, описывающий структуру канала DMA.
FunctionalState
Описывает логическое состояние периферии. Используется для операций включения/выключения периферийных...
void DMA_ReqMaskCmd(uint32_t DMA_Channel, FunctionalState State)
Маскирование каналов DMA.
DMA_State_TypeDef
Возможные состояния конечного автомата управления контроллером DMA.
FunctionalState DMA_PrmAlt
void DMA_ChannelStructInit(DMA_ChannelInit_TypeDef *DMA_ChannelInitStruct)
Заполнение каждого члена структуры DMA_ChannelInitStruct значениями по умолчанию. ...
uint32_t * DMA_DstDataEndPtr
FunctionalState PRIVELGED
DMA_ConfigStruct_TypeDef ALT_DATA
void DMA_SWRequestCmd(uint32_t DMA_Channel)
Программный запрос на осуществление передач DMA по выбранным каналам.
DMA_Mode_TypeDef
Выбор режима работы DMA.
FunctionalState DMA_WaitOnReqStatus(uint32_t DMA_Channel)
Показывает поддерживает ли канал одиночные SREQ запросы.
void DMA_ChannelInit(DMA_Channel_TypeDef *DMA_Channel, DMA_ChannelInit_TypeDef *DMA_ChannelInitStruct)
Инициализация канала DMA.
DMA_Protect_TypeDef DMA_Protection
DMA_DataSize_TypeDef
Разрядность данных источника или приемника
void DMA_ChannelEnableCmd(uint32_t DMA_Channel, FunctionalState State)
Активация каналов DMA.
Битовый доступ к регистру CHANNEL_CFG в DMA_Channel_TypeDef.
void DMA_HighPriorityCmd(uint32_t DMA_Channel, FunctionalState State)
Установка высокого приоритета каналов DMA.
DMA_ArbitrationRate_TypeDef DMA_ArbitrationRate
void DMA_ChannelDeInit(DMA_Channel_TypeDef *DMA_Channel)
Деинициализация канала DMA.
DMA_DataInc_TypeDef DMA_DstDataInc
FunctionalState DMA_UseBurst
Совокупность из основной и управляющей структур DMA. Общий размер 1 кБ.
uint32_t DMA_TransfersTotal
FunctionalState CACHEABLE
_CHANNEL_CFG_bits CHANNEL_CFG_bit
void DMA_ClearErrorStatus()
Сброс флага ошибки на шине.
DMA_Protect_TypeDef DMA_DstProtect
OperationStatus
Описывает коды возврата для функций при выполнении какой-либо операции.
void DMA_PrmAltCmd(uint32_t DMA_Channel, FunctionalState State)
Установка первичной/альтернативной управляющей структуры каналов DMA.
void DMA_BasePtrConfig(uint32_t BasePtr)
Установка базового адреса управляющих каналов.
FunctionalState DMA_MasterEnableStatus()
Состояние контроллера DMA.
DMA_DataSize_TypeDef DMA_DstDataSize
Это главный заголовочный файл драйвера, обычно включаемый в main.c.
void DMA_ProtectionConfig(DMA_Protect_TypeDef *DMA_Protection)
Управление защитой шины при обращении DMA к управляющим данным.
OperationStatus DMA_ErrorStatus()
Показывает наличие ошибки на шине.
DMA_DataSize_TypeDef DMA_SrcDataSize
DMA_DataInc_TypeDef DMA_SrcDataInc
DMA_ArbitrationRate_TypeDef
Выбор количества передач до выполнения переарбитрации.
FunctionalState DMA_HighPriority
FunctionalState BUFFERABLE
Структура инициализации канала DMA.
FunctionalState DMA_NextUseburst
void DMA_DeInit()
Деинициализация контроллера DMA.
void DMA_StructInit(DMA_Init_TypeDef *DMA_InitStruct)
Заполнение каждого члена структуры DMA_InitStruct значениями по умолчанию.
void DMA_MasterEnableCmd(FunctionalState State)
Разрешения работы контроллера DMA.
DMA_State_TypeDef DMA_StateStatus()
Доступ к текущему конечного автомата контроллера DMA.
Структура инициализации контроллера DMA.
DMA_ConfigStruct_TypeDef PRM_DATA
DMA_DataInc_TypeDef
Шаг инкремента адреса источника при чтении или приемника при записи
FunctionalState DMA_ChannelEnable
Управляющая структура данных DMA.