DCMI for f446re ,ov7670
Dependencies: ILI9341_SPI OV7670_SCCB mbed
DCMI.h
00001 #include "mbed.h" 00002 uint8_t frame_buffer[145][300]={0xff,0xff}; 00003 00004 DMA_HandleTypeDef dcmi_Dma; 00005 DCMI_HandleTypeDef dcmi; 00006 00007 void dcmi_Init(){ 00008 frame_buffer[100][0]=0xFF; 00009 frame_buffer[100][1]=0xFF; 00010 GPIO_InitTypeDef GPIO_InitStruct; 00011 00012 /*Configure GPIO pin : PA8 MCO1 for cam XCLK*/ 00013 HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1); 00014 __GPIOA_CLK_ENABLE(); 00015 GPIO_InitStruct.Pin = GPIO_PIN_8; 00016 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; 00017 GPIO_InitStruct.Pull = GPIO_NOPULL; 00018 GPIO_InitStruct.Speed = GPIO_SPEED_LOW; 00019 GPIO_InitStruct.Alternate = GPIO_AF0_MCO; 00020 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 00021 00022 00023 GPIO_InitTypeDef dcmipinsa,dcmipinsb,dcmipinsc; 00024 dcmipinsa.Pin = GPIO_PIN_4|GPIO_PIN_6; 00025 dcmipinsa.Mode = GPIO_MODE_AF_PP; 00026 dcmipinsa.Pull = GPIO_PULLDOWN; 00027 dcmipinsa.Speed = GPIO_SPEED_HIGH; 00028 dcmipinsa.Alternate = GPIO_AF13_DCMI; 00029 HAL_GPIO_Init(GPIOA, &dcmipinsa); 00030 00031 __GPIOB_CLK_ENABLE(); 00032 dcmipinsb.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; 00033 dcmipinsb.Mode = GPIO_MODE_AF_PP; 00034 dcmipinsb.Pull = GPIO_PULLDOWN; 00035 dcmipinsb.Speed = GPIO_SPEED_HIGH; 00036 dcmipinsb.Alternate = GPIO_AF13_DCMI; 00037 HAL_GPIO_Init(GPIOB, &dcmipinsb); 00038 00039 __GPIOC_CLK_ENABLE(); 00040 dcmipinsc.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_11; 00041 dcmipinsc.Mode = GPIO_MODE_AF_PP; 00042 dcmipinsc.Pull = GPIO_PULLDOWN; 00043 dcmipinsc.Speed = GPIO_SPEED_HIGH; 00044 dcmipinsc.Alternate = GPIO_AF13_DCMI; 00045 HAL_GPIO_Init(GPIOC, &dcmipinsc); 00046 00047 __DMA2_CLK_ENABLE(); 00048 dcmi_Dma.Instance = DMA2_Stream1; 00049 dcmi_Dma.Init.Channel = DMA_CHANNEL_1; 00050 dcmi_Dma.Init.Direction = DMA_PERIPH_TO_MEMORY; 00051 dcmi_Dma.Init.PeriphInc = DMA_PINC_DISABLE; 00052 dcmi_Dma.Init.MemInc = DMA_MINC_ENABLE; 00053 dcmi_Dma.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; 00054 dcmi_Dma.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD ; 00055 dcmi_Dma.Init.Mode = DMA_CIRCULAR; 00056 dcmi_Dma.Init.Priority = DMA_PRIORITY_HIGH; 00057 dcmi_Dma.Init.FIFOMode = DMA_FIFOMODE_ENABLE; 00058 dcmi_Dma.Init.FIFOThreshold =DMA_FIFO_THRESHOLD_FULL; 00059 dcmi_Dma.Init.MemBurst = DMA_PBURST_SINGLE; 00060 dcmi_Dma.Init.PeriphBurst = DMA_PBURST_SINGLE; 00061 00062 HAL_DMA_Init(&dcmi_Dma); 00063 00064 __DCMI_CLK_ENABLE(); 00065 dcmi.Instance = DCMI; 00066 dcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; 00067 dcmi.Init.CaptureRate = DCMI_CR_ALL_FRAME; 00068 dcmi.Init.VSPolarity = DCMI_VSPOLARITY_HIGH; 00069 dcmi.Init.HSPolarity = DCMI_HSPOLARITY_LOW; 00070 dcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING; 00071 dcmi.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE; 00072 dcmi.DMA_Handle = &dcmi_Dma; 00073 HAL_DCMI_Init(&dcmi); 00074 __HAL_DCMI_ENABLE(&dcmi); 00075 HAL_DCMI_Start_DMA(&dcmi, DCMI_MODE_CONTINUOUS, (uint32_t)&frame_buffer,43500/2); 00076 00077 } 00078 00079 00080 00081 00082 00083 00084
Generated on Sat Jul 23 2022 09:21:33 by 1.7.2