项目:基于 ZYNQ 的 IMX2221 摄像头实时视频流采集传输
章节:传感器配置(一)
本章目的:使用 ZYNQ 芯片的 PS 端的 SPI 接口对 CMOS 图像传感器进行设置操作,保证 CMOS配置的需求,使其进入用户需要的工作模式
软件:Vivado2021.2,Vitis2021.2
一. IMX222 芯片的 SPI 配置接口要求
从上图可以看出,通过SPI去读写数据需要传输三个信息,
- chip ID (从芯片手册获得)
- start address (读写数据的起始地址)
- data(数据)
这里 SPI 配置时序要求先发 LSB 最后发 MSB,与 xilinx 的 zynq 的 PS 端提供的驱动程序相反,我们再发送数据时需要进行高低位对调操作。
在本项目中我们将摄像头配置成1080P的方式,寄存器配置列表可以在芯片手册中找到。如下
在对传感器进行配置的过程中,我们首先要将模式改为 Standy (地址00h,数据1)此模式摄像头不进行采集,可以进行配置,在配置结束再修改。
在本项目中除了配置上述寄存器,还配置了
- 增益模块 { 0X02, 0x1e, 0x20 }
- 扫描模式 { 0x02, 0x01,0x01} 从上至下扫描
- clock的相位(设置成相移180度,为了中心对其 { 0X02, 0x2d, 0x42 }
所有的寄存器配置如下所示
{ 0x02, 0x00, 0x31 }, //standby
{ 0x02, 0x01,0x01}, // vs reverse
{ 0X02, 0x02, 0xF }, //1080p
{ 0X02, 0x03, 0x4c }, //2
{ 0X02, 0x04, 0x04 }, //3
{ 0X02, 0x05, 0x65 }, //4
{ 0X02, 0x06, 0x04 }, //5
{ 0X02, 0x11, 0x00 },//6
{ 0X02, 0x12, 0x82 }, //7
{ 0X02, 0x14, 0x00 }, //8
{ 0X02, 0x15, 0x00 }, //9
{ 0X02, 0x16, 0x3C }, //10
{ 0X02, 0x17, 0x00 }, //11
{ 0X02, 0x18, 0xC0 }, //12
{ 0X02, 0x19, 0x07 }, //13
{ 0X02, 0x1A, 0x51 }, //14
{ 0X02, 0x1B, 0x04 }, //15
{ 0X02, 0x1e, 0x20 }, //gain
{ 0X02, 0x20, 0xf0 }, //16
{ 0X02, 0x21, 0x00 }, //16
{ 0X02, 0x2c, 0x00 }, //16
{ 0X02, 0x2d, 0x42 }, //clk
{ 0X02, 0x3b, 0xe1 }, //18 sync code
{ 0X02, 0x9A, 0x26 }, //22
{ 0X02, 0x9B, 0x02 }, //23
{ 0X02, 0xCE, 0x16 }, //24
{ 0X02, 0xCF, 0x82 }, //25
{ 0X02, 0xD0, 0x00 }, //26
{ 0X02, 0x00, 0x00 }, //27