最近使用stm32F407单片机通过摄像头采集图像进行处理,其中使用到DCMI接口CROP功能。但在网上找了很久,有用的资料不多,只能自己研究,特将自己的使用方法记录下来。
1.如何设置CROP。
定义:
DCMI_CROPInitTypeDef DCMI_CROPInitStruct;
参数设置:
DCMI_CROPInitStruct.DCMI_CaptureCount=Width; //capcnt
DCMI_CROPInitStruct.DCMI_HorizontalOffsetCount=StartX; //hoffcnt
DCMI_CROPInitStruct.DCMI_VerticalLineCount=Height; //vline
DCMI_CROPInitStruct.DCMI_VerticalStartLine=StartY; //vst
DCMI_CROPConfig(&DCMI_CROPInitStruct);
如果要投入使用还有一条语句:
DCMI_CROPCmd(ENABLE);
2.前面参数中,数据手册的说明有时候容易造成理解错误,特别是CAPCNT要求是4的倍数,实际这个CAPCNT开始值是0,所以要设置的Width不是4的倍数,还得减1.
3.另外,CAPCNT是传输的数据字节数不是像素值,而RGB565,一个像素是2个字节,因此比如我想采集的是320像素,实际这个Width=320*2-1=639
4.如果还需要在液晶上显示的话,还得修改LCD的显示区域的参数为对应的值,我的是LCD_SetDisplayWindow(.....).
给个我的参数值:320x240分辨率,CROP下半个屏幕:Width=639,StartX=0,Height=120,StartY=0;LCD_SetDisplayWindow(_X(0), _Y(0), 120, 320);