2017-11-01 02:23 PM
Hello,
I am trying to capture data from ov7670 camera using DCMI and display it on LCD(later I want add some image processing). I'm storing image in QCIF format on internal RAM and then I'm sending it to LCD.
So far only LCD is working, but I cannot make camera working. When I'm trying to display captured image I'm always getting something similar to this:
Stripes on image changes colors and sometimes there are some noises.
Maybe there is problem with DCMI or camera registers configuration?
Here is DCMI configuration:
/**DCMI GPIO Configuration
PE4 ------> DCMI_D4 PE5 ------> DCMI_D6 PE6 ------> DCMI_D7 PA4 ------> DCMI_HSYNC PA6 ------> DCMI_PIXCK PC6 ------> DCMI_D0 PC7 ------> DCMI_D1 PC8 ------> DCMI_D2 PC9 ------> DCMI_D3 PB6 ------> DCMI_D5 PB7 ------> DCMI_VSYNC */ GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF13_DCMI; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF13_DCMI; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF13_DCMI; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF13_DCMI; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);/* DCMI DMA Init */
/* DCMI Init */ hdma_dcmi.Instance = DMA2_Stream1; hdma_dcmi.Init.Channel = DMA_CHANNEL_1; hdma_dcmi.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_dcmi.Init.PeriphInc = DMA_PINC_DISABLE; hdma_dcmi.Init.MemInc = DMA_MINC_ENABLE; hdma_dcmi.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; hdma_dcmi.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; hdma_dcmi.Init.Mode = DMA_CIRCULAR; hdma_dcmi.Init.Priority = DMA_PRIORITY_HIGH; hdma_dcmi.Init.FIFOMode = DMA_FIFOMODE_ENABLE; hdma_dcmi.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_1QUARTERFULL; hdma_dcmi.Init.PeriphBurst = DMA_PBURST_SINGLE;Rest of a code in attachment.
Thank you for help
#ov7670 #stm32f4 #dcmi #stm32f4-ov7670 #stm32f4-dcmi2017-11-01 05:42 PM
Not a whole lot of camera talent on the forum.
Looks like the raster length is wrong. You could try playing with that so the display straightens out. If this were my issue I'd inspect the rasters and bit maps, looking to see if any of the data in them was consistent or provided any insight.
2017-11-01 11:13 PM
Not being a camera specialist, after reading the specs, I would break the problem in small pieces.
1. Are you able to draw a white border rectangle on black background at the edge of the LCD Display? Check carefully the corners for small defect, missing pixel or wrong color.
==> To make sure the frame buffer in RAM is well mapped
==> Note the color depth used.
2. Inject to the camera a full black and progressively white full picture and check if your incoming camera data looks fine and compatible with the LCD pixel mapping.
3. Use horizontal, vertical lines to see if the frame contains vertical line pattern. If the vertical line look diagonal going down left, the total horizontal pixel per line is too small (h total too big = h pixels + h blanking)
2017-11-02 01:53 AM
Thank you,
LCD is working good, I can draw borders and i tested it drawing image similar to this
Problem was with blanking, but (what is strange) QCIF resolution is 144x176 and in my case its 144x172 so there is no h pixels + h blanking, but h pixels - h blanking.
I still have problem with colors, image is purplish and when I configured camera to display color bar colors are wrong, but I will try to find something on arduino forums.
I will check tonight if bits are not swapped.
2017-11-29 07:43 AM
have you found the reason for the colors problem? I'm getting strange colors and I don't know what is the reason