#include "asm/iic.h" #include "asm/isp_dev.h" #include "gpio.h" #include "xc7011.h" #include "system/timer.h" #include "device/iic.h" #include "device/device.h" #include "app_config.h" #ifdef CONFIG_VIDEO_ENABLE #define FLIP_XC7011 1//1:翻转 0:不翻转 //#define MIRROR_XC7011 1//1:镜像 0:不翻转 #define CONFIG_INPUT_FPS 20 #if (CONFIG_VIDEO_IMAGE_W > 1280) #define XC7011_DEVP_INPUT_W 1280 #define XC7011_DEVP_INPUT_H 720 #else #define XC7011_DEVP_INPUT_W CONFIG_VIDEO_IMAGE_W #define XC7011_DEVP_INPUT_H CONFIG_VIDEO_IMAGE_H #endif #define XC7011_WRCMD 0x36 #define XC7011_RDCMD 0x37 #define H42_WRCMD 0x60 #define H42_RDCMD 0x61 #define WRCMD 0x60 #define RDCMD 0x61 #define DELAY_TIME 10 static u8 reset_gpio[2] = {-1, -1}; static u8 pwdn_gpios[2] = {-1, -1}; static void *iic = NULL; typedef struct { u16 addr; u8 value; } Sensor_reg_ini; typedef struct { u8 addr; u8 value; } Sensor_reg_inix; /* 这个驱动针对XC7100 + XC7011,可出图,客户需要针对优化: 1、联系原厂,提高PCLK高电平或者波峰需要超过2v(是否可以可对摄像头1.8v电源提高到2.5v?) 2、联系原厂,对输出行周期进行缩短,对输出行结束到帧同步结束的时间进行缩短(行结束之后的4-10行周期就有帧同步结束信号) 3、联系原厂,绘本功能的15帧帧率即可 */ unsigned char wr_XC7011_Reg(u16 regID, u8 regDat) { u8 ret = 1; dev_ioctl(iic, IIC_IOCTL_START, 0); if (dev_ioctl(iic, IIC_IOCTL_TX_WITH_START_BIT, WRCMD)) { ret = 0; goto __wend; } delay(DELAY_TIME); if (dev_ioctl(iic, IIC_IOCTL_TX, regID >> 8)) { ret = 0; goto __wend; } delay(DELAY_TIME); if (dev_ioctl(iic, IIC_IOCTL_TX, regID & 0xff)) { ret = 0; goto __wend; } delay(DELAY_TIME); if (dev_ioctl(iic, IIC_IOCTL_TX_WITH_STOP_BIT, regDat)) { ret = 0; goto __wend; } __wend: dev_ioctl(iic, IIC_IOCTL_STOP, 0); return ret; } unsigned char rd_XC7011_Reg(u16 regID, unsigned char *regDat) { u8 ret = 1; dev_ioctl(iic, IIC_IOCTL_START, 0); if (dev_ioctl(iic, IIC_IOCTL_TX_WITH_START_BIT, WRCMD)) { ret = 0; goto __rend; } delay(DELAY_TIME); if (dev_ioctl(iic, IIC_IOCTL_TX, regID >> 8)) { ret = 0; goto __rend; } if (dev_ioctl(iic, IIC_IOCTL_TX_WITH_STOP_BIT, regID & 0xff)) { ret = 0; goto __rend; } delay(DELAY_TIME); if (dev_ioctl(iic, IIC_IOCTL_TX_WITH_START_BIT, RDCMD)) { ret = 0; goto __rend; } delay(DELAY_TIME); dev_ioctl(iic, IIC_IOCTL_RX_WITH_STOP_BIT, (u32)regDat); __rend: dev_ioctl(iic, IIC_IOCTL_STOP, 0); return ret; } void XC7011_dev_wr_reg(u16 regID, u16 regDat) { wr_XC7011_Reg(regID, (u8)regDat); } u16 XC7011_dev_rd_reg(u16 regID) { u8 reg; rd_XC7011_Reg(regID, ®); return reg; } void XC7011_Init(void) { //printf("***1****XC7011_Init\n"); wr_XC7011_Reg(0xfffd, 0x80); //printf("***2****XC7011_Init\n"); wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x001c, 0xff); wr_XC7011_Reg(0x001d, 0xff); wr_XC7011_Reg(0x001e, 0xff); wr_XC7011_Reg(0x001f, 0xef); //clk en wr_XC7011_Reg(0x0018, 0x00); wr_XC7011_Reg(0x0019, 0x00); wr_XC7011_Reg(0x001a, 0x00); wr_XC7011_Reg(0x001b, 0x00); // reset wr_XC7011_Reg(0x00bc, 0x11); wr_XC7011_Reg(0x00bd, 0x00); wr_XC7011_Reg(0x00be, 0x00); wr_XC7011_Reg(0x00bf, 0x00); wr_XC7011_Reg(0x0030, 0x5); wr_XC7011_Reg(0x0031, 0x4); wr_XC7011_Reg(0x0032, 0x10); //0x0b wr_XC7011_Reg(0x0020, 0x1); wr_XC7011_Reg(0x0021, 0xE); wr_XC7011_Reg(0x0023, 0x2); wr_XC7011_Reg(0x0024, 0x6); wr_XC7011_Reg(0x0025, 0x6); wr_XC7011_Reg(0x0026, 0x1); wr_XC7011_Reg(0x0027, 0x6); wr_XC7011_Reg(0x0028, 0x8); wr_XC7011_Reg(0x0029, 0x6); wr_XC7011_Reg(0x0029, 0x00); wr_XC7011_Reg(0x00aa, 0x40); wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x00bc, 0x11); wr_XC7011_Reg(0x001b, 0x0); wr_XC7011_Reg(0x0090, 0x29); wr_XC7011_Reg(0xfffe, 0x20); wr_XC7011_Reg(0x0000, 0x00); wr_XC7011_Reg(0x0004, 0x5); wr_XC7011_Reg(0x0005, 0x0); wr_XC7011_Reg(0x0006, 0x2); wr_XC7011_Reg(0x0007, 0xD0); wr_XC7011_Reg(0xfffe, 0x26); wr_XC7011_Reg(0x4000, 0xF9); wr_XC7011_Reg(0x6001, 0x14); wr_XC7011_Reg(0x6005, 0xc4); wr_XC7011_Reg(0x6006, 0xA); wr_XC7011_Reg(0x6007, 0x8C); wr_XC7011_Reg(0x6008, 0x9); wr_XC7011_Reg(0x6009, 0xFC); wr_XC7011_Reg(0x8000, 0x3f); wr_XC7011_Reg(0x8001, 0x0); wr_XC7011_Reg(0x8002, 0x5); wr_XC7011_Reg(0x8003, 0xD0); wr_XC7011_Reg(0x8004, 0x2); wr_XC7011_Reg(0x8005, 0x3); wr_XC7011_Reg(0x8006, 0x5); wr_XC7011_Reg(0x8007, 0x99); wr_XC7011_Reg(0x8008, 0x14); wr_XC7011_Reg(0x8010, 0x4); wr_XC7011_Reg(0x8012, 0x0); wr_XC7011_Reg(0x8013, 0x5); wr_XC7011_Reg(0x8014, 0xD0); wr_XC7011_Reg(0x8015, 0x2); wr_XC7011_Reg(0x8016, 0x0); wr_XC7011_Reg(0x8017, 0x0); wr_XC7011_Reg(0x8018, 0x0); wr_XC7011_Reg(0x8019, 0x0); wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0001, 0x1); wr_XC7011_Reg(0x0004, 0x18); wr_XC7011_Reg(0x0006, 0x5); wr_XC7011_Reg(0x0007, 0x0); wr_XC7011_Reg(0x0008, 0x2); wr_XC7011_Reg(0x0009, 0xD0); wr_XC7011_Reg(0x000a, 0x5); wr_XC7011_Reg(0x000b, 0x0); wr_XC7011_Reg(0x000c, 0x2); wr_XC7011_Reg(0x000d, 0xD0); wr_XC7011_Reg(0x0027, 0xF1); wr_XC7011_Reg(0x005e, 0x4); wr_XC7011_Reg(0x005f, 0xFF); wr_XC7011_Reg(0x0060, 0x2); wr_XC7011_Reg(0x0061, 0xCF); wr_XC7011_Reg(0x1908, 0x0); wr_XC7011_Reg(0x1900, 0x0); wr_XC7011_Reg(0x1901, 0x0); wr_XC7011_Reg(0x1902, 0x0); wr_XC7011_Reg(0x1903, 0x0); wr_XC7011_Reg(0x1904, 0x5); wr_XC7011_Reg(0x1905, 0x0); wr_XC7011_Reg(0x1906, 0x2); wr_XC7011_Reg(0x1907, 0xD0); wr_XC7011_Reg(0xfffe, 0x25); wr_XC7011_Reg(0x0002, 0xf0); //patch start wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x000e, 0x54); wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x0006, 0x00); wr_XC7011_Reg(0x0007, 0x1e); wr_XC7011_Reg(0x0014, 0x00); wr_XC7011_Reg(0x0015, 0x14); wr_XC7011_Reg(0x0016, 0x06); wr_XC7011_Reg(0x0017, 0x58); wr_XC7011_Reg(0x03d4, 0x9c); wr_XC7011_Reg(0x03d5, 0x21); wr_XC7011_Reg(0x03d6, 0xff); wr_XC7011_Reg(0x03d7, 0xe8); wr_XC7011_Reg(0x03d8, 0xd4); wr_XC7011_Reg(0x03d9, 0x01); wr_XC7011_Reg(0x03da, 0x48); wr_XC7011_Reg(0x03dc, 0xd4); wr_XC7011_Reg(0x03dd, 0x01); wr_XC7011_Reg(0x03de, 0x50); wr_XC7011_Reg(0x03df, 0x04); wr_XC7011_Reg(0x03e0, 0xd4); wr_XC7011_Reg(0x03e1, 0x01); wr_XC7011_Reg(0x03e2, 0x60); wr_XC7011_Reg(0x03e3, 0x08); wr_XC7011_Reg(0x03e4, 0xd4); wr_XC7011_Reg(0x03e5, 0x01); wr_XC7011_Reg(0x03e6, 0x70); wr_XC7011_Reg(0x03e7, 0x0c); wr_XC7011_Reg(0x03e8, 0xd4); wr_XC7011_Reg(0x03e9, 0x01); wr_XC7011_Reg(0x03ea, 0x80); wr_XC7011_Reg(0x03eb, 0x10); wr_XC7011_Reg(0x03ec, 0xd4); wr_XC7011_Reg(0x03ed, 0x01); wr_XC7011_Reg(0x03ee, 0x90); wr_XC7011_Reg(0x03ef, 0x14); wr_XC7011_Reg(0x03f0, 0x1a); wr_XC7011_Reg(0x03f3, 0x14); wr_XC7011_Reg(0x03f4, 0xaa); wr_XC7011_Reg(0x03f5, 0x10); wr_XC7011_Reg(0x03f6, 0x02); wr_XC7011_Reg(0x03f7, 0xb0); wr_XC7011_Reg(0x03f8, 0x84); wr_XC7011_Reg(0x03f9, 0x70); wr_XC7011_Reg(0x03fc, 0x84); wr_XC7011_Reg(0x03fd, 0x63); wr_XC7011_Reg(0x03ff, 0xd0); wr_XC7011_Reg(0x0400, 0xb9); wr_XC7011_Reg(0x0401, 0x43); wr_XC7011_Reg(0x0403, 0x41); wr_XC7011_Reg(0x0404, 0xbc); wr_XC7011_Reg(0x0405, 0x4a); wr_XC7011_Reg(0x0407, 0x1f); wr_XC7011_Reg(0x0408, 0x10); wr_XC7011_Reg(0x040b, 0x38); wr_XC7011_Reg(0x040c, 0xbc); wr_XC7011_Reg(0x040d, 0x4a); wr_XC7011_Reg(0x040f, 0x3e); wr_XC7011_Reg(0x0410, 0x9d); wr_XC7011_Reg(0x0411, 0xc0); wr_XC7011_Reg(0x0414, 0xa5); wr_XC7011_Reg(0x0415, 0x8a); wr_XC7011_Reg(0x0416, 0xff); wr_XC7011_Reg(0x0417, 0xff); wr_XC7011_Reg(0x0418, 0xaa); wr_XC7011_Reg(0x0419, 0x4e); wr_XC7011_Reg(0x041c, 0x84); wr_XC7011_Reg(0x041d, 0x70); wr_XC7011_Reg(0x0420, 0xb8); wr_XC7011_Reg(0x0421, 0x92); wr_XC7011_Reg(0x0423, 0x43); wr_XC7011_Reg(0x0424, 0x8c); wr_XC7011_Reg(0x0425, 0xa3); wr_XC7011_Reg(0x0427, 0x8b); wr_XC7011_Reg(0x0428, 0xa4); wr_XC7011_Reg(0x0429, 0x84); wr_XC7011_Reg(0x042b, 0x01); wr_XC7011_Reg(0x042c, 0x07); wr_XC7011_Reg(0x042d, 0xfb); wr_XC7011_Reg(0x042e, 0x1a); wr_XC7011_Reg(0x042f, 0x0a); wr_XC7011_Reg(0x0430, 0x9c); wr_XC7011_Reg(0x0431, 0x60); wr_XC7011_Reg(0x0432, 0x3e); wr_XC7011_Reg(0x0433, 0x07); wr_XC7011_Reg(0x0434, 0xb8); wr_XC7011_Reg(0x0435, 0x6e); wr_XC7011_Reg(0x0437, 0x02); wr_XC7011_Reg(0x0438, 0xb8); wr_XC7011_Reg(0x0439, 0x92); wr_XC7011_Reg(0x043b, 0x05); wr_XC7011_Reg(0x043c, 0x84); wr_XC7011_Reg(0x043d, 0xb0); wr_XC7011_Reg(0x0440, 0xa4); wr_XC7011_Reg(0x0441, 0x63); wr_XC7011_Reg(0x0443, 0x1c); wr_XC7011_Reg(0x0444, 0xa4); wr_XC7011_Reg(0x0445, 0x84); wr_XC7011_Reg(0x0447, 0xe0); wr_XC7011_Reg(0x0448, 0xa8); wr_XC7011_Reg(0x0449, 0x63); wr_XC7011_Reg(0x044b, 0x03); wr_XC7011_Reg(0x044c, 0x8c); wr_XC7011_Reg(0x044d, 0xa5); wr_XC7011_Reg(0x044f, 0x8b); wr_XC7011_Reg(0x0450, 0xe0); wr_XC7011_Reg(0x0451, 0x84); wr_XC7011_Reg(0x0452, 0x18); wr_XC7011_Reg(0x0454, 0x07); wr_XC7011_Reg(0x0455, 0xfb); wr_XC7011_Reg(0x0456, 0x1a); wr_XC7011_Reg(0x0458, 0x9c); wr_XC7011_Reg(0x0459, 0x60); wr_XC7011_Reg(0x045a, 0x3e); wr_XC7011_Reg(0x045b, 0x08); wr_XC7011_Reg(0x045c, 0x84); wr_XC7011_Reg(0x045d, 0x70); wr_XC7011_Reg(0x0460, 0xa8); wr_XC7011_Reg(0x0461, 0x8c); wr_XC7011_Reg(0x0464, 0x8c); wr_XC7011_Reg(0x0465, 0xa3); wr_XC7011_Reg(0x0467, 0x8b); wr_XC7011_Reg(0x0468, 0x07); wr_XC7011_Reg(0x0469, 0xfb); wr_XC7011_Reg(0x046a, 0x19); wr_XC7011_Reg(0x046b, 0xfb); wr_XC7011_Reg(0x046c, 0x9c); wr_XC7011_Reg(0x046d, 0x60); wr_XC7011_Reg(0x046e, 0x3e); wr_XC7011_Reg(0x046f, 0x09); wr_XC7011_Reg(0x0470, 0x9c); wr_XC7011_Reg(0x0471, 0x60); wr_XC7011_Reg(0x0472, 0x39); wr_XC7011_Reg(0x0473, 0x03); wr_XC7011_Reg(0x0474, 0x9c); wr_XC7011_Reg(0x0475, 0x80); wr_XC7011_Reg(0x0477, 0x84); wr_XC7011_Reg(0x0478, 0x07); wr_XC7011_Reg(0x0479, 0xfb); wr_XC7011_Reg(0x047a, 0x19); wr_XC7011_Reg(0x047b, 0xf7); wr_XC7011_Reg(0x047c, 0x9c); wr_XC7011_Reg(0x047d, 0xa0); wr_XC7011_Reg(0x047f, 0x01); wr_XC7011_Reg(0x0480, 0x9c); wr_XC7011_Reg(0x0481, 0x60); wr_XC7011_Reg(0x0482, 0x39); wr_XC7011_Reg(0x0483, 0x03); wr_XC7011_Reg(0x0484, 0x9c); wr_XC7011_Reg(0x0485, 0x80); wr_XC7011_Reg(0x0487, 0x04); wr_XC7011_Reg(0x0488, 0x07); wr_XC7011_Reg(0x0489, 0xfb); wr_XC7011_Reg(0x048a, 0x19); wr_XC7011_Reg(0x048b, 0xf3); wr_XC7011_Reg(0x048c, 0x9c); wr_XC7011_Reg(0x048d, 0xa0); wr_XC7011_Reg(0x048f, 0x01); wr_XC7011_Reg(0x0490, 0x9c); wr_XC7011_Reg(0x0491, 0x60); wr_XC7011_Reg(0x0492, 0x38); wr_XC7011_Reg(0x0493, 0x12); wr_XC7011_Reg(0x0494, 0x9c); wr_XC7011_Reg(0x0495, 0x80); wr_XC7011_Reg(0x0498, 0x07); wr_XC7011_Reg(0x0499, 0xfb); wr_XC7011_Reg(0x049a, 0x19); wr_XC7011_Reg(0x049b, 0xef); wr_XC7011_Reg(0x049c, 0x9c); wr_XC7011_Reg(0x049d, 0xa0); wr_XC7011_Reg(0x049f, 0x01); wr_XC7011_Reg(0x04a0, 0xbc); wr_XC7011_Reg(0x04a1, 0x4a); wr_XC7011_Reg(0x04a3, 0x1f); wr_XC7011_Reg(0x04a4, 0x0c); wr_XC7011_Reg(0x04a7, 0x25); wr_XC7011_Reg(0x04a8, 0xbc); wr_XC7011_Reg(0x04a9, 0x4a); wr_XC7011_Reg(0x04ab, 0x3f); wr_XC7011_Reg(0x04ac, 0x0c); wr_XC7011_Reg(0x04af, 0x20); wr_XC7011_Reg(0x04b0, 0xbc); wr_XC7011_Reg(0x04b1, 0x4a); wr_XC7011_Reg(0x04b3, 0x7f); wr_XC7011_Reg(0x04b4, 0x10); wr_XC7011_Reg(0x04b7, 0x2c); wr_XC7011_Reg(0x04b8, 0x15); wr_XC7011_Reg(0x04bc, 0x9c); wr_XC7011_Reg(0x04bd, 0x60); wr_XC7011_Reg(0x04be, 0x33); wr_XC7011_Reg(0x04bf, 0x01); wr_XC7011_Reg(0x04c0, 0x9c); wr_XC7011_Reg(0x04c1, 0x80); wr_XC7011_Reg(0x04c3, 0x09); wr_XC7011_Reg(0x04c4, 0x07); wr_XC7011_Reg(0x04c5, 0xfb); wr_XC7011_Reg(0x04c6, 0x19); wr_XC7011_Reg(0x04c7, 0xe4); wr_XC7011_Reg(0x04c8, 0x9c); wr_XC7011_Reg(0x04c9, 0xa0); wr_XC7011_Reg(0x04cb, 0x01); wr_XC7011_Reg(0x04cc, 0x9c); wr_XC7011_Reg(0x04cd, 0x60); wr_XC7011_Reg(0x04ce, 0x36); wr_XC7011_Reg(0x04cf, 0x31); wr_XC7011_Reg(0x04d0, 0x9c); wr_XC7011_Reg(0x04d1, 0x80); wr_XC7011_Reg(0x04d3, 0x86); wr_XC7011_Reg(0x04d4, 0x07); wr_XC7011_Reg(0x04d5, 0xfb); wr_XC7011_Reg(0x04d6, 0x19); wr_XC7011_Reg(0x04d7, 0xe0); wr_XC7011_Reg(0x04d8, 0x9c); wr_XC7011_Reg(0x04d9, 0xa0); wr_XC7011_Reg(0x04db, 0x01); wr_XC7011_Reg(0x04dc, 0x9c); wr_XC7011_Reg(0x04dd, 0x60); wr_XC7011_Reg(0x04de, 0x36); wr_XC7011_Reg(0x04df, 0x20); wr_XC7011_Reg(0x04e3, 0x46); wr_XC7011_Reg(0x04e4, 0x9c); wr_XC7011_Reg(0x04e5, 0x80); wr_XC7011_Reg(0x04e7, 0x08); wr_XC7011_Reg(0x04e8, 0x10); wr_XC7011_Reg(0x04eb, 0x07); wr_XC7011_Reg(0x04ec, 0xbc); wr_XC7011_Reg(0x04ed, 0x4a); wr_XC7011_Reg(0x04ef, 0x7c); wr_XC7011_Reg(0x04f0, 0xb8); wr_XC7011_Reg(0x04f1, 0x83); wr_XC7011_Reg(0x04f3, 0x42); wr_XC7011_Reg(0x04f4, 0x9e); wr_XC7011_Reg(0x04f5, 0x40); wr_XC7011_Reg(0x04f8, 0x9d); wr_XC7011_Reg(0x04f9, 0xc0); wr_XC7011_Reg(0x04fb, 0x01); wr_XC7011_Reg(0x04fc, 0x03); wr_XC7011_Reg(0x04fd, 0xff); wr_XC7011_Reg(0x04fe, 0xff); wr_XC7011_Reg(0x04ff, 0xc8); wr_XC7011_Reg(0x0500, 0xa5); wr_XC7011_Reg(0x0501, 0x84); wr_XC7011_Reg(0x0502, 0xff); wr_XC7011_Reg(0x0503, 0xff); wr_XC7011_Reg(0x0504, 0x0c); wr_XC7011_Reg(0x0507, 0x1b); wr_XC7011_Reg(0x0508, 0xb8); wr_XC7011_Reg(0x0509, 0x83); wr_XC7011_Reg(0x050b, 0x43); wr_XC7011_Reg(0x050c, 0xbc); wr_XC7011_Reg(0x050d, 0x4a); wr_XC7011_Reg(0x050f, 0xf8); wr_XC7011_Reg(0x0510, 0x10); wr_XC7011_Reg(0x0513, 0x1c); wr_XC7011_Reg(0x0514, 0xbc); wr_XC7011_Reg(0x0515, 0x4a); wr_XC7011_Reg(0x0516, 0x01); wr_XC7011_Reg(0x0517, 0xf0); wr_XC7011_Reg(0x0518, 0xb8); wr_XC7011_Reg(0x0519, 0x83); wr_XC7011_Reg(0x051b, 0x44); wr_XC7011_Reg(0x051c, 0x9e); wr_XC7011_Reg(0x051d, 0x40); wr_XC7011_Reg(0x0520, 0x9d); wr_XC7011_Reg(0x0521, 0xc0); wr_XC7011_Reg(0x0523, 0x07); wr_XC7011_Reg(0x0524, 0x03); wr_XC7011_Reg(0x0525, 0xff); wr_XC7011_Reg(0x0526, 0xff); wr_XC7011_Reg(0x0527, 0xbe); wr_XC7011_Reg(0x0528, 0xa5); wr_XC7011_Reg(0x0529, 0x84); wr_XC7011_Reg(0x052a, 0xff); wr_XC7011_Reg(0x052b, 0xff); wr_XC7011_Reg(0x052c, 0x9c); wr_XC7011_Reg(0x052d, 0x60); wr_XC7011_Reg(0x052e, 0x33); wr_XC7011_Reg(0x052f, 0x01); wr_XC7011_Reg(0x0530, 0x03); wr_XC7011_Reg(0x0531, 0xff); wr_XC7011_Reg(0x0532, 0xff); wr_XC7011_Reg(0x0533, 0xe5); wr_XC7011_Reg(0x0534, 0x9c); wr_XC7011_Reg(0x0535, 0x80); wr_XC7011_Reg(0x0537, 0x08); wr_XC7011_Reg(0x0538, 0x9c); wr_XC7011_Reg(0x0539, 0x60); wr_XC7011_Reg(0x053a, 0x33); wr_XC7011_Reg(0x053b, 0x01); wr_XC7011_Reg(0x053c, 0x9c); wr_XC7011_Reg(0x053d, 0x80); wr_XC7011_Reg(0x053f, 0x04); wr_XC7011_Reg(0x0540, 0x07); wr_XC7011_Reg(0x0541, 0xfb); wr_XC7011_Reg(0x0542, 0x19); wr_XC7011_Reg(0x0543, 0xc5); wr_XC7011_Reg(0x0544, 0x9c); wr_XC7011_Reg(0x0545, 0xa0); wr_XC7011_Reg(0x0547, 0x01); wr_XC7011_Reg(0x0548, 0x9c); wr_XC7011_Reg(0x0549, 0x60); wr_XC7011_Reg(0x054a, 0x36); wr_XC7011_Reg(0x054b, 0x31); wr_XC7011_Reg(0x054c, 0x9c); wr_XC7011_Reg(0x054d, 0x80); wr_XC7011_Reg(0x054f, 0x84); wr_XC7011_Reg(0x0550, 0x07); wr_XC7011_Reg(0x0551, 0xfb); wr_XC7011_Reg(0x0552, 0x19); wr_XC7011_Reg(0x0553, 0xc1); wr_XC7011_Reg(0x0554, 0x9c); wr_XC7011_Reg(0x0555, 0xa0); wr_XC7011_Reg(0x0557, 0x01); wr_XC7011_Reg(0x0558, 0x9c); wr_XC7011_Reg(0x0559, 0x60); wr_XC7011_Reg(0x055a, 0x36); wr_XC7011_Reg(0x055b, 0x20); wr_XC7011_Reg(0x055f, 0x27); wr_XC7011_Reg(0x0560, 0x9c); wr_XC7011_Reg(0x0561, 0x80); wr_XC7011_Reg(0x0563, 0x28); wr_XC7011_Reg(0x0564, 0x9c); wr_XC7011_Reg(0x0565, 0x60); wr_XC7011_Reg(0x0566, 0x33); wr_XC7011_Reg(0x0567, 0x01); wr_XC7011_Reg(0x0568, 0x03); wr_XC7011_Reg(0x0569, 0xff); wr_XC7011_Reg(0x056a, 0xff); wr_XC7011_Reg(0x056b, 0xd7); wr_XC7011_Reg(0x056c, 0x9c); wr_XC7011_Reg(0x056d, 0x80); wr_XC7011_Reg(0x056f, 0x20); wr_XC7011_Reg(0x0570, 0x9e); wr_XC7011_Reg(0x0571, 0x40); wr_XC7011_Reg(0x0574, 0x9d); wr_XC7011_Reg(0x0575, 0xc0); wr_XC7011_Reg(0x0577, 0x03); wr_XC7011_Reg(0x0578, 0x03); wr_XC7011_Reg(0x0579, 0xff); wr_XC7011_Reg(0x057a, 0xff); wr_XC7011_Reg(0x057b, 0xa9); wr_XC7011_Reg(0x057c, 0xa5); wr_XC7011_Reg(0x057d, 0x84); wr_XC7011_Reg(0x057e, 0xff); wr_XC7011_Reg(0x057f, 0xff); wr_XC7011_Reg(0x0580, 0x0c); wr_XC7011_Reg(0x0583, 0x09); wr_XC7011_Reg(0x0584, 0xb8); wr_XC7011_Reg(0x0585, 0x83); wr_XC7011_Reg(0x0587, 0x45); wr_XC7011_Reg(0x0588, 0xbc); wr_XC7011_Reg(0x0589, 0x4a); wr_XC7011_Reg(0x058a, 0x03); wr_XC7011_Reg(0x058b, 0xe0); wr_XC7011_Reg(0x058c, 0x10); wr_XC7011_Reg(0x058f, 0x09); wr_XC7011_Reg(0x0590, 0xbc); wr_XC7011_Reg(0x0591, 0x4a); wr_XC7011_Reg(0x0592, 0x07); wr_XC7011_Reg(0x0593, 0xc0); wr_XC7011_Reg(0x0594, 0xb8); wr_XC7011_Reg(0x0595, 0x83); wr_XC7011_Reg(0x0597, 0x46); wr_XC7011_Reg(0x0598, 0x9e); wr_XC7011_Reg(0x0599, 0x40); wr_XC7011_Reg(0x059b, 0x03); wr_XC7011_Reg(0x059c, 0x03); wr_XC7011_Reg(0x059d, 0xff); wr_XC7011_Reg(0x059e, 0xff); wr_XC7011_Reg(0x059f, 0xe2); wr_XC7011_Reg(0x05a0, 0x9d); wr_XC7011_Reg(0x05a1, 0xc0); wr_XC7011_Reg(0x05a3, 0x07); wr_XC7011_Reg(0x05a4, 0x9e); wr_XC7011_Reg(0x05a5, 0x40); wr_XC7011_Reg(0x05a7, 0x01); wr_XC7011_Reg(0x05a8, 0x03); wr_XC7011_Reg(0x05a9, 0xff); wr_XC7011_Reg(0x05aa, 0xff); wr_XC7011_Reg(0x05ab, 0xdf); wr_XC7011_Reg(0x05ac, 0x9d); wr_XC7011_Reg(0x05ad, 0xc0); wr_XC7011_Reg(0x05af, 0x07); wr_XC7011_Reg(0x05b0, 0x10); wr_XC7011_Reg(0x05b3, 0x06); wr_XC7011_Reg(0x05b4, 0xbc); wr_XC7011_Reg(0x05b5, 0x4a); wr_XC7011_Reg(0x05b6, 0x0f); wr_XC7011_Reg(0x05b7, 0x80); wr_XC7011_Reg(0x05b8, 0xb8); wr_XC7011_Reg(0x05b9, 0x83); wr_XC7011_Reg(0x05bb, 0x47); wr_XC7011_Reg(0x05bc, 0x9d); wr_XC7011_Reg(0x05bd, 0xc0); wr_XC7011_Reg(0x05bf, 0x07); wr_XC7011_Reg(0x05c0, 0x03); wr_XC7011_Reg(0x05c1, 0xff); wr_XC7011_Reg(0x05c2, 0xff); wr_XC7011_Reg(0x05c3, 0x96); wr_XC7011_Reg(0x05c4, 0xa5); wr_XC7011_Reg(0x05c5, 0x84); wr_XC7011_Reg(0x05c6, 0xff); wr_XC7011_Reg(0x05c7, 0xff); wr_XC7011_Reg(0x05c8, 0x10); wr_XC7011_Reg(0x05cb, 0x06); wr_XC7011_Reg(0x05cc, 0xbc); wr_XC7011_Reg(0x05cd, 0xaa); wr_XC7011_Reg(0x05ce, 0x0f); wr_XC7011_Reg(0x05cf, 0xc0); wr_XC7011_Reg(0x05d0, 0xb8); wr_XC7011_Reg(0x05d1, 0x83); wr_XC7011_Reg(0x05d3, 0x48); wr_XC7011_Reg(0x05d4, 0x9e); wr_XC7011_Reg(0x05d5, 0x40); wr_XC7011_Reg(0x05d7, 0x0f); wr_XC7011_Reg(0x05d8, 0x03); wr_XC7011_Reg(0x05d9, 0xff); wr_XC7011_Reg(0x05da, 0xff); wr_XC7011_Reg(0x05db, 0xd3); wr_XC7011_Reg(0x05dc, 0x9d); wr_XC7011_Reg(0x05dd, 0xc0); wr_XC7011_Reg(0x05df, 0x07); wr_XC7011_Reg(0x05e0, 0x13); wr_XC7011_Reg(0x05e1, 0xff); wr_XC7011_Reg(0x05e2, 0xff); wr_XC7011_Reg(0x05e3, 0x8f); wr_XC7011_Reg(0x05e4, 0x15); wr_XC7011_Reg(0x05e8, 0x9e); wr_XC7011_Reg(0x05e9, 0x40); wr_XC7011_Reg(0x05eb, 0x0f); wr_XC7011_Reg(0x05ec, 0x9d); wr_XC7011_Reg(0x05ed, 0xc0); wr_XC7011_Reg(0x05ef, 0x07); wr_XC7011_Reg(0x05f0, 0x03); wr_XC7011_Reg(0x05f1, 0xff); wr_XC7011_Reg(0x05f2, 0xff); wr_XC7011_Reg(0x05f3, 0x8b); wr_XC7011_Reg(0x05f4, 0x9d); wr_XC7011_Reg(0x05f5, 0x80); wr_XC7011_Reg(0x05f7, 0x1f); wr_XC7011_Reg(0x05f8, 0x07); wr_XC7011_Reg(0x05f9, 0xfb); wr_XC7011_Reg(0x05fa, 0x19); wr_XC7011_Reg(0x05fb, 0x97); wr_XC7011_Reg(0x05fc, 0x9c); wr_XC7011_Reg(0x05fd, 0xa0); wr_XC7011_Reg(0x05ff, 0x01); wr_XC7011_Reg(0x0600, 0x9c); wr_XC7011_Reg(0x0601, 0x60); wr_XC7011_Reg(0x0602, 0x38); wr_XC7011_Reg(0x0603, 0x12); wr_XC7011_Reg(0x0604, 0x9c); wr_XC7011_Reg(0x0605, 0x80); wr_XC7011_Reg(0x0607, 0x30); wr_XC7011_Reg(0x0608, 0x07); wr_XC7011_Reg(0x0609, 0xfb); wr_XC7011_Reg(0x060a, 0x19); wr_XC7011_Reg(0x060b, 0x93); wr_XC7011_Reg(0x060c, 0x9c); wr_XC7011_Reg(0x060d, 0xa0); wr_XC7011_Reg(0x060f, 0x01); wr_XC7011_Reg(0x0610, 0x85); wr_XC7011_Reg(0x0611, 0x21); wr_XC7011_Reg(0x0614, 0x85); wr_XC7011_Reg(0x0615, 0x41); wr_XC7011_Reg(0x0617, 0x04); wr_XC7011_Reg(0x0618, 0x85); wr_XC7011_Reg(0x0619, 0x81); wr_XC7011_Reg(0x061b, 0x08); wr_XC7011_Reg(0x061c, 0x85); wr_XC7011_Reg(0x061d, 0xc1); wr_XC7011_Reg(0x061f, 0x0c); wr_XC7011_Reg(0x0620, 0x86); wr_XC7011_Reg(0x0621, 0x01); wr_XC7011_Reg(0x0623, 0x10); wr_XC7011_Reg(0x0624, 0x86); wr_XC7011_Reg(0x0625, 0x41); wr_XC7011_Reg(0x0627, 0x14); wr_XC7011_Reg(0x0628, 0x44); wr_XC7011_Reg(0x062a, 0x48); wr_XC7011_Reg(0x062c, 0x9c); wr_XC7011_Reg(0x062d, 0x21); wr_XC7011_Reg(0x062f, 0x18); wr_XC7011_Reg(0x0630, 0x9c); wr_XC7011_Reg(0x0631, 0x21); wr_XC7011_Reg(0x0632, 0xff); wr_XC7011_Reg(0x0633, 0xfc); wr_XC7011_Reg(0x0634, 0xd4); wr_XC7011_Reg(0x0635, 0x01); wr_XC7011_Reg(0x0636, 0x48); wr_XC7011_Reg(0x0638, 0xbc); wr_XC7011_Reg(0x0639, 0x23); wr_XC7011_Reg(0x063a, 0x04); wr_XC7011_Reg(0x063b, 0x0c); wr_XC7011_Reg(0x063c, 0x10); wr_XC7011_Reg(0x063f, 0x04); wr_XC7011_Reg(0x0640, 0x15); wr_XC7011_Reg(0x0644, 0x07); wr_XC7011_Reg(0x0645, 0xff); wr_XC7011_Reg(0x0646, 0xff); wr_XC7011_Reg(0x0647, 0x64); wr_XC7011_Reg(0x0648, 0x15); wr_XC7011_Reg(0x064c, 0x85); wr_XC7011_Reg(0x064d, 0x21); wr_XC7011_Reg(0x0650, 0x44); wr_XC7011_Reg(0x0652, 0x48); wr_XC7011_Reg(0x0654, 0x9c); wr_XC7011_Reg(0x0655, 0x21); wr_XC7011_Reg(0x0657, 0x04); wr_XC7011_Reg(0x0658, 0x9c); wr_XC7011_Reg(0x0659, 0x21); wr_XC7011_Reg(0x065a, 0xff); wr_XC7011_Reg(0x065b, 0xfc); wr_XC7011_Reg(0x065c, 0xd4); wr_XC7011_Reg(0x065d, 0x01); wr_XC7011_Reg(0x065e, 0x48); wr_XC7011_Reg(0x0660, 0x07); wr_XC7011_Reg(0x0661, 0xff); wr_XC7011_Reg(0x0662, 0xff); wr_XC7011_Reg(0x0663, 0xf4); wr_XC7011_Reg(0x0664, 0x15); wr_XC7011_Reg(0x0668, 0x18); wr_XC7011_Reg(0x0669, 0x60); wr_XC7011_Reg(0x066b, 0x14); wr_XC7011_Reg(0x066c, 0xa8); wr_XC7011_Reg(0x066d, 0x63); wr_XC7011_Reg(0x066e, 0x03); wr_XC7011_Reg(0x066f, 0x18); wr_XC7011_Reg(0x0670, 0x9d); wr_XC7011_Reg(0x0671, 0x60); wr_XC7011_Reg(0x0674, 0x84); wr_XC7011_Reg(0x0675, 0x63); wr_XC7011_Reg(0x0678, 0xd4); wr_XC7011_Reg(0x0679, 0x03); wr_XC7011_Reg(0x067a, 0x59); wr_XC7011_Reg(0x067b, 0xcc); wr_XC7011_Reg(0x067c, 0xd4); wr_XC7011_Reg(0x067d, 0x03); wr_XC7011_Reg(0x067e, 0x59); wr_XC7011_Reg(0x067f, 0xc0); wr_XC7011_Reg(0x0680, 0xd4); wr_XC7011_Reg(0x0681, 0x03); wr_XC7011_Reg(0x0682, 0x59); wr_XC7011_Reg(0x0683, 0xc4); wr_XC7011_Reg(0x0684, 0xd4); wr_XC7011_Reg(0x0685, 0x03); wr_XC7011_Reg(0x0686, 0x59); wr_XC7011_Reg(0x0687, 0xc8); wr_XC7011_Reg(0x0688, 0x85); wr_XC7011_Reg(0x0689, 0x21); wr_XC7011_Reg(0x068c, 0x44); wr_XC7011_Reg(0x068e, 0x48); wr_XC7011_Reg(0x0690, 0x9c); wr_XC7011_Reg(0x0691, 0x21); wr_XC7011_Reg(0x0693, 0x04); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x0137, 0x99); //patch end wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x1f00, 0x00); wr_XC7011_Reg(0x1f01, 0x00); wr_XC7011_Reg(0x1f02, 0x00); wr_XC7011_Reg(0x1f03, 0x00); wr_XC7011_Reg(0x1f04, 0x05); wr_XC7011_Reg(0x1f05, 0x00); wr_XC7011_Reg(0x1f06, 0x02); wr_XC7011_Reg(0x1f07, 0xd0); wr_XC7011_Reg(0x1f08, 0x03); //r_avg_ctrl); bit[1]:avg_opt; bit[0]:avg_man wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x003f, 0x10); wr_XC7011_Reg(0x0040, 0x10); wr_XC7011_Reg(0x0041, 0x10); wr_XC7011_Reg(0x0042, 0x10); wr_XC7011_Reg(0x0043, 0x10); wr_XC7011_Reg(0x0044, 0x10); wr_XC7011_Reg(0x0045, 0x10); wr_XC7011_Reg(0x0046, 0x10); wr_XC7011_Reg(0x0047, 0x10); wr_XC7011_Reg(0x0048, 0x10); wr_XC7011_Reg(0x0049, 0x10); wr_XC7011_Reg(0x004a, 0x10); wr_XC7011_Reg(0x004b, 0x10); wr_XC7011_Reg(0x004c, 0x10); wr_XC7011_Reg(0x004d, 0x10); wr_XC7011_Reg(0x004e, 0x10); wr_XC7011_Reg(0x004f, 0x10); wr_XC7011_Reg(0x0050, 0x10); wr_XC7011_Reg(0x0051, 0x10); wr_XC7011_Reg(0x0052, 0x10); wr_XC7011_Reg(0x0053, 0x10); wr_XC7011_Reg(0x0054, 0x10); wr_XC7011_Reg(0x0055, 0x10); wr_XC7011_Reg(0x0056, 0x10); wr_XC7011_Reg(0x0057, 0x10); wr_XC7011_Reg(0x003a, 0x01); wr_XC7011_Reg(0x0051, 0x03); //ae wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x004d, 0x00); wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x0026, 0x01); //AEC enable wr_XC7011_Reg(0x00be, 0x60); //camera i2c id wr_XC7011_Reg(0x00bf, 0x01); //camera i2c bits wr_XC7011_Reg(0x00c0, 0x05); //5 //sensor type gain wr_XC7011_Reg(0x00c1, 0x00); //sensor type exposure //{wr_XC7011_Reg(0x00c3,0x01); //sensor mode select //exposure wr_XC7011_Reg(0x00c4, 0x3e); //write camera exposure ); ariable [15:12] wr_XC7011_Reg(0x00c5, 0x02); wr_XC7011_Reg(0x00c6, 0x3E); //write camera exposure ); ariable [11:4] wr_XC7011_Reg(0x00c7, 0x01); wr_XC7011_Reg(0x00c8, 0x00); //write camera exposure ); ariable [3:0] wr_XC7011_Reg(0x00c9, 0x00); wr_XC7011_Reg(0x00cc, 0x00); //camera exposure addr mask 1 wr_XC7011_Reg(0x00cd, 0xff); wr_XC7011_Reg(0x00ce, 0x00); //camera exposure addr mask 2 wr_XC7011_Reg(0x00cf, 0xff); wr_XC7011_Reg(0x00d0, 0x00); //camera exposure addr mask 3 wr_XC7011_Reg(0x00d1, 0x00); wr_XC7011_Reg(0x00d2, 0x00); //camera exposure addr mask 4 wr_XC7011_Reg(0x00d3, 0x00); //gain wr_XC7011_Reg(0x00e4, 0x3E); //camera gain addr wr_XC7011_Reg(0x00e5, 0x08); wr_XC7011_Reg(0x00e6, 0x3E); //camera gain addr wr_XC7011_Reg(0x00e7, 0x09); wr_XC7011_Reg(0x00ec, 0x00); //camera gain addr mask 1 wr_XC7011_Reg(0x00ed, 0xff); wr_XC7011_Reg(0x00ee, 0x00); //camera gain addr mask 2 wr_XC7011_Reg(0x00ef, 0xff); wr_XC7011_Reg(0x00f0, 0x00); //camera gain addr mask 3 wr_XC7011_Reg(0x00f1, 0x00); wr_XC7011_Reg(0x00f2, 0x00); //camera gain addr mask 4 wr_XC7011_Reg(0x00f3, 0x00); //banding wr_XC7011_Reg(0x00b4, 0x02); // banding mode wr_XC7011_Reg(0x00b8, 0x0b); // banding exposure lines wr_XC7011_Reg(0x00b9, 0xb0); wr_XC7011_Reg(0x0035, 0x01); // AE CFG // AE CFG wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x00aa, 0x01); wr_XC7011_Reg(0x00ab, 0xc0); //max gain wr_XC7011_Reg(0x00ba, 0x00); //low light mode wr_XC7011_Reg(0x006a, 0x01); wr_XC7011_Reg(0x006b, 0xc0); //night target wr_XC7011_Reg(0x006c, 0x00); wr_XC7011_Reg(0x006d, 0xa0); //day target wr_XC7011_Reg(0x0073, 0x18); //AttAvgReviseDiff //AE SPEED wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x0039, 0x00); //DETECT enable wr_XC7011_Reg(0x0060, 0x00); //smart mode 03 wr_XC7011_Reg(0x005d, 0x00); wr_XC7011_Reg(0x005e, 0x30); wr_XC7011_Reg(0x005f, 0x00); wr_XC7011_Reg(0x003a, 0x01); wr_XC7011_Reg(0x0071, 0xc0); // target offset wr_XC7011_Reg(0x0076, 0x02); // delay frame //wr_XC7011_Reg(0x0079,0x01); wr_XC7011_Reg(0x007a, 0x00); wr_XC7011_Reg(0x007b, 0x30); //1. threshold low wr_XC7011_Reg(0x007c, 0x00); wr_XC7011_Reg(0x007d, 0xb0); //2. threshold high wr_XC7011_Reg(0x0077, 0x20); //3. finally thr wr_XC7011_Reg(0x0078, 0x01); //total speed wr_XC7011_Reg(0x007f, 0x60); // jump threshold wr_XC7011_Reg(0x0087, 0x60); // jump ratio wr_XC7011_Reg(0x0088, 0x02); // jump times wr_XC7011_Reg(0x008c, 0x03); wr_XC7011_Reg(0x008d, 0x80); // AE SMART wr_XC7011_Reg(0x0112, 0x03); //Att Detect Speed wr_XC7011_Reg(0x0113, 0x03); wr_XC7011_Reg(0x0114, 0x03); // below or above cnt wr_XC7011_Reg(0x011a, 0x00); wr_XC7011_Reg(0x011b, 0x00); //day min attention avg thr wr_XC7011_Reg(0x011c, 0x02); wr_XC7011_Reg(0x011d, 0x20); //day max attention avg thr wr_XC7011_Reg(0x011e, 0x00); wr_XC7011_Reg(0x011f, 0x00); //day min avg thr wr_XC7011_Reg(0x0120, 0x02); wr_XC7011_Reg(0x0121, 0x80); //day max avg thr wr_XC7011_Reg(0x0062, 0xff); wr_XC7011_Reg(0x0063, 0xf0); // D-N wr_XC7011_Reg(0x0064, 0xff); wr_XC7011_Reg(0x0065, 0xf0); // N-D wr_XC7011_Reg(0x0066, 0x00); wr_XC7011_Reg(0x0067, 0x00); //dark thr wr_XC7011_Reg(0x0074, 0x00); //diff ratio low wr_XC7011_Reg(0x0075, 0x00); //diff ratio high wr_XC7011_Reg(0x006e, 0x00); //magnituede offset wr_XC7011_Reg(0x006f, 0x00); //magnituede MIN wr_XC7011_Reg(0x0070, 0xff); wr_XC7011_Reg(0x012a, 0x00); //variance thr promote luma wr_XC7011_Reg(0x012b, 0x00); wr_XC7011_Reg(0x003b, 0x40); wr_XC7011_Reg(0x003c, 0x40); wr_XC7011_Reg(0x003d, 0x90); wr_XC7011_Reg(0x003e, 0x10); wr_XC7011_Reg(0x0039, 0x00); //0927 by wenzhe wr_XC7011_Reg(0x0112, 0x08); //target speed wr_XC7011_Reg(0x012e, 0x01); // patch add wr_XC7011_Reg(0x012f, 0xc0); wr_XC7011_Reg(0x0131, 0x10); wr_XC7011_Reg(0x010f, 0x00); // gain and exp delay wr_XC7011_Reg(0x0110, 0x00); //IQ wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x008a, 0x00); //Low wr_XC7011_Reg(0x008b, 0x30); wr_XC7011_Reg(0x008c, 0x05); //Hight wr_XC7011_Reg(0x008d, 0x00); //AE SENSOR END //lenc wr_XC7011_Reg(0xfffe, 0x30); //lenc_88 wr_XC7011_Reg(0x0200, 0x18); wr_XC7011_Reg(0x0201, 0x10); wr_XC7011_Reg(0x0202, 0xf); wr_XC7011_Reg(0x0203, 0xf); wr_XC7011_Reg(0x0204, 0x12); wr_XC7011_Reg(0x0205, 0x1b); wr_XC7011_Reg(0x0206, 0x7); wr_XC7011_Reg(0x0207, 0x5); wr_XC7011_Reg(0x0208, 0x4); wr_XC7011_Reg(0x0209, 0x4); wr_XC7011_Reg(0x020a, 0x5); wr_XC7011_Reg(0x020b, 0x9); wr_XC7011_Reg(0x020c, 0x3); wr_XC7011_Reg(0x020d, 0x1); wr_XC7011_Reg(0x020e, 0x0); wr_XC7011_Reg(0x020f, 0x0); wr_XC7011_Reg(0x0210, 0x1); wr_XC7011_Reg(0x0211, 0x4); wr_XC7011_Reg(0x0212, 0x3); wr_XC7011_Reg(0x0213, 0x0); wr_XC7011_Reg(0x0214, 0x0); wr_XC7011_Reg(0x0215, 0x0); wr_XC7011_Reg(0x0216, 0x0); wr_XC7011_Reg(0x0217, 0x3); wr_XC7011_Reg(0x0218, 0x6); wr_XC7011_Reg(0x0219, 0x3); wr_XC7011_Reg(0x021a, 0x2); wr_XC7011_Reg(0x021b, 0x2); wr_XC7011_Reg(0x021c, 0x4); wr_XC7011_Reg(0x021d, 0x7); wr_XC7011_Reg(0x021e, 0x10); wr_XC7011_Reg(0x021f, 0xc); wr_XC7011_Reg(0x0220, 0xb); wr_XC7011_Reg(0x0221, 0xb); wr_XC7011_Reg(0x0222, 0xd); wr_XC7011_Reg(0x0223, 0x12); wr_XC7011_Reg(0x0224, 0x2); wr_XC7011_Reg(0x0225, 0x22); wr_XC7011_Reg(0x0226, 0x12); wr_XC7011_Reg(0x0227, 0x2); wr_XC7011_Reg(0x0228, 0x13); wr_XC7011_Reg(0x022a, 0x22); wr_XC7011_Reg(0x022b, 0x22); wr_XC7011_Reg(0x022c, 0x32); wr_XC7011_Reg(0x022d, 0x22); wr_XC7011_Reg(0x022e, 0x12); wr_XC7011_Reg(0x0230, 0x22); wr_XC7011_Reg(0x0231, 0x21); wr_XC7011_Reg(0x0232, 0x21); wr_XC7011_Reg(0x0233, 0x21); wr_XC7011_Reg(0x0234, 0x22); wr_XC7011_Reg(0x0236, 0x22); wr_XC7011_Reg(0x0237, 0x22); wr_XC7011_Reg(0x0238, 0x21); wr_XC7011_Reg(0x0239, 0x22); wr_XC7011_Reg(0x023a, 0x12); wr_XC7011_Reg(0x023c, 0x3); wr_XC7011_Reg(0x023d, 0x13); wr_XC7011_Reg(0x023e, 0x13); wr_XC7011_Reg(0x023f, 0x13); wr_XC7011_Reg(0x0240, 0x3); wr_XC7011_Reg(0x0248, 0xef); wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x024d, 0x1); wr_XC7011_Reg(0x024e, 0x33); wr_XC7011_Reg(0x024f, 0x2); wr_XC7011_Reg(0x250, 0x22); wr_XC7011_Reg(0x251, 0x1); wr_XC7011_Reg(0x252, 0x99); wr_XC7011_Reg(0x253, 0x1); wr_XC7011_Reg(0x254, 0x6C); wr_XC7011_Reg(0x0013, 0x0d); //LENC END 0D wr_XC7011_Reg(0xfffd, 0x80); //AWB wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0000, 0xcf); // txt部分 wr_XC7011_Reg(0x0730, 0x5d); // win1 startx wr_XC7011_Reg(0x0731, 0x89); // win1 endx wr_XC7011_Reg(0x0732, 0x36); // win1 starty wr_XC7011_Reg(0x0733, 0x4d); // win1 endy wr_XC7011_Reg(0x0734, 0x5a); // win2 startx wr_XC7011_Reg(0x0735, 0x80); // win2 endx wr_XC7011_Reg(0x0736, 0x4f); // win2 starty wr_XC7011_Reg(0x0737, 0x6e); // win2 endy wr_XC7011_Reg(0x0738, 0x3a); // win3 startx wr_XC7011_Reg(0x0739, 0x57); // win3 endx wr_XC7011_Reg(0x073a, 0x53); // win3 starty wr_XC7011_Reg(0x073b, 0x84); // win3 endy wr_XC7011_Reg(0x073c, 0x56); // win4 startx wr_XC7011_Reg(0x073d, 0x65); // win4 endx wr_XC7011_Reg(0x073e, 0x5f); // win4 starty wr_XC7011_Reg(0x073f, 0x87); // win4 endy wr_XC7011_Reg(0x0740, 0x53); // win5 startx wr_XC7011_Reg(0x0741, 0x76); // win5 endx wr_XC7011_Reg(0x0742, 0x42); // win5 starty wr_XC7011_Reg(0x0743, 0x54); // win5 endy wr_XC7011_Reg(0x0744, 0x45); // win6 startx wr_XC7011_Reg(0x0745, 0x59); // win6 endx wr_XC7011_Reg(0x0746, 0x83); // win6 starty wr_XC7011_Reg(0x0747, 0x91); // win6 endy wr_XC7011_Reg(0x0748, 0x00); // win7 startx wr_XC7011_Reg(0x0749, 0x00); // win7 endx wr_XC7011_Reg(0x074a, 0x00); // win7 starty wr_XC7011_Reg(0x074b, 0x00); // win7 endy wr_XC7011_Reg(0x074c, 0x00); // win8 startx wr_XC7011_Reg(0x074d, 0x00); // win8 endx wr_XC7011_Reg(0x074e, 0x00); // win8 starty wr_XC7011_Reg(0x074f, 0x00); // win8 endy wr_XC7011_Reg(0x0750, 0x00); // win9 startx wr_XC7011_Reg(0x0751, 0x00); // win9 endx wr_XC7011_Reg(0x0752, 0x00); // win9 starty wr_XC7011_Reg(0x0753, 0x00); // win9 endy wr_XC7011_Reg(0x0754, 0x00); // win10 startx wr_XC7011_Reg(0x0755, 0x00); // win10 endx wr_XC7011_Reg(0x0756, 0x00); // win10 starty wr_XC7011_Reg(0x0757, 0x00); // win10 endy wr_XC7011_Reg(0x0758, 0x00); // win11 startx wr_XC7011_Reg(0x0759, 0x00); // win11 endx wr_XC7011_Reg(0x075a, 0x00); // win11 starty wr_XC7011_Reg(0x075b, 0x00); // win11 endy wr_XC7011_Reg(0x075c, 0x00); // win12 startx wr_XC7011_Reg(0x075d, 0x00); // win12 endx wr_XC7011_Reg(0x075e, 0x00); // win12 starty wr_XC7011_Reg(0x075f, 0x00); // win12 endy wr_XC7011_Reg(0x0760, 0x00); // win13 startx wr_XC7011_Reg(0x0761, 0x00); // win13 endx wr_XC7011_Reg(0x0762, 0x00); // win13 starty wr_XC7011_Reg(0x0763, 0x00); // win13 endy wr_XC7011_Reg(0x0764, 0x00); // win14 startx wr_XC7011_Reg(0x0765, 0x00); // win14 endx wr_XC7011_Reg(0x0766, 0x00); // win14 starty wr_XC7011_Reg(0x0767, 0x00); // win14 endy wr_XC7011_Reg(0x0768, 0x00); // win15 startx wr_XC7011_Reg(0x0769, 0x00); // win15 endx wr_XC7011_Reg(0x076a, 0x00); // win15 starty wr_XC7011_Reg(0x076b, 0x00); // win15 endy wr_XC7011_Reg(0x076c, 0x00); // win16 startx wr_XC7011_Reg(0x076d, 0x00); // win16 endx wr_XC7011_Reg(0x076e, 0x00); // win16 starty wr_XC7011_Reg(0x076f, 0x00); // win16 endy wr_XC7011_Reg(0x0770, 0x22); // wt1 wt2 wr_XC7011_Reg(0x0771, 0x21); // wt3 wt4 wr_XC7011_Reg(0x0772, 0x21); // wt5 wt6 wr_XC7011_Reg(0x0773, 0x00); // wt7 wt8 wr_XC7011_Reg(0x0774, 0x00); // wt9 wt10 wr_XC7011_Reg(0x0775, 0x00); // wt11 wt12 wr_XC7011_Reg(0x0776, 0x00); // wt13 wt14 wr_XC7011_Reg(0x0777, 0x00); // wt15 wt16 //txtend wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x013c, 0x02); wr_XC7011_Reg(0x0176, 0x06); wr_XC7011_Reg(0x0177, 0x00); wr_XC7011_Reg(0x017a, 0x04); wr_XC7011_Reg(0x017b, 0x00); wr_XC7011_Reg(0x017e, 0x04); wr_XC7011_Reg(0x017f, 0x00); wr_XC7011_Reg(0x0182, 0x04); wr_XC7011_Reg(0x0183, 0x04); wr_XC7011_Reg(0x01aa, 0x05); wr_XC7011_Reg(0x01ab, 0x00); wr_XC7011_Reg(0x01ae, 0x04); wr_XC7011_Reg(0x01af, 0x00); wr_XC7011_Reg(0x01b2, 0x05); wr_XC7011_Reg(0x01b3, 0xa0); wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x0027, 0x01); wr_XC7011_Reg(0x013c, 0x01); wr_XC7011_Reg(0x013d, 0x01); wr_XC7011_Reg(0x013e, 0x00); wr_XC7011_Reg(0x0170, 0x0d); wr_XC7011_Reg(0x0171, 0xff); wr_XC7011_Reg(0x016e, 0x08); wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0708, 0x03); wr_XC7011_Reg(0x0709, 0xf0); wr_XC7011_Reg(0x070a, 0x00); wr_XC7011_Reg(0x070b, 0x0c); wr_XC7011_Reg(0x0001, 0x83); wr_XC7011_Reg(0x0003, 0xe5); wr_XC7011_Reg(0x0096, 0x83); wr_XC7011_Reg(0x019c, 0x0a); wr_XC7011_Reg(0x0019, 0x48); wr_XC7011_Reg(0x071c, 0x0a); //简单白平衡;1a/0a wr_XC7011_Reg(0xfffd, 0x80); //Nathan5 wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x1400, 0x00); wr_XC7011_Reg(0x1401, 0x05); wr_XC7011_Reg(0x1402, 0x0a); wr_XC7011_Reg(0x1403, 0x0f); wr_XC7011_Reg(0x1404, 0x15); wr_XC7011_Reg(0x1405, 0x1a); wr_XC7011_Reg(0x1406, 0x1f); wr_XC7011_Reg(0x1407, 0x24); wr_XC7011_Reg(0x1408, 0x29); wr_XC7011_Reg(0x1409, 0x2e); wr_XC7011_Reg(0x140a, 0x32); wr_XC7011_Reg(0x140b, 0x37); wr_XC7011_Reg(0x140c, 0x3c); wr_XC7011_Reg(0x140d, 0x40); wr_XC7011_Reg(0x140e, 0x45); wr_XC7011_Reg(0x140f, 0x49); wr_XC7011_Reg(0x1410, 0x4e); wr_XC7011_Reg(0x1411, 0x52); wr_XC7011_Reg(0x1412, 0x56); wr_XC7011_Reg(0x1413, 0x5a); wr_XC7011_Reg(0x1414, 0x5e); wr_XC7011_Reg(0x1415, 0x62); wr_XC7011_Reg(0x1416, 0x65); wr_XC7011_Reg(0x1417, 0x69); wr_XC7011_Reg(0x1418, 0x6c); wr_XC7011_Reg(0x1419, 0x6f); wr_XC7011_Reg(0x141a, 0x73); wr_XC7011_Reg(0x141b, 0x76); wr_XC7011_Reg(0x141c, 0x79); wr_XC7011_Reg(0x141d, 0x7c); wr_XC7011_Reg(0x141e, 0x7e); wr_XC7011_Reg(0x141f, 0x81); wr_XC7011_Reg(0x1420, 0x84); wr_XC7011_Reg(0x1421, 0x89); wr_XC7011_Reg(0x1422, 0x8d); wr_XC7011_Reg(0x1423, 0x92); wr_XC7011_Reg(0x1424, 0x96); wr_XC7011_Reg(0x1425, 0x9a); wr_XC7011_Reg(0x1426, 0x9d); wr_XC7011_Reg(0x1427, 0xa1); wr_XC7011_Reg(0x1428, 0xa4); wr_XC7011_Reg(0x1429, 0xa7); wr_XC7011_Reg(0x142a, 0xaa); wr_XC7011_Reg(0x142b, 0xad); wr_XC7011_Reg(0x142c, 0xaf); wr_XC7011_Reg(0x142d, 0xb2); wr_XC7011_Reg(0x142e, 0xb4); wr_XC7011_Reg(0x142f, 0xb6); wr_XC7011_Reg(0x1430, 0xb8); wr_XC7011_Reg(0x1431, 0xbc); wr_XC7011_Reg(0x1432, 0xc0); wr_XC7011_Reg(0x1433, 0xc4); wr_XC7011_Reg(0x1434, 0xc8); wr_XC7011_Reg(0x1435, 0xcc); wr_XC7011_Reg(0x1436, 0xd0); wr_XC7011_Reg(0x1437, 0xd4); wr_XC7011_Reg(0x1438, 0xd8); wr_XC7011_Reg(0x1439, 0xdd); wr_XC7011_Reg(0x143a, 0xe1); wr_XC7011_Reg(0x143b, 0xe6); wr_XC7011_Reg(0x143c, 0xeb); wr_XC7011_Reg(0x143d, 0xf0); wr_XC7011_Reg(0x143e, 0xf5); wr_XC7011_Reg(0x143f, 0xfa); wr_XC7011_Reg(0x1440, 0xff); //Gamma end wr_XC7011_Reg(0x1200, 0x3); //CMX wr_XC7011_Reg(0x1201, 0xD6); wr_XC7011_Reg(0x1202, 0x0); wr_XC7011_Reg(0x1203, 0x9); wr_XC7011_Reg(0x1204, 0x3); wr_XC7011_Reg(0x1205, 0x40); wr_XC7011_Reg(0x1206, 0x1); wr_XC7011_Reg(0x1207, 0x57); wr_XC7011_Reg(0x1208, 0x0); wr_XC7011_Reg(0x1209, 0xC3); wr_XC7011_Reg(0x120A, 0x1); wr_XC7011_Reg(0x120B, 0x1D); wr_XC7011_Reg(0x120C, 0x7); wr_XC7011_Reg(0x120D, 0x9F); wr_XC7011_Reg(0x120E, 0x1); wr_XC7011_Reg(0x120F, 0x60); wr_XC7011_Reg(0x1210, 0x4); wr_XC7011_Reg(0x1211, 0x33); wr_XC7011_Reg(0x1212, 0x2); wr_XC7011_Reg(0x1213, 0xBA); wr_XC7011_Reg(0x1214, 0x3); wr_XC7011_Reg(0x1215, 0x7D); wr_XC7011_Reg(0x1216, 0x3); wr_XC7011_Reg(0x1217, 0xDE); wr_XC7011_Reg(0x1218, 0x5); wr_XC7011_Reg(0x1219, 0x96); wr_XC7011_Reg(0x121A, 0x0); wr_XC7011_Reg(0x121B, 0x66); wr_XC7011_Reg(0x121C, 0x1); wr_XC7011_Reg(0x121D, 0xCC); wr_XC7011_Reg(0x121E, 0x2); wr_XC7011_Reg(0x121F, 0x36); wr_XC7011_Reg(0x1220, 0x0); wr_XC7011_Reg(0x1221, 0xB7); wr_XC7011_Reg(0x1222, 0x2); wr_XC7011_Reg(0x1223, 0xEF); wr_XC7011_Reg(0x122e, 0x10); wr_XC7011_Reg(0x122F, 0x1); wr_XC7011_Reg(0x1230, 0x2); wr_XC7011_Reg(0x1228, 0x0); wr_XC7011_Reg(0x1229, 0x56); wr_XC7011_Reg(0x122A, 0x0); wr_XC7011_Reg(0x122B, 0x99); wr_XC7011_Reg(0x122C, 0x0); wr_XC7011_Reg(0x122D, 0xED); //CMX end wr_XC7011_Reg(0xfffe, 0x30); //YEE wr_XC7011_Reg(0x2000, 0x3f); //3f //bit[5]Yedge en; bit[3]UV_dns_en; bit[2]pre_dns_en; bit[1]ydns_man; bit[0]uvdns_man wr_XC7011_Reg(0x2001, 0x00); //edge_ratio wr_XC7011_Reg(0x2002, 0x07); //Y_dns_level_man wr_XC7011_Reg(0x2003, 0x02); //UV_dns_level_man wr_XC7011_Reg(0x2004, 0x01); //gain list0 wr_XC7011_Reg(0x2005, 0x01); wr_XC7011_Reg(0x2006, 0x02); wr_XC7011_Reg(0x2007, 0x03); wr_XC7011_Reg(0x2008, 0x04); wr_XC7011_Reg(0x2009, 0x05); wr_XC7011_Reg(0x200a, 0x06); wr_XC7011_Reg(0x200b, 0x1f); //gain list7 wr_XC7011_Reg(0x1907, 0xd2); //y_win+2 wr_XC7011_Reg(0x1908, 0x01); //win_man_en wr_XC7011_Reg(0xfffe, 0x30); //RAW_DNS wr_XC7011_Reg(0x0e00, 0x34); //34 //bit[5] Para_man_en bit[4]G_en wr_XC7011_Reg(0x0e01, 0x08); //06 //noise list0 wr_XC7011_Reg(0x0e02, 0x0f); //0c wr_XC7011_Reg(0x0e03, 0x14); //10 wr_XC7011_Reg(0x0e04, 0x24); //20 wr_XC7011_Reg(0x0e05, 0x34); //30 wr_XC7011_Reg(0x0e06, 0x38); wr_XC7011_Reg(0x0e07, 0x38); wr_XC7011_Reg(0x0e08, 0x38); //noise list7 wr_XC7011_Reg(0x0e09, 0x3f); //max_edge_thre wr_XC7011_Reg(0x0e0a, 0x09); //noise_man wr_XC7011_Reg(0x0e0b, 0x20); //edgethre_man wr_XC7011_Reg(0xfffe, 0x30); //RGB_DNS wr_XC7011_Reg(0x130e, 0x02); //bit[3] Para_man_en bit[2:0]Y_noise_man wr_XC7011_Reg(0x130f, 0x08); // bit[5:0]UV_noise_man wr_XC7011_Reg(0xfffe, 0x30); //cip wr_XC7011_Reg(0x0f00, 0xf0); //bit[7:4] noise_y_slp bit[3:0] Lsharp wr_XC7011_Reg(0x0f01, 0x00); wr_XC7011_Reg(0x0f02, 0x00); //noise list0 wr_XC7011_Reg(0x0f03, 0x00); wr_XC7011_Reg(0x0f04, 0x00); wr_XC7011_Reg(0x0f05, 0x00); wr_XC7011_Reg(0x0f06, 0x00); wr_XC7011_Reg(0x0f07, 0x00); wr_XC7011_Reg(0x0f08, 0x00); wr_XC7011_Reg(0x0f09, 0x00); //noise list7 wr_XC7011_Reg(0x0f0a, 0x00); //min_shp wr_XC7011_Reg(0x0f0b, 0x00); //max_shp wr_XC7011_Reg(0x0f0c, 0x00); //min_detail wr_XC7011_Reg(0x0f0d, 0x00); //max_detail wr_XC7011_Reg(0x0f0e, 0x00); //min_shp_gain wr_XC7011_Reg(0x0f0f, 0x00); //max_shp_gain wr_XC7011_Reg(0xfffe, 0x14); //saturation adjust wr_XC7011_Reg(0x0160, 0x00); //bAutoSat_en wr_XC7011_Reg(0x0162, 0x40); //sat_u[0] wr_XC7011_Reg(0x0163, 0x38); //sat_u[1] wr_XC7011_Reg(0x0164, 0x30); //sat_u[2] wr_XC7011_Reg(0x0165, 0x2c); //sat_u[3] wr_XC7011_Reg(0x0166, 0x28); //sat_u[4] wr_XC7011_Reg(0x0167, 0x24); //sat_u[5] wr_XC7011_Reg(0x0168, 0x44); //sat_v[0] wr_XC7011_Reg(0x0169, 0x3c); //sat_v[1] wr_XC7011_Reg(0x016a, 0x34); //sat_v[2] wr_XC7011_Reg(0x016b, 0x30); //sat_v[3] wr_XC7011_Reg(0x016c, 0x2c); //sat_v[4] wr_XC7011_Reg(0x016d, 0x28); //sat_v[5] //TOP wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0000, 0xcf); wr_XC7011_Reg(0x0001, 0xb3); //a3 wr_XC7011_Reg(0x0003, 0xe5); wr_XC7011_Reg(0x071c, 0x0a); wr_XC7011_Reg(0x1700, 0x09); wr_XC7011_Reg(0x1701, 0x40); wr_XC7011_Reg(0x1702, 0x40); wr_XC7011_Reg(0x1704, 0x26); } void xc7011_day_int() { wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x00aa, 0x01); wr_XC7011_Reg(0x00ab, 0xc0); //max gain wr_XC7011_Reg(0x0060, 0x00); wr_XC7011_Reg(0x006c, 0x01); wr_XC7011_Reg(0x006d, 0x90); wr_XC7011_Reg(0x0071, 0xc0); wr_XC7011_Reg(0x0092, 0x45); //max exposure //2d wr_XC7011_Reg(0x0093, 0x00); //AE window wr_XC7011_Reg(0x003f, 0x18); wr_XC7011_Reg(0x0040, 0x18); wr_XC7011_Reg(0x0041, 0x18); wr_XC7011_Reg(0x0042, 0x18); wr_XC7011_Reg(0x0043, 0x18); wr_XC7011_Reg(0x0044, 0x18); wr_XC7011_Reg(0x0045, 0x18); wr_XC7011_Reg(0x0046, 0x18); wr_XC7011_Reg(0x0047, 0x18); wr_XC7011_Reg(0x0048, 0x18); wr_XC7011_Reg(0x0049, 0x18); wr_XC7011_Reg(0x004a, 0x60); wr_XC7011_Reg(0x004b, 0x60); wr_XC7011_Reg(0x004c, 0x60); wr_XC7011_Reg(0x004d, 0x30); wr_XC7011_Reg(0x004e, 0x10); wr_XC7011_Reg(0x004f, 0x60); wr_XC7011_Reg(0x0050, 0x60); wr_XC7011_Reg(0x0051, 0x60); wr_XC7011_Reg(0x0052, 0x10); wr_XC7011_Reg(0x0053, 0x20); wr_XC7011_Reg(0x0054, 0x20); wr_XC7011_Reg(0x0055, 0x20); wr_XC7011_Reg(0x0056, 0x20); wr_XC7011_Reg(0x0057, 0x20); wr_XC7011_Reg(0x005c, 0x00); wr_XC7011_Reg(0x005d, 0x00); wr_XC7011_Reg(0x005e, 0x00); //attention block cfg wr_XC7011_Reg(0x005f, 0x00); wr_XC7011_Reg(0x003a, 0x01); wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0000, 0x4f); //4f wr_XC7011_Reg(0x0001, 0xa1); wr_XC7011_Reg(0x0013, 0x20); //20 wr_XC7011_Reg(0x130e, 0x00); wr_XC7011_Reg(0x130f, 0x00); wr_XC7011_Reg(0x0e00, 0x34); wr_XC7011_Reg(0x0e0a, 0x00); wr_XC7011_Reg(0x0e0b, 0x78); wr_XC7011_Reg(0x2000, 0x3f); wr_XC7011_Reg(0x2001, 0x00); //0x13 wr_XC7011_Reg(0x2002, 0x04); //Y_dns_level_man wr_XC7011_Reg(0x2003, 0x02); //UV_dns_level_man wr_XC7011_Reg(0x0f00, 0x00); wr_XC7011_Reg(0x0f0a, 0x00); //min_shp //0x20 wr_XC7011_Reg(0x0f0b, 0x00); //max_shp //0x30 wr_XC7011_Reg(0x0f0c, 0x00); //min_detail wr_XC7011_Reg(0x0f0d, 0x00); //max_detail wr_XC7011_Reg(0x0f0e, 0x01); //min_shp_gain wr_XC7011_Reg(0x0f0f, 0x0f); //max_shp_gain wr_XC7011_Reg(0x1701, 0xa8); //x070 wr_XC7011_Reg(0x1702, 0xa0); //{wr_XC7011_Reg(0x70 wr_XC7011_Reg(0x1704, 0x1e); //21 wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x0004, 0x00); wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x1300, 0x03); //写入寄存的个数 wr_XC7011_Reg(0x1301, 0x32); //第一个寄存器地址H wr_XC7011_Reg(0x1302, 0x0e); //第一个寄存器地址L wr_XC7011_Reg(0x1303, 0x02); //2 //第一个寄存器的值 wr_XC7011_Reg(0x1304, 0x32); //第二个寄存器地址H wr_XC7011_Reg(0x1305, 0x0f); //第二个寄存器地址L wr_XC7011_Reg(0x1306, 0xee); //ee //第二个寄存器的值 wr_XC7011_Reg(0x1307, 0x39); //第二个寄存器地址 wr_XC7011_Reg(0x1308, 0x08); //第二个寄存器地址L wr_XC7011_Reg(0x1309, 0x13); //第二个寄存器的值blc wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x0007, 0x60); //sensor I2C地址 wr_XC7011_Reg(0x000d, 0x31); //[7:4]速度[3:0]模式 wr_XC7011_Reg(0x0009, 0x00); wr_XC7011_Reg(0x00c4, 0x10); wr_XC7011_Reg(0x00c0, 0x01); } void xc7011_night_int() { wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x00aa, 0x01); wr_XC7011_Reg(0x00ab, 0xc0); //max gain wr_XC7011_Reg(0x0060, 0x00); wr_XC7011_Reg(0x006c, 0x01); //0x00 //gain wr_XC7011_Reg(0x006d, 0x40); //0xf0 wr_XC7011_Reg(0x0071, 0xc0); //0xf0 wr_XC7011_Reg(0x0092, 0x45); //maxexposure//2d wr_XC7011_Reg(0x0093, 0x00); wr_XC7011_Reg(0x003f, 0x10); wr_XC7011_Reg(0x0040, 0x10); wr_XC7011_Reg(0x0041, 0x10); wr_XC7011_Reg(0x0042, 0x10); wr_XC7011_Reg(0x0043, 0x10); wr_XC7011_Reg(0x0044, 0x10); wr_XC7011_Reg(0x0045, 0x10); wr_XC7011_Reg(0x0046, 0x10); wr_XC7011_Reg(0x0047, 0x10); wr_XC7011_Reg(0x0048, 0x10); wr_XC7011_Reg(0x0049, 0x10); wr_XC7011_Reg(0x004a, 0x60); wr_XC7011_Reg(0x004b, 0x80); wr_XC7011_Reg(0x004c, 0x60); wr_XC7011_Reg(0x004d, 0x10); wr_XC7011_Reg(0x004e, 0x10); wr_XC7011_Reg(0x004f, 0xf0); wr_XC7011_Reg(0x0050, 0xf0); wr_XC7011_Reg(0x0051, 0xf0); wr_XC7011_Reg(0x0052, 0x18); wr_XC7011_Reg(0x0053, 0x10); wr_XC7011_Reg(0x0054, 0x10); wr_XC7011_Reg(0x0055, 0x10); wr_XC7011_Reg(0x0056, 0x10); wr_XC7011_Reg(0x0057, 0x10); wr_XC7011_Reg(0x005c, 0x00); wr_XC7011_Reg(0x005d, 0x07); wr_XC7011_Reg(0x005e, 0x38); //attentionblockcfg wr_XC7011_Reg(0x005f, 0x00); wr_XC7011_Reg(0x003a, 0x01); //单次有效,设置之后权重和关注区域生效 wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0000, 0x4f); //4f wr_XC7011_Reg(0x0001, 0xa1); wr_XC7011_Reg(0x0013, 0x20); //20 wr_XC7011_Reg(0x130e, 0x00); wr_XC7011_Reg(0x130f, 0x00); wr_XC7011_Reg(0x0e00, 0x34); wr_XC7011_Reg(0x0e0a, 0x00); wr_XC7011_Reg(0x0e0b, 0x58); wr_XC7011_Reg(0x2000, 0x3f); wr_XC7011_Reg(0x2001, 0x00); wr_XC7011_Reg(0x2002, 0x04); //Y_dns_level_man wr_XC7011_Reg(0x2003, 0x02); //UV_dns_level_man wr_XC7011_Reg(0x0f00, 0x00); wr_XC7011_Reg(0x0f02, 0x01); wr_XC7011_Reg(0x0f0a, 0x01); //min_shp wr_XC7011_Reg(0x0f0b, 0x03); //max_shp wr_XC7011_Reg(0x0f0c, 0x00); //min_detail wr_XC7011_Reg(0x0f0d, 0x00); //max_detail wr_XC7011_Reg(0x0f0e, 0x01); //min_shp_gain wr_XC7011_Reg(0x0f0f, 0x0f); //max_shp_gain wr_XC7011_Reg(0x1701, 0xa0); //x070 wr_XC7011_Reg(0x1702, 0xa0); //{wr_XC7011_Reg(0x70 wr_XC7011_Reg(0x1704, 0x24); //24 wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x0004, 0x00); wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x1300, 0x03); //写入寄存的个数 wr_XC7011_Reg(0x1301, 0x32); //第一个寄存器地址H wr_XC7011_Reg(0x1302, 0x0e); //第一个寄存器地址L wr_XC7011_Reg(0x1303, 0x02); //02//第一个寄存器的值 wr_XC7011_Reg(0x1304, 0x32); //第二个寄存器地址H wr_XC7011_Reg(0x1305, 0x0f); //第二个寄存器地址L wr_XC7011_Reg(0x1306, 0xee); //ee//第二个寄存器的值 wr_XC7011_Reg(0x1307, 0x39); //第二个寄存器地址 wr_XC7011_Reg(0x1308, 0x08); //第二个寄存器地址L wr_XC7011_Reg(0x1309, 0x13); //第二个寄存器的值blc wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x0007, 0x60); //sensorI2C地址 wr_XC7011_Reg(0x000d, 0x31); //[7:4]速度[3:0]模式 wr_XC7011_Reg(0x0009, 0x00); wr_XC7011_Reg(0x00c4, 0x10); wr_XC7011_Reg(0x00c0, 0x01); } void xc7011_lata_night_int() { wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x0060, 0x00); wr_XC7011_Reg(0x006c, 0x01); //0x00 //gain wr_XC7011_Reg(0x006d, 0xf0); //0xf0 wr_XC7011_Reg(0x0071, 0xc0); //0xf0 wr_XC7011_Reg(0x0092, 0x4f); //maxexposure//2d wr_XC7011_Reg(0x0093, 0x00); wr_XC7011_Reg(0x003f, 0x10); wr_XC7011_Reg(0x0040, 0x10); wr_XC7011_Reg(0x0041, 0x10); wr_XC7011_Reg(0x0042, 0x10); wr_XC7011_Reg(0x0043, 0x10); wr_XC7011_Reg(0x0044, 0x10); wr_XC7011_Reg(0x0045, 0x10); wr_XC7011_Reg(0x0046, 0x20); wr_XC7011_Reg(0x0047, 0x10); wr_XC7011_Reg(0x0048, 0x10); wr_XC7011_Reg(0x0049, 0x10); wr_XC7011_Reg(0x004a, 0x20); wr_XC7011_Reg(0x004b, 0x40); wr_XC7011_Reg(0x004c, 0x20); wr_XC7011_Reg(0x004d, 0x10); wr_XC7011_Reg(0x004e, 0x10); wr_XC7011_Reg(0x004f, 0x40); wr_XC7011_Reg(0x0050, 0x60); wr_XC7011_Reg(0x0051, 0x40); wr_XC7011_Reg(0x0052, 0x18); wr_XC7011_Reg(0x0053, 0x18); wr_XC7011_Reg(0x0054, 0x30); wr_XC7011_Reg(0x0055, 0x40); wr_XC7011_Reg(0x0056, 0x30); wr_XC7011_Reg(0x0057, 0x18); wr_XC7011_Reg(0x005c, 0x00); wr_XC7011_Reg(0x005d, 0x07); wr_XC7011_Reg(0x005e, 0x38); //attentionblockcfg wr_XC7011_Reg(0x005f, 0x00); wr_XC7011_Reg(0x003a, 0x01); //单次有效,设置之后权重和关注区域生效 wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0000, 0x4f); //4f wr_XC7011_Reg(0x0001, 0xa1); wr_XC7011_Reg(0x0013, 0x20); //20 wr_XC7011_Reg(0x130e, 0x00); wr_XC7011_Reg(0x130f, 0x00); wr_XC7011_Reg(0x0e00, 0x34); wr_XC7011_Reg(0x0e0a, 0x00); wr_XC7011_Reg(0x0e0b, 0x58); wr_XC7011_Reg(0x2000, 0x3f); wr_XC7011_Reg(0x2001, 0x00); wr_XC7011_Reg(0x2002, 0x04); //Y_dns_level_man wr_XC7011_Reg(0x2003, 0x02); //UV_dns_level_man wr_XC7011_Reg(0x0f00, 0x00); wr_XC7011_Reg(0x0f02, 0x01); wr_XC7011_Reg(0x0f0a, 0x01); //min_shp wr_XC7011_Reg(0x0f0b, 0x03); //max_shp wr_XC7011_Reg(0x0f0c, 0x00); //min_detail wr_XC7011_Reg(0x0f0d, 0x00); //max_detail wr_XC7011_Reg(0x0f0e, 0x01); //min_shp_gain wr_XC7011_Reg(0x0f0f, 0x0f); //max_shp_gain wr_XC7011_Reg(0x1701, 0xa0); //x070 wr_XC7011_Reg(0x1702, 0xa0); //{wr_XC7011_Reg(0x70 wr_XC7011_Reg(0x1704, 0x24); //24 wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x0004, 0x00); wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x1300, 0x03); //写入寄存的个数 wr_XC7011_Reg(0x1301, 0x32); //第一个寄存器地址H wr_XC7011_Reg(0x1302, 0x0e); //第一个寄存器地址L wr_XC7011_Reg(0x1303, 0x04); //02//第一个寄存器的值 wr_XC7011_Reg(0x1304, 0x32); //第二个寄存器地址H wr_XC7011_Reg(0x1305, 0x0f); //第二个寄存器地址L wr_XC7011_Reg(0x1306, 0xee); //ee//第二个寄存器的值 wr_XC7011_Reg(0x1307, 0x39); //第二个寄存器地址 wr_XC7011_Reg(0x1308, 0x08); //第二个寄存器地址L wr_XC7011_Reg(0x1309, 0x13); //第二个寄存器的值blc wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x0007, 0x60); //sensorI2C地址 wr_XC7011_Reg(0x000d, 0x31); //[7:4]速度[3:0]模式 wr_XC7011_Reg(0x0009, 0x00); wr_XC7011_Reg(0x00c4, 0x10); wr_XC7011_Reg(0x00c0, 0x01); } void XC7011_bypass_on() { wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x004d, 0x01); } void XC7011_bypass_off() { wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x50); wr_XC7011_Reg(0x004d, 0x00); }; void XC7011_DVP_INT() { wr_XC7011_Reg(0x0103, 0x01); wr_XC7011_Reg(0x0100, 0x00); wr_XC7011_Reg(0x4500, 0x51); wr_XC7011_Reg(0x320e, 0x02); //30fps 25:900 30:750 wr_XC7011_Reg(0x320f, 0xee); wr_XC7011_Reg(0x3e01, 0x38); wr_XC7011_Reg(0x3635, 0xa0); wr_XC7011_Reg(0x3620, 0x28); wr_XC7011_Reg(0x3309, 0xa0); wr_XC7011_Reg(0x331f, 0x9d); wr_XC7011_Reg(0x3321, 0x9f); wr_XC7011_Reg(0x3306, 0x65); wr_XC7011_Reg(0x330b, 0x66); wr_XC7011_Reg(0x3e08, 0x03); wr_XC7011_Reg(0x3e07, 0x00); wr_XC7011_Reg(0x3e09, 0x10); wr_XC7011_Reg(0x3367, 0x18); //pchtx min wr_XC7011_Reg(0x335e, 0x01); //ana dithering wr_XC7011_Reg(0x335f, 0x03); wr_XC7011_Reg(0x337c, 0x04); wr_XC7011_Reg(0x337d, 0x06); wr_XC7011_Reg(0x33a0, 0x05); wr_XC7011_Reg(0x3301, 0x05); wr_XC7011_Reg(0x3302, 0x7d); wr_XC7011_Reg(0x3633, 0x43); wr_XC7011_Reg(0x3908, 0x11); wr_XC7011_Reg(0x3621, 0x28); wr_XC7011_Reg(0x3622, 0x02); //0714 wr_XC7011_Reg(0x3637, 0x1c); wr_XC7011_Reg(0x3308, 0x1c); wr_XC7011_Reg(0x3367, 0x10); wr_XC7011_Reg(0x337f, 0x03); //new auto precharge 330e in 3372 [7:6] 11: close div_rst 00:open div_rst wr_XC7011_Reg(0x3368, 0x04);//auto precharge wr_XC7011_Reg(0x3369, 0x00); wr_XC7011_Reg(0x336a, 0x00); wr_XC7011_Reg(0x336b, 0x00); wr_XC7011_Reg(0x3367, 0x08); wr_XC7011_Reg(0x330e, 0x30); wr_XC7011_Reg(0x3366, 0x7c); // div_rst gap //0805 wr_XC7011_Reg(0x3635, 0xc4); //fpn wr_XC7011_Reg(0x3621, 0x20); //col_fpn wr_XC7011_Reg(0x3334, 0x40); wr_XC7011_Reg(0x3333, 0x10); wr_XC7011_Reg(0x3302, 0x3d); //0807 wr_XC7011_Reg(0x335e, 0x01); //ana dithering wr_XC7011_Reg(0x335f, 0x02); wr_XC7011_Reg(0x337c, 0x03); wr_XC7011_Reg(0x337d, 0x05); wr_XC7011_Reg(0x33a0, 0x04); wr_XC7011_Reg(0x3301, 0x03); wr_XC7011_Reg(0x3633, 0x48); wr_XC7011_Reg(0x3670, 0x0a); //[1]:3630 logic ctrl real value in 3681 wr_XC7011_Reg(0x367c, 0x07); //gain0 wr_XC7011_Reg(0x367d, 0x0f); //gain1 wr_XC7011_Reg(0x3674, 0x20); //gain1 wr_XC7011_Reg(0x3631, 0x84); wr_XC7011_Reg(0x3622, 0x06); wr_XC7011_Reg(0x3630, 0x20); wr_XC7011_Reg(0x3620, 0x08); //col_fpn //wr_XC7011_Reg(0x330b, 0x66); wr_XC7011_Reg(0x3638, 0x1f); //ramp by clk wr_XC7011_Reg(0x3625, 0x02); wr_XC7011_Reg(0x3637, 0x1e); wr_XC7011_Reg(0x3636, 0x25); wr_XC7011_Reg(0x3306, 0x1c); //5.0k wr_XC7011_Reg(0x3637, 0x1a); wr_XC7011_Reg(0x331e, 0x0c); wr_XC7011_Reg(0x331f, 0x9c); wr_XC7011_Reg(0x3320, 0x0c); wr_XC7011_Reg(0x3321, 0x9c); wr_XC7011_Reg(0x366e, 0x08); // ofs auto en [3] wr_XC7011_Reg(0x366f, 0x2a); // ofs+finegain real ofs in wr_XC7011_Reg(0x3687[4:0] wr_XC7011_Reg(0x3622, 0x16); //sig clamp wr_XC7011_Reg(0x363b, 0x0c); //hvdd wr_XC7011_Reg(0x3639, 0x0a); wr_XC7011_Reg(0x3632, 0x28); wr_XC7011_Reg(0x3038, 0x84); //0814 wr_XC7011_Reg(0x3635, 0xc0); //0819 //digital ctrl wr_XC7011_Reg(0x3f00, 0x07); // bit[2] = 1 wr_XC7011_Reg(0x3f04, 0x02); wr_XC7011_Reg(0x3f05, 0xfc); // hts / 2 - wr_XC7011_Reg(0x24 wr_XC7011_Reg(0x3802, 0x01); wr_XC7011_Reg(0x3235, 0x07); wr_XC7011_Reg(0x3236, 0x06); // vts x 2 - 2 //0831 wr_XC7011_Reg(0x3639, 0x09); wr_XC7011_Reg(0x3670, 0x02); //0904 wr_XC7011_Reg(0x3635, 0x80); //0906 //wr_XC7011_Reg(0x320c, 0x05); //wr_XC7011_Reg(0x320d, 0xa0); //wr_XC7011_Reg(0x320e, 0x03); //wr_XC7011_Reg(0x320f, 0xe8); wr_XC7011_Reg(0x320e, 0x02); wr_XC7011_Reg(0x320f, 0xee); wr_XC7011_Reg(0x3235, 0x05); wr_XC7011_Reg(0x3236, 0xda); wr_XC7011_Reg(0x3039, 0x51); wr_XC7011_Reg(0x303a, 0xba); wr_XC7011_Reg(0x3034, 0x06); wr_XC7011_Reg(0x3035, 0xe2); //for AE control per frame wr_XC7011_Reg(0x3633, 0x53); wr_XC7011_Reg(0x3802, 0x00); wr_XC7011_Reg(0x3e03, 0x0b);//gain mode --->0908 wr_XC7011_Reg(0x3640, 0x03); wr_XC7011_Reg(0x0100, 0x01); #if ((FLIP_XC7011==1)/*&&(MIRROR_XC7011==1)*/) wr_XC7011_Reg(0x3221, 0x66); /* #elif ((FLIP_XC7011==1)&&(MIRROR_XC7011==0)) wr_XC7011_Reg(0x3221, 0x06); #elif ((FLIP_XC7011==0)&&(MIRROR_XC7011==1)) wr_XC7011_Reg(0x3221, 0x60); */ #else wr_XC7011_Reg(0x3221, 0x00); #endif }; void XD7011_Black(void) { wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0000, 0xcf); wr_XC7011_Reg(0x0001, 0xb3); //a3 wr_XC7011_Reg(0x0003, 0xe5); wr_XC7011_Reg(0x071c, 0x0a); wr_XC7011_Reg(0x1700, 0x81); //81黑白 09彩色 wr_XC7011_Reg(0x1701, 0x00); wr_XC7011_Reg(0x1702, 0x00); wr_XC7011_Reg(0x1704, 0x20); wr_XC7011_Reg(0x1707, 0x10); wr_XC7011_Reg(0xfffe, 0x14); wr_XC7011_Reg(0x00aa, 0x07); wr_XC7011_Reg(0x00ab, 0xc0); //max gain wr_XC7011_Reg(0xfffe, 0x30); //cip wr_XC7011_Reg(0x0f00, 0xf0); //bit[7:4] noise_y_slp bit[3:0] Lsharp wr_XC7011_Reg(0x0f01, 0x04); wr_XC7011_Reg(0x0f02, 0x18); //noise list0 wr_XC7011_Reg(0x0f03, 0x1f); wr_XC7011_Reg(0x0f04, 0x28); wr_XC7011_Reg(0x0f05, 0x2f); wr_XC7011_Reg(0x0f06, 0x38); wr_XC7011_Reg(0x0f07, 0x3f); wr_XC7011_Reg(0x0f08, 0x48); wr_XC7011_Reg(0x0f09, 0x4f); //noise list7 } void XD7011_Color(void) { wr_XC7011_Reg(0xfffe, 0x30); wr_XC7011_Reg(0x0000, 0xcf); wr_XC7011_Reg(0x0001, 0xb3); //a3 wr_XC7011_Reg(0x0003, 0xe5); wr_XC7011_Reg(0x071c, 0x0a); wr_XC7011_Reg(0x1700, 0x09); wr_XC7011_Reg(0x1701, 0x40); wr_XC7011_Reg(0x1702, 0x40); wr_XC7011_Reg(0x1704, 0x20); wr_XC7011_Reg(0xfffe, 0x30); //cip wr_XC7011_Reg(0x0f00, 0xf0); //bit[7:4] noise_y_slp bit[3:0] Lsharp wr_XC7011_Reg(0x0f01, 0x00); wr_XC7011_Reg(0x0f02, 0x00); //noise list0 wr_XC7011_Reg(0x0f03, 0x00); wr_XC7011_Reg(0x0f04, 0x00); wr_XC7011_Reg(0x0f05, 0x00); wr_XC7011_Reg(0x0f06, 0x00); wr_XC7011_Reg(0x0f07, 0x00); wr_XC7011_Reg(0x0f08, 0x00); wr_XC7011_Reg(0x0f09, 0x00); //noise list7 } u8 xc7011_color = 1; void XC7011_SCENE_SWITCH(void) { static int g_cur_mode = -1; static u16 data_com = 0; u32 temp; u8 pid = 0x00; u8 ver = 0x00; wr_XC7011_Reg(0xfffd, 0x80); wr_XC7011_Reg(0xfffe, 0x14); rd_XC7011_Reg(0x0106, &pid); rd_XC7011_Reg(0x0107, &ver); data_com = (((0x00ff & pid) << 8) | (0x00ff & ver)); // printf("g_cur_mode==== %d\n",g_cur_mode); // printf("data_com==== %x\n",data_com); temp = 1;//db_select("tvm"); if (temp == 2) { if (data_com >= 0x1c0) { XD7011_Black(); xc7011_color = 1; } else if (data_com <= 56) { XD7011_Color(); xc7011_color = 2; } } else if (temp == 1) { if (xc7011_color != 3) { XD7011_Color(); xc7011_color = 3; } } else if (temp == 0) { if (xc7011_color != 0) { XD7011_Color(); xc7011_color = 0; } } if (g_cur_mode == -1) { g_cur_mode = 0; // xc7011_day_int(); } if (data_com >= 0x0020 && data_com <= 0x0090) { if (g_cur_mode != 0) { g_cur_mode = 0; // xc7011_day_int(); // puts("\nSC1233_SCENE_SWITCH0000000000000000000000\n"); } } else if (data_com >= 0x120 && data_com <= 0x0500) { if (g_cur_mode != 1) { g_cur_mode = 1; // xc7011_night_int(); // puts("\nSC1233_SCENE_SWITCH11111111111111111111\n"); } } else if (data_com >= 0x600 && data_com <= 0x0800) { if (g_cur_mode != 2) { g_cur_mode = 2; // xc7011_lata_night_int(); // puts("\nSC1233_SCENE_SWITCH2222222222222222222222222\n"); } } } void xc7011_reset(u8 isp_dev) { u8 gpio; u8 pwdn_gpio; if (isp_dev == ISP_DEV_0) { gpio = reset_gpio[0]; pwdn_gpio = pwdn_gpios[0]; } else { gpio = reset_gpio[1]; pwdn_gpio = pwdn_gpios[1]; } if (pwdn_gpio != (u8) - 1) { gpio_direction_output(pwdn_gpio, 0); } if (gpio != (u8) - 1) { gpio_direction_output(gpio, 1); gpio_direction_output(gpio, 0); os_time_dly(1); gpio_direction_output(gpio, 1); } } s32 _xc7011_id_check(void) { u8 id_hi; u8 id_lo; u32 i ; for (i = 0; i < 5; i++) { // rd_XC7011_Reg(0xfffb, &id_hi); rd_XC7011_Reg(0xfffc, &id_lo); if (id_hi == 0x70 && id_lo == 0x11) { puts("Sensor PID \n"); put_u32hex(id_hi); put_u32hex(id_lo); puts("\n----hello XC7011-----\n"); return 0; } } puts("\n----not XC7011-----\n"); return -1; } static u8 cur_sensor_type = 0xff; s32 xc7011_id_check(u8 isp_dev, u32 _reset_gpio, u32 _pwdn_gpio) { puts("\n xc7011 id check\n"); if (!iic) { if (isp_dev == ISP_DEV_0) { iic = dev_open("iic0", 0); } else { iic = dev_open("iic1", 0); } if (!iic) { return -1; } } else { if (cur_sensor_type != isp_dev) { return -1; } } reset_gpio[isp_dev] = (u8)_reset_gpio; pwdn_gpios[isp_dev] = (u8)_pwdn_gpio; xc7011_reset(isp_dev); if (0 != _xc7011_id_check()) { dev_close(iic); iic = NULL; return -1; } cur_sensor_type = isp_dev; return 0; } void XC7011_config_SENSOR(u16 *width, u16 *height, u8 *format, u8 *frame_freq) { u32 i; u32 frame_exp_rows; u8 tmp; // for (i = 0; i < sizeof(XC7011_default_regs) / sizeof(Sensor_reg_ini); i++) { // wrXC7011Reg(XC7011_default_regs[i].addr, XC7011_default_regs[i].value); // } // for (i = 0; i < sizeof(bypass_on) / sizeof(Sensor_reg_ini); i++) { // wrXC7011Reg(bypass_on[i].addr, bypass_on[i].value); // } // // for (i = 0; i < sizeof(H42_regs) / sizeof(Sensor_reg_inix); i++) { // wrH42Reg(H42_regs[i].addr, H42_regs[i].value); // } // // for (i = 0; i < sizeof(bypass_off) / sizeof(Sensor_reg_ini); i++) { // wrXC7011Reg(bypass_off[i].addr, bypass_off[i].value); // } return; } s32 XC7011_init(u8 isp_dev, u16 *width, u16 *height, u8 *format, u8 *frame_freq) { //XC7011_config_SENSOR(width, height, format, frame_freq); // XC7011_reset(); xc7011_reset(isp_dev); XC7011_Init(); XC7011_bypass_on(); puts("\n\n XC7011_init \n\n"); XC7011_DVP_INT(); XC7011_bypass_off(); /*sys_timer_add(NULL, XC7011_SCENE_SWITCH, 1000);*/ return 0; } s32 xc7011_set_output_size(u16 *width, u16 *height, u8 *freq) { return 0; } s32 xc7011_power_ctl(u8 isp_dev, u8 is_work) { return 0; } u8 xc7011_fps() { return 0;//30fps } u8 xc7011_valid_signal(void *p) { return 1;//valid } static u8 xc7011_mode_det(void *p) { return 0; } // *INDENT-OFF* REGISTER_CAMERA(XC7011) = { .logo = "XC7011", .isp_dev = ISP_DEV_NONE, .in_format = SEN_IN_FORMAT_YUYV, .mbus_type = SEN_MBUS_PARALLEL, .mbus_config = SEN_MBUS_DATA_WIDTH_8B | SEN_MBUS_HSYNC_ACTIVE_HIGH | \ SEN_MBUS_PCLK_SAMPLE_FALLING | SEN_MBUS_VSYNC_ACTIVE_LOW, #if CONFIG_CAMERA_H_V_EXCHANGE .sync_config = SEN_MBUS_SYNC0_VSYNC_SYNC1_HSYNC,//WL82/AC791才可以H-V SYNC互换,请留意 #endif .fps = CONFIG_INPUT_FPS, .out_fps = CONFIG_INPUT_FPS, .sen_size = {XC7011_DEVP_INPUT_W, XC7011_DEVP_INPUT_H}, .cap_fps = CONFIG_INPUT_FPS, .sen_cap_size = {XC7011_DEVP_INPUT_W, XC7011_DEVP_INPUT_H}, .ops = { .avin_fps = xc7011_fps, .avin_valid_signal = xc7011_valid_signal, .avin_mode_det = xc7011_mode_det, .sensor_check = xc7011_id_check, .init = XC7011_init, .set_size_fps = xc7011_set_output_size, .power_ctrl = xc7011_power_ctl, .sleep = NULL, .wakeup = NULL, .write_reg = XC7011_dev_wr_reg, .read_reg = XC7011_dev_rd_reg, .set_sensor_reverse = NULL, } }; #endif