此例程为STM324x9I_EVAL:DCMI_CaptureMode,使用的stm32f4xx_hal_driver,
At each camera line event, the line is converted to ARGB8888 pixel format
and transferred to LCD_FRAME_BUFFER using DMA2D.
这里仅记录例程中DMA2D这段,Camera RGB565格式 LCD RGB888
1 /** 2 * @brief Converts a line to an ARGB8888 pixel format. 3 * @param pSrc: Pointer to source buffer 4 * @param pDst: Output color 5 * @param xSize: Buffer width 6 * @param ColorMode: Input color mode 7 * @retval None 8 */ 9 static void LCD_LL_ConvertLineToARGB8888(void *pSrc, void *pDst) 10 { 11 /* Enable DMA2D clock */ 12 __HAL_RCC_DMA2D_CLK_ENABLE(); 13 14 /* Configure the DMA2D Mode, Color Mode and output offset */ 15 hdma2d_eval.Init.Mode = DMA2D_M2M_PFC; 16 hdma2d_eval.Init.ColorMode = DMA2D_ARGB8888; 17 hdma2d_eval.Init.OutputOffset = 0; 18 19 /* Foreground Configuration */ 20 hdma2d_eval.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; 21 hdma2d_eval.LayerCfg[1].InputAlpha = 0xFF; 22 hdma2d_eval.LayerCfg[1].InputColorMode = CM_RGB565; 23 hdma2d_eval.LayerCfg[1].InputOffset = 0; 24 25 hdma2d_eval.Instance = DMA2D; 26 27 /* DMA2D Initialization */ 28 if(HAL_DMA2D_Init(&hdma2d_eval) == HAL_OK) 29 { 30 if(HAL_DMA2D_ConfigLayer(&hdma2d_eval, 1) == HAL_OK) 31 { 32 if (HAL_DMA2D_Start(&hdma2d_eval, (uint32_t)pSrc, (uint32_t)pDst, BSP_LCD_GetXSize(), 1) == HAL_OK) 33 { 34 /* Polling For DMA transfer */ 35 HAL_DMA2D_PollForTransfer(&hdma2d_eval, 10); 36 } 37 } 38 } 39 else 40 { 41 /* FatFs Initialization Error */ 42 Error_Handler(); 43 } 44 }