ds90ub964-q1有1280×960的像素宽高限制,现在我们拿到的摄像头是1280×720(但实际964接收到的传输数据是1630×744,左右上下有黑色填充区域,宽度已经超过1280了),传输的图像通过ds90ub964-q1的寄存器0x73-0x74 0x75-0x76读出来的值,line count是744,line len是3260(uyvy格式的) 然后ds90ub964-q1通过CSI2传出来的数据好像被压缩成了768×744,如下图
这种情况是不是964还有寄存器没有设置好,要怎么设置才能得到正确的图像呢?
2.还有个问题8.5.5 Timestamp – Video Skew Detection这个功能具体是什么作用,没看太明白,不知道上个问题是否与此功能相关的寄存器配置有关系
附上我们964寄存器的设置:
ds90ub964_write_reg(0x0C,0x0F);//RX_PORT_CTL
msleep(sleep_delay);
//ds90ub964_write_reg(0xBC,0x00);//FV_MIN_TIME 5 pclk
msleep(sleep_delay);
ds90ub964_write_reg(0x1E,0x10);//max frame num
msleep(sleep_delay);
ds90ub964_write_reg(0x1f,0x00);//CSI_PLL_CTL 1600M
msleep(sleep_delay);
ds90ub964_write_reg(0x20,0xE0);//FWD_CTL1 fwd Enable 0xE0
msleep(sleep_delay);
//ds90ub964_write_reg(0x21,0x44);//FWD_CTL2 base sync fwd
msleep(sleep_delay);
ds90ub964_write_reg(0x25,0x02);//FreeRun mode
msleep(sleep_delay);
//CSI port 0 config
ds90ub964_write_reg(0x32,0x01);//CSI port select
msleep(sleep_delay);
ds90ub964_write_reg(0x33,0x01);//enable skew – calibration,continuous mode result to CRC error
msleep(sleep_delay);
//ds90ub964_write_reg(0x34,0x01);
msleep(sleep_delay);
//964_RX0_init_CSI0
ds90ub964_write_reg(0x4c,0x01);//rx port select
msleep(sleep_delay);
ds90ub964_write_reg(0x58,0x58);//enable pass throu
msleep(sleep_delay);
ds90ub964_write_reg(0x5c,0xB0);/r id alias
msleep(sleep_delay);
ds90ub964_write_reg(0x5d,0x6C);//slave id
msleep(sleep_delay);
ds90ub964_write_reg(0x65,0x6C);//slave id alias
msleep(sleep_delay);
ds90ub964_write_reg(0x70,0x1E);//cid and dt
msleep(sleep_delay);
//ds90ub964_write_reg(0x71,0x2C);//cid and dt
msleep(sleep_delay);
ds90ub964_write_reg(0x7c,0x80);//FrameValid Polarity
msleep(sleep_delay);
Miller Cai:
Mark,您好!
根据视频数据的格式基础来看,1280×960的像素输入,因为前肩和后肩,还有场同步的关系,数据的大小为1630×744。
您的视频数据输入FPDlink中,是否正确,请查看您的视频数据的行同步,场同步信号。
lianqin hu:
回复 Miller Cai:
TI 工程师,您好请问913需要如何配置,我现在通过i2c可以访问到913设备,但是读取964设备0x73 ~ 0x76寄存器的值都为0,请问会是什么方面的原因呢?感谢。
lianqin hu:
您好:请问您这边再mipi端读取数据是通过/dev/video 设备文件读取的吗?