8000 stm32/dcmi: Add F4/F7/H7 hal files and dma definitions for DCMI periph. · andrewleech/micropython@84f4d58 · GitHub
[go: up one dir, main page]

Skip to content

Commit 84f4d58

Browse files
pi-anldpgeorge
authored andcommitted
stm32/dcmi: Add F4/F7/H7 hal files and dma definitions for DCMI periph.
1 parent a270364 commit 84f4d58

File tree

4 files changed

+35
-0
lines changed

4 files changed

+35
-0
lines changed

ports/stm32/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,8 @@ endif
320320
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4 f7 h7))
321321
SRC_HAL += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
322322
hal_sdram.c \
323+
hal_dma_ex.c \
324+
hal_dcmi.c \
323325
)
324326
endif
325327

ports/stm32/dma.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,27 @@ static const DMA_InitTypeDef dma_init_struct_dac = {
140140
};
141141
#endif
142142

143+
#if MICROPY_HW_ENABLE_DCMI
144+
static const DMA_InitTypeDef dma_init_struct_dcmi = {
145+
#if defined(STM32H7)
146+
.Request = DMA_REQUEST_DCMI,
147+
#else
148+
.Channel = DMA_CHANNEL_1,
149+
#endif
150+
.Direction = DMA_PERIPH_TO_MEMORY,
151+
.PeriphInc = DMA_PINC_DISABLE,
152+
.MemInc = DMA_MINC_ENABLE,
153+
.PeriphDataAlignment = DMA_PDATAALIGN_WORD,
154+
.MemDataAlignment = DMA_MDATAALIGN_WORD,
155+
.Mode = DMA_NORMAL,
156+
.Priority = DMA_PRIORITY_HIGH,
157+
.FIFOMode = DMA_FIFOMODE_ENABLE,
158+
.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL,
159+
.MemBurst = DMA_MBURST_INC4,
160+
.PeriphBurst = DMA_PBURST_SINGLE
161+
};
162+
#endif
163+
143164
#if defined(STM32F0)
144165

145166
#define NCONTROLLERS (2)
@@ -226,6 +247,9 @@ const dma_descr_t dma_I2C_1_TX = { DMA1_Stream6, DMA_CHANNEL_1, dma_id_6, &dma
226247
#if defined(STM32F7) && defined(SDMMC2) && MICROPY_HW_HAS_SDCARD
227248
const dma_descr_t dma_SDMMC_2 = { DMA2_Stream0, DMA_CHANNEL_11, dma_id_8, &dma_init_struct_sdio };
228249
#endif
250+
#if MICROPY_HW_ENABLE_DCMI
251+
const dma_descr_t dma_DCMI_0 = { DMA2_Stream1, DMA_CHANNEL_1, dma_id_9, &dma_init_struct_dcmi };
252+
#endif
229253
const dma_descr_t dma_SPI_1_RX = { DMA2_Stream2, DMA_CHANNEL_3, dma_id_10, &dma_init_struct_spi_i2c };
230254
const dma_descr_t dma_SPI_5_RX = { DMA2_Stream3, DMA_CHANNEL_2, dma_id_11, &dma_init_struct_spi_i2c };
231255
#if defined(MICROPY_HW_HAS_SDCARD) && MICROPY_HW_HAS_SDCARD
@@ -380,6 +404,9 @@ const dma_descr_t dma_I2C_1_TX = { DMA1_Stream7, DMA_REQUEST_I2C1_TX, dma_id_7,
380404
const dma_descr_t dma_I2C_2_TX = { DMA1_Stream7, DMA_REQUEST_I2C2_TX, dma_id_7, &dma_init_struct_spi_i2c };
381405

382406
// DMA2 streams
407+
#if MICROPY_HW_ENABLE_DCMI
408+
const dma_descr_t dma_DCMI_0 = { DMA2_Stream1, DMA_REQUEST_DCMI, dma_id_9, &dma_init_struct_dcmi };
409+
#endif
383410
const dma_descr_t dma_SPI_1_RX = { DMA2_Stream2, DMA_REQUEST_SPI1_RX, dma_id_10, &dma_init_struct_spi_i2c };
384411
const dma_descr_t dma_SPI_5_RX = { DMA2_Stream3, DMA_REQUEST_SPI5_RX, dma_id_11, &dma_init_struct_spi_i2c };
385412
const dma_descr_t dma_SPI_4_RX = { DMA2_Stream3, DMA_REQUEST_SPI4_RX, dma_id_11, &dma_init_struct_spi_i2c };

ports/stm32/dma.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ extern const dma_descr_t dma_SPI_1_TX;
5656
extern const dma_descr_t dma_SDMMC_2;
5757
extern const dma_descr_t dma_SPI_6_RX;
5858
extern const dma_descr_t dma_SDIO_0;
59+
extern const dma_descr_t dma_DCMI_0;
5960

6061
#elif defined(STM32L4)
6162

ports/stm32/mpconfigboard_common.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@
6767
#define MICROPY_HW_ENABLE_DAC (0)
6868
#endif
6969

70+
// Whether to enable the DCMI peripheral
71+
#ifndef MICROPY_HW_ENABLE_DCMI
72+
#define MICROPY_HW_ENABLE_DCMI (0)
73+
#endif
74+
7075
// Whether to enable USB support
7176
#ifndef MICROPY_HW_ENABLE_USB
7277
#define MICROPY_HW_ENABLE_USB (0)

0 commit comments

Comments
 (0)
0