主芯片:HI3559CV100
主芯片手册:Hi3559A╱C V100 ultra-HD Mobile Camera SoC 用户指南.pdf
主芯片MPP手册:HiMPP V4_Password_Removed.pdf
SENSOR:IMX178
SENSOR手册:IMX178LQJ-C_Data_Sheet.pdf
SDK:Hi3559AV100R001C02SPC010
IMX178的移植,主要涉及SENSOR端寄存器的配置、主芯片端VI各模块的配置,本文主要基于这两点进行移植过程的描述,其他功能模调用、PINMUX配置、驱动调用、Makefile修改等,可参考IMX334。
IMX178调试
根据SDK中的IMX334,首先拷贝sony_imx334文件夹,重命名为sony_imx178,并将所有334相关字段全部改为178
sony_imx178文件夹中主要包含imx178_cmos.c(图像质量相关)、imx178_sensor_ctl.c(寄存器配置相关),IMX178的调试主要包括I2C调试和寄存器配置,主要集中在imx178_sensor_ctl.c文件中
IMX178的I2C调试
参考IMX178手册,获取I2C Slave Address为0x34,Slave Address长度为8bit,Register Address长度为16比特,高位在前、低位在后
I2C写寄存器写入方式如下
int imx178_write_register(VI_PIPE ViPipe, int addr, int data)
{
if (0 > g_fd[ViPipe])
{
return HI_SUCCESS;
}
int idx = 0;
int ret;
char buf[8];
if (imx178_addr_byte == 2)
{
buf[idx] = (addr >> 8) & 0xff;
idx++;
buf[idx] = addr & 0xff;
idx++;
}
else
{
buf[idx] = addr & 0xff;
idx++;
}
if (imx178_data_byte == 2)
{
buf[idx] = (data >> 8) & 0xff;
idx++;
buf[idx] = data & 0xff;
idx++;
}
else
{
buf[idx] = data & 0xff;
idx++;
}
ret = write(g_fd[ViPipe], buf, (imx178_addr_byte + imx178_data_byte));
if (ret < 0)
{
ISP_TRACE(HI_DBG_ERR, "I2C_WRITE DATA error!\n");
retur