- Add sensor GC2145 GC0308 GC032A - Make xclk driver more standard - Update README.md - Add an option to adjust the DMA buffer size Co-authored-by: zhouli <zhouli@espressif.com>
401 lines
6.8 KiB
C
401 lines
6.8 KiB
C
#ifndef _GC032A_SETTINGS_H_
|
|
#define _GC032A_SETTINGS_H_
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
#include "esp_attr.h"
|
|
#include "gc032a_regs.h"
|
|
|
|
|
|
#define REG_DLY 0xffff
|
|
#define REGLIST_TAIL 0x0000
|
|
|
|
|
|
/*
|
|
* The default register settings, as obtained from OmniVision. There
|
|
* is really no making sense of most of these - lots of "reserved" values
|
|
* and such.
|
|
*
|
|
*/
|
|
static const uint16_t gc032a_default_regs[][2] = {
|
|
/*System*/
|
|
{0xf3, 0xff},
|
|
{0xf5, 0x06},
|
|
{0xf7, 0x01},
|
|
{0xf8, 0x03},
|
|
{0xf9, 0xce},
|
|
{0xfa, 0x00},
|
|
{0xfc, 0x02},
|
|
{0xfe, 0x02},
|
|
{0x81, 0x03},
|
|
|
|
{0xfe, 0x00},
|
|
{0x77, 0x64},
|
|
{0x78, 0x40},
|
|
{0x79, 0x60},
|
|
/*ANALOG & CISCTL*/
|
|
{0xfe, 0x00},
|
|
{0x03, 0x01},
|
|
{0x04, 0xce},
|
|
{0x05, 0x01},
|
|
{0x06, 0xad},
|
|
{0x07, 0x00},
|
|
{0x08, 0x10},
|
|
{0x0a, 0x00},
|
|
{0x0c, 0x00},
|
|
{0x0d, 0x01},
|
|
{0x0e, 0xe8}, // height 488
|
|
{0x0f, 0x02},
|
|
{0x10, 0x88}, // width 648
|
|
{0x17, 0x54},
|
|
{0x19, 0x08},
|
|
{0x1a, 0x0a},
|
|
{0x1f, 0x40},
|
|
{0x20, 0x30},
|
|
{0x2e, 0x80},
|
|
{0x2f, 0x2b},
|
|
{0x30, 0x1a},
|
|
{0xfe, 0x02},
|
|
{0x03, 0x02},
|
|
{0x05, 0xd7},
|
|
{0x06, 0x60},
|
|
{0x08, 0x80},
|
|
{0x12, 0x89},
|
|
|
|
/*blk*/
|
|
{0xfe, 0x00},
|
|
{0x18, 0x02},
|
|
{0xfe, 0x02},
|
|
{0x40, 0x22},
|
|
{0x45, 0x00},
|
|
{0x46, 0x00},
|
|
{0x49, 0x20},
|
|
{0x4b, 0x3c},
|
|
{0x50, 0x20},
|
|
{0x42, 0x10},
|
|
|
|
/*isp*/
|
|
{0xfe, 0x01},
|
|
{0x0a, 0xc5},
|
|
{0x45, 0x00},
|
|
{0xfe, 0x00},
|
|
{0x40, 0xff},
|
|
{0x41, 0x25},
|
|
{0x42, 0xcf},
|
|
{0x43, 0x10},
|
|
{0x44, 0x83},
|
|
{0x46, 0x23},
|
|
{0x49, 0x03},
|
|
{0x52, 0x02},
|
|
{0x54, 0x00},
|
|
{0xfe, 0x02},
|
|
{0x22, 0xf6},
|
|
|
|
/*Shading*/
|
|
{0xfe, 0x01},
|
|
{0xc1, 0x38},
|
|
{0xc2, 0x4c},
|
|
{0xc3, 0x00},
|
|
{0xc4, 0x32},
|
|
{0xc5, 0x24},
|
|
{0xc6, 0x16},
|
|
{0xc7, 0x08},
|
|
{0xc8, 0x08},
|
|
{0xc9, 0x00},
|
|
{0xca, 0x20},
|
|
{0xdc, 0x8a},
|
|
{0xdd, 0xa0},
|
|
{0xde, 0xa6},
|
|
{0xdf, 0x75},
|
|
|
|
/*AWB*/
|
|
{0xfe, 0x01},
|
|
{0x7c, 0x09},
|
|
{0x65, 0x06},
|
|
{0x7c, 0x08},
|
|
{0x56, 0xf4},
|
|
{0x66, 0x0f},
|
|
{0x67, 0x84},
|
|
{0x6b, 0x80},
|
|
{0x6d, 0x12},
|
|
{0x6e, 0xb0},
|
|
{0x86, 0x00},
|
|
{0x87, 0x00},
|
|
{0x88, 0x00},
|
|
{0x89, 0x00},
|
|
{0x8a, 0x00},
|
|
{0x8b, 0x00},
|
|
{0x8c, 0x00},
|
|
{0x8d, 0x00},
|
|
{0x8e, 0x00},
|
|
{0x8f, 0x00},
|
|
{0x90, 0x00},
|
|
{0x91, 0x00},
|
|
{0x92, 0xf4},
|
|
{0x93, 0xd5},
|
|
{0x94, 0x50},
|
|
{0x95, 0x0f},
|
|
{0x96, 0xf4},
|
|
{0x97, 0x2d},
|
|
{0x98, 0x0f},
|
|
{0x99, 0xa6},
|
|
{0x9a, 0x2d},
|
|
{0x9b, 0x0f},
|
|
{0x9c, 0x59},
|
|
{0x9d, 0x2d},
|
|
{0x9e, 0xaa},
|
|
{0x9f, 0x67},
|
|
{0xa0, 0x59},
|
|
{0xa1, 0x00},
|
|
{0xa2, 0x00},
|
|
{0xa3, 0x0a},
|
|
{0xa4, 0x00},
|
|
{0xa5, 0x00},
|
|
{0xa6, 0xd4},
|
|
{0xa7, 0x9f},
|
|
{0xa8, 0x55},
|
|
{0xa9, 0xd4},
|
|
{0xaa, 0x9f},
|
|
{0xab, 0xac},
|
|
{0xac, 0x9f},
|
|
{0xad, 0x55},
|
|
{0xae, 0xd4},
|
|
{0xaf, 0xac},
|
|
{0xb0, 0xd4},
|
|
{0xb1, 0xa3},
|
|
{0xb2, 0x55},
|
|
{0xb3, 0xd4},
|
|
{0xb4, 0xac},
|
|
{0xb5, 0x00},
|
|
{0xb6, 0x00},
|
|
{0xb7, 0x05},
|
|
{0xb8, 0xd6},
|
|
{0xb9, 0x8c},
|
|
|
|
/*CC*/
|
|
{0xfe, 0x01},
|
|
{0xd0, 0x40},
|
|
{0xd1, 0xf8},
|
|
{0xd2, 0x00},
|
|
{0xd3, 0xfa},
|
|
{0xd4, 0x45},
|
|
{0xd5, 0x02},
|
|
|
|
{0xd6, 0x30},
|
|
{0xd7, 0xfa},
|
|
{0xd8, 0x08},
|
|
{0xd9, 0x08},
|
|
{0xda, 0x58},
|
|
{0xdb, 0x02},
|
|
{0xfe, 0x00},
|
|
|
|
/*Gamma*/
|
|
{0xfe, 0x00},
|
|
{0xba, 0x00},
|
|
{0xbb, 0x04},
|
|
{0xbc, 0x0a},
|
|
{0xbd, 0x0e},
|
|
{0xbe, 0x22},
|
|
{0xbf, 0x30},
|
|
{0xc0, 0x3d},
|
|
{0xc1, 0x4a},
|
|
{0xc2, 0x5d},
|
|
{0xc3, 0x6b},
|
|
{0xc4, 0x7a},
|
|
{0xc5, 0x85},
|
|
{0xc6, 0x90},
|
|
{0xc7, 0xa5},
|
|
{0xc8, 0xb5},
|
|
{0xc9, 0xc2},
|
|
{0xca, 0xcc},
|
|
{0xcb, 0xd5},
|
|
{0xcc, 0xde},
|
|
{0xcd, 0xea},
|
|
{0xce, 0xf5},
|
|
{0xcf, 0xff},
|
|
|
|
/*Auto Gamma*/
|
|
{0xfe, 0x00},
|
|
{0x5a, 0x08},
|
|
{0x5b, 0x0f},
|
|
{0x5c, 0x15},
|
|
{0x5d, 0x1c},
|
|
{0x5e, 0x28},
|
|
{0x5f, 0x36},
|
|
{0x60, 0x45},
|
|
{0x61, 0x51},
|
|
{0x62, 0x6a},
|
|
{0x63, 0x7d},
|
|
{0x64, 0x8d},
|
|
{0x65, 0x98},
|
|
{0x66, 0xa2},
|
|
{0x67, 0xb5},
|
|
{0x68, 0xc3},
|
|
{0x69, 0xcd},
|
|
{0x6a, 0xd4},
|
|
{0x6b, 0xdc},
|
|
{0x6c, 0xe3},
|
|
{0x6d, 0xf0},
|
|
{0x6e, 0xf9},
|
|
{0x6f, 0xff},
|
|
|
|
/*Gain*/
|
|
{0xfe, 0x00},
|
|
{0x70, 0x50},
|
|
|
|
/*AEC*/
|
|
{0xfe, 0x00},
|
|
{0x4f, 0x01},
|
|
{0xfe, 0x01},
|
|
{0x0d, 0x00},
|
|
{0x12, 0xa0},
|
|
{0x13, 0x3a},
|
|
{0x44, 0x04},
|
|
{0x1f, 0x30},
|
|
{0x20, 0x40},
|
|
{0x26, 0x9a},
|
|
{0x3e, 0x20},
|
|
{0x3f, 0x2d},
|
|
{0x40, 0x40},
|
|
{0x41, 0x5b},
|
|
{0x42, 0x82},
|
|
{0x43, 0xb7},
|
|
{0x04, 0x0a},
|
|
{0x02, 0x79},
|
|
{0x03, 0xc0},
|
|
|
|
/*measure window*/
|
|
{0xfe, 0x01},
|
|
{0xcc, 0x08},
|
|
{0xcd, 0x08},
|
|
{0xce, 0xa4},
|
|
{0xcf, 0xec},
|
|
|
|
/*DNDD*/
|
|
{0xfe, 0x00},
|
|
{0x81, 0xb8},
|
|
{0x82, 0x12},
|
|
{0x83, 0x0a},
|
|
{0x84, 0x01},
|
|
{0x86, 0x50},
|
|
{0x87, 0x18},
|
|
{0x88, 0x10},
|
|
{0x89, 0x70},
|
|
{0x8a, 0x20},
|
|
{0x8b, 0x10},
|
|
{0x8c, 0x08},
|
|
{0x8d, 0x0a},
|
|
|
|
/*Intpee*/
|
|
{0xfe, 0x00},
|
|
{0x8f, 0xaa},
|
|
{0x90, 0x9c},
|
|
{0x91, 0x52},
|
|
{0x92, 0x03},
|
|
{0x93, 0x03},
|
|
{0x94, 0x08},
|
|
{0x95, 0x44},
|
|
{0x97, 0x00},
|
|
{0x98, 0x00},
|
|
|
|
/*ASDE*/
|
|
{0xfe, 0x00},
|
|
{0xa1, 0x30},
|
|
{0xa2, 0x41},
|
|
{0xa4, 0x30},
|
|
{0xa5, 0x20},
|
|
{0xaa, 0x30},
|
|
{0xac, 0x32},
|
|
|
|
/*YCP*/
|
|
{0xfe, 0x00},
|
|
{0xd1, 0x3c},
|
|
{0xd2, 0x3c},
|
|
{0xd3, 0x38},
|
|
{0xd6, 0xf4},
|
|
{0xd7, 0x1d},
|
|
{0xdd, 0x73},
|
|
{0xde, 0x84},
|
|
|
|
/*Banding*/
|
|
{0xfe, 0x00},
|
|
{0x05, 0x01},
|
|
{0x06, 0xad},
|
|
{0x07, 0x00},
|
|
{0x08, 0x10},
|
|
|
|
{0xfe, 0x01},
|
|
{0x25, 0x00},
|
|
{0x26, 0x9a},
|
|
|
|
{0x27, 0x01},
|
|
{0x28, 0xce},
|
|
{0x29, 0x02},
|
|
{0x2a, 0x68},
|
|
{0x2b, 0x02},
|
|
{0x2c, 0x68},
|
|
{0x2d, 0x07},
|
|
{0x2e, 0xd2},
|
|
{0x2f, 0x0b},
|
|
{0x30, 0x6e},
|
|
{0x31, 0x0e},
|
|
{0x32, 0x70},
|
|
{0x33, 0x12},
|
|
{0x34, 0x0c},
|
|
{0x3c, 0x30},
|
|
|
|
/*Analog&Cisctl*/
|
|
{0xfe, 0x00},
|
|
{0x05, 0x01},
|
|
{0x06, 0xa0},
|
|
{0x07, 0x00},
|
|
{0x08, 0x20},
|
|
{0x0a, 0x78},
|
|
{0x0c, 0xa0},
|
|
{0x0d, 0x00}, //window_height [8]
|
|
{0x0e, 0xf8}, //window_height [7:0] 248
|
|
{0x0f, 0x01}, //window_width [9:8]
|
|
{0x10, 0x48}, //window_width [7:0] 328
|
|
|
|
{0x55, 0x00},
|
|
{0x56, 0xf0}, // 240
|
|
{0x57, 0x01},
|
|
{0x58, 0x40}, // 320
|
|
|
|
/*SPI*/
|
|
{0xfe, 0x03},
|
|
{0x5b, 0x40},
|
|
{0x5c, 0x01},
|
|
{0x5d, 0xf0},
|
|
{0x5e, 0x00},
|
|
|
|
/*AEC*/
|
|
{0xfe, 0x01},
|
|
{0x25, 0x00}, //step
|
|
{0x26, 0x63},
|
|
{0x27, 0x01},
|
|
{0x28, 0x29},
|
|
{0x29, 0x01},
|
|
{0x2a, 0x29},
|
|
{0x2b, 0x01},
|
|
{0x2c, 0x29},
|
|
{0x2d, 0x01},
|
|
{0x2e, 0x29},
|
|
{0x2f, 0x01},
|
|
{0x30, 0x29},
|
|
{0x31, 0x01},
|
|
{0x32, 0x29},
|
|
{0x33, 0x01},
|
|
{0x34, 0x29},
|
|
{0x3c, 0x00},
|
|
|
|
/*measure window*/
|
|
{0xfe, 0x01},
|
|
{0xcc, 0x04},
|
|
{0xcd, 0x04},
|
|
{0xce, 0x72},
|
|
{0xcf, 0x52},
|
|
{REGLIST_TAIL, 0x00},
|
|
};
|
|
|
|
#endif
|