硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2871|回复: 0
收起左侧

[摄像头] STM32H7的DCMI摄像头输出图像裁剪功能貌似不起作用,直接改用DMA2D做裁剪了,也非常方便

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2019-3-4 03:10:51 | 显示全部楼层 |阅读模式
DCMI里面提供了函数:
HAL_DCMI_ConfigCrop(&hdcmi, 0, 0, 640, 480);
HAL_DCMI_EnableCrop(&hdcmi);


测试了下,不起作用,研究了下还是不行。

直接改用DMA2D做裁剪了,非常方便,原理是复制摄像头输出图像到显示屏显存即可,可以指定位置和大小进行复制。




  1. /**
  2.   * @brief  Return Pixel format for a given layer
  3.   * @param  LayerIndex : Layer Index
  4.   * @retval Status ( 0 : 0k , 1: error)
  5.   */
  6. void DMA2D_CopyBuffer(uint32_t LayerIndex, void * pSrc, void * pDst, uint32_t xSize, uint32_t ySize, uint32_t OffLineSrc, uint32_t OffLineDst)
  7. {
  8.         uint32_t PixelFormat;

  9.         PixelFormat = LCD_LL_GetPixelformat(LayerIndex);
  10.         DMA2D->CR      = 0x00000000UL | (1 << 9);  

  11.         /* Set up pointers */
  12.         DMA2D->FGMAR   = (uint32_t)pSrc;                       
  13.         DMA2D->OMAR    = (uint32_t)pDst;                       
  14.         DMA2D->FGOR    = OffLineSrc;                     
  15.         DMA2D->OOR     = OffLineDst;

  16.         /* Set up pixel format */  
  17.         DMA2D->FGPFCCR = PixelFormat;  

  18.         /*  Set up size */
  19.         DMA2D->NLR     = (uint32_t)(xSize << 16) | (uint16_t)ySize;

  20.         DMA2D->CR     |= DMA2D_CR_START;   

  21.         /* Wait until transfer is done */
  22.         while (DMA2D->CR & DMA2D_CR_START)
  23.         {
  24.         }
  25. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 21:28 , Processed in 0.149795 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表