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-
EVKboardsevkmimxrt1170driver_examplescsimipi_yuvcm7
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 没有开启。
(2) 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 显示的效果,话不多说,直接上图。
图 3 YUV444
图 4 Y8
左边的图片的摄像头格式是 YUV444, 右边图片是 Y8 的格式,可以看到左边是彩色的,右边显示的就是黑白的,成功的完成了黑白 Y8 的摄像头数据采集以及 LCD 显示。
984