DCMI for f446re ,ov7670

Dependencies:   ILI9341_SPI OV7670_SCCB mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DCMI.h Source File

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