【朝花夕拾】RT1170 CSI 如何使能摄像头Y8功能
- 一,文档简介
- 二,RT1170 CSI Y8黑白格式配置与测试
- 2.1 软硬件情况
- 2.2 Y8黑白格式的具体配置
- 2.3 测试结果
一,文档简介
RT1170的CSI可以支持YUV格式,所谓的YUV分为三个分量:Y表示亮度(Luminance),即灰度值;UV表示色度(Chrominance),描述色度和饱和度。和RGB类似,YUV也是一种颜色编码方法,它可以把亮度信息Y与色度信息UV分离。如果要显示黑白,可以没有UV信息,只有Y信息,即Y800=Y8 ,也同样可以显示完整的图像。对于RT1170 YUV,官方SDK提供了基于YUV444格式的例程,但是在实际使用中,有些客户需要Y8格式的功能,那么应该如何基于现有的YUV SDK去做配置呢?
从RT1170的参考手册,可以看到如下信息:
图 1
该描述,可以理解为需要Y8模式,只要配置:
CSI_CR20[BINARY_EN]=0
CSI_CR20[BIG_END]=1
但是,实际通过这种配置,原本的YUV代码无法显示摄像头数据了,那么到底应该怎样做摄像头的Y8配置,才能通过LCD显示出黑白的图像呢?本文将会给出详细讲解。
二,RT1170 CSI Y8黑白格式配置与测试
2.1 软硬件情况
板子:MIMXRT1170-EVK REV C4
LCD: RK055AHD091
摄像头:OV5640
代码:SDK_2_15_000_MIMXRT1170-EVK\boards\evkmimxrt1170\driver_examples\csi\mipi_yuv\cm7
IDE: MCUXPresso IDE v11.9.0
2.2 Y8黑白格式的具体配置
实际上,对于CSI_CR20配置,还需要使能Histogram功能,即如下几项:
图 2
下面给出基于SDK evkmimxrt1170_csi_mipi_yuv_cm7 demo,修改成Y8的几个修改点,主要修改文件csi_mipi_yuv.c:
(1) static void DEMO_InitPxp(void)函数
修改:
PXP_SetCsc1Mode(DEMO_PXP, kPXP_Csc1YCbCr2RGB);
为:
PXP_SetCsc1Mode(DEMO_PXP, kPXP_Csc1YUV2RGB);
此项如果不改,LCD将会全部显示为绿色。
(2)static void DEMO_InitCamera(void)函数
在BOARD_InitMipiCsi();之前,添加代码:
CSI->CR20 |= CSI_CR20_QRCODE_EN_MASK | CSI_CR20_HISTOGRAM_EN_MASK;
这里没有配置CSI_CR20[BINARY_EN]=0,是因为复位默认就是0,如果实际应用中,该位被修改过,那么这里就需要添加BINARY_EN清0,表示输出为Y8,不是Y1。
这里,之前不能显示图片的原因是因为HISTOGRAM_EN没有开启。
(3) static void DEMO_CSI_MIPI_YUV(void)函数
修改psBufferConfig结构体如下:
pxp_ps_buffer_config_t psBufferConfig = {
.pixelFormat = kPXP_PsPixelFormatY8, //kPXP_PsPixelFormatYUV1P444, /* Note: This is 32-bit per pixel */
.swapByte = false,
.bufferAddrU = 0U,
.bufferAddrV = 0U,
.pitchBytes = DEMO_CAMERA_WIDTH,//DEMO_CAMERA_WIDTH * DEMO_CAMERA_BUFFER_BPP,//
};
主要两个点:
.pixelFormat = kPXP_PsPixelFormatY8,
.pitchBytes = DEMO_CAMERA_WIDTH,
如果只是修改了像素格式为Y8,但是pitchBytes不修改成摄像头宽度,那么结果LCD显示将会是上面一小条,而不是整个LCD屏幕显示摄像头的Y8格式黑白图像。
到目前为止,所有Y8相关的修改项目已经结束。
最后,需要注意下, 默认的SDK的LCD显示屏,并不是本文选择的:RK055AHD091。
所以需要修改display_support.h中的DEMO_PANEL宏为如下内容:
#define DEMO_PANEL DEMO_PANEL_RK055AHD091
下面,编译工程,并且下载代码到MIMXRT1170-EVK板子中。
2.3 测试结果
下面使用同一张彩色的图片对着摄像头分别测试YUV以及Y8显示的效果,话不多说,直接上图。
左边的图片的摄像头格式是YUV444, 右边图片是Y8的格式,可以看到左边是彩色的,右边显示的就是黑白的,成功的完成了黑白Y8的摄像头数据采集以及LCD显示。
如果需要工程包的朋友,请移步NXP官方论坛:
RT1170 camera CSI Y8 format modification