Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources

This commit is contained in:
2026-07-06 11:30:13 +08:00
commit e76462eeb7
3451 changed files with 1415300 additions and 0 deletions

View File

@@ -0,0 +1,370 @@
#include "sys_config.h"
#include "typesdef.h"
#include "lib/video/dvp/cmos_sensor/csi.h"
#include "tx_platform.h"
#include "list.h"
#include "dev.h"
#include "hal/isp.h"
#if DEV_SENSOR_XS9950
SENSOR_INIT_SECTION const unsigned char xs9950_mipi_AHD_720p_25_init[CMOS_INIT_LEN]=
{
// 0x10, 0x1F, 0x00, // 此为默认值bit4=0: VCCA18_33 is 1.8V. bit4=1:VCCA18_33 is 3.3V
// 0x41, 0x07, 0x40, // 此为默认值bit0=0:iic_rst_ls3v is 1.8V bit0=1: iic_rst_ls3v is 3.3V
0x43, 0x00, 0x05,
0x43, 0x00, 0x15,
0x40, 0x80, 0x07,
0x41, 0x19, 0x01,
0x08, 0x03, 0x00,
0x40, 0x20, 0x00,
0x08, 0x0e, 0x00,
0x08, 0x0e, 0x20,
0x08, 0x0e, 0x28,
0x40, 0x20, 0x03,
0x08, 0x03, 0x0f,
0x01, 0x00, 0x35,
0x01, 0x04, 0x48,
0x03, 0x00, 0x3f,
0x01, 0x05, 0xe1,
0x01, 0x01, 0x42,
0x01, 0x02, 0x40,
0x01, 0x16, 0x3c,
0x01, 0x17, 0x23,
0x03, 0x33, 0x09,
0x03, 0x37, 0xd9,
0x03, 0x38, 0x0a,
0x01, 0xbf, 0x4e,
0x01, 0x0e, 0x78,
0x01, 0x0f, 0x92,
0x01, 0x10, 0x70,
0x01, 0x11, 0x40,
0x01, 0xe1, 0xff,
0x03, 0x14, 0x66,
0x01, 0x30, 0x10,
0x03, 0x15, 0x23,
0x0b, 0x64, 0x02,
0x01, 0xe2, 0x03,
0x0b, 0x55, 0x80,
0x0b, 0x56, 0x00,
0x0b, 0x59, 0x04,
0x0b, 0x5a, 0x01,
0x0b, 0x5c, 0x07,
0x0b, 0x5e, 0x05,
0x0b, 0x4b, 0x10,
0x0b, 0x4e, 0x05,
0x0b, 0x51, 0x21,
0x0b, 0x30, 0xbc,
0x0b, 0x31, 0x19,
0x0b, 0x15, 0x03,
0x0b, 0x16, 0x03,
0x0b, 0x17, 0x03,
0x0b, 0x07, 0x03,
0x0b, 0x08, 0x05,
0x0b, 0x1a, 0x10,
0x01, 0x58, 0x03,
0x0a, 0x88, 0x20,
0x0a, 0x61, 0x09,
0x0a, 0x62, 0x00,
0x0a, 0x63, 0x0e,
0x0a, 0x64, 0x00,
0x0a, 0x65, 0xfc,
0x0a, 0x67, 0xe5,
0x0a, 0x69, 0xef,
0x0a, 0x6b, 0x1b,
0x0a, 0x6d, 0x2f,
0x0a, 0x6f, 0x00,
0x0a, 0x71, 0xc2,
0x0a, 0x72, 0xff,
0x0a, 0x73, 0xd0,
0x0a, 0x74, 0xff,
0x0a, 0x75, 0x29,
0x0a, 0x77, 0x57,
0x0a, 0x78, 0x00,
0x0a, 0x79, 0x10,
0x0a, 0x7a, 0x00,
0x0a, 0x7b, 0xaa,
0x0a, 0x7d, 0xb2,
0x0a, 0x7f, 0x24,
0x0a, 0x80, 0x00,
0x0a, 0x81, 0x69,
0x0a, 0x82, 0x00,
0x08, 0x02, 0x02,
0x05, 0x01, 0x81,
0x0b, 0x74, 0xfc,
0x01, 0xdc, 0x01,
0x08, 0x04, 0x04,
0x40, 0x18, 0x01,
0x0b, 0x56, 0x01,
0x0b, 0x73, 0x02,
0x42, 0x10, 0x0c,
0x42, 0x0b, 0x2f,
0x05, 0x04, 0x89, // bit[4:7] free_run颜色, 取值范围:[0, 8]
0x05, 0x07, 0x13,
0x05, 0x03, 0x00,
0x05, 0x02, 0x0c, //0x0C BIT(5): FREE RUN
0x01, 0x5a, 0x00,
0x01, 0x5b, 0x24,
0x01, 0x5c, 0x80,
0x01, 0x5d, 0x16,
0x01, 0x5e, 0xd0,
0x01, 0x5f, 0x02,
0x01, 0x60, 0xee,
0x01, 0x61, 0x02,
0x01, 0x65, 0x00,
0x01, 0x66, 0x0f,
0x40, 0x30, 0x15,
0x41, 0x34, 0x06,
0x08, 0x03, 0x0f,
0x44, 0x12, 0x00,
0x08, 0x03, 0x1f,
0x10, 0xe3, 0x01,
0x10, 0xeb, 0x04,
0x50, 0xfc, 0x00, //32bit
0x50, 0xfd, 0x00,
0x50, 0xfe, 0x0d,
0x50, 0xff, 0x59,
0x50, 0xe4, 0x00, //32bit
0x50, 0xe5, 0x00,
0x50, 0xe6, 0x00,
0x50, 0xe7, 0x00, //MIPI LANE NUM
0x50, 0xf0, 0x00, //32bit
0x50, 0xf1, 0x00,
0x50, 0xf2, 0x00,
0x50, 0xf3, 0x32,
0x50, 0xf0, 0x00, //32bit
0x50, 0xf1, 0x00,
0x50, 0xf2, 0x00,
0x50, 0xf3, 0x0f,
0x50, 0xe8, 0x00, //32bit
0x50, 0xe9, 0x00,
0x50, 0xea, 0x00,
0x50, 0xeb, 0x01,
0x50, 0x48, 0x00, //32bit
0x50, 0x49, 0x00,
0x50, 0x4a, 0x03,
0x50, 0x4b, 0xff,
0x50, 0x58, 0x00, //32bit
0x50, 0x59, 0x00,
0x50, 0x5a, 0x00,
0x50, 0x5b, 0x07,
0x50, 0xe0, 0x00, //32bit
0x50, 0xe1, 0x00,
0x50, 0xe2, 0x00,
0x50, 0xe3, 0x00,
0x50, 0xe0, 0x00, //32bit
0x50, 0xe1, 0x00,
0x50, 0xe2, 0x00,
0x50, 0xe3, 0x04,
0x50, 0xe0, 0x00, //32bit
0x50, 0xe1, 0x00,
0x50, 0xe2, 0x00,
0x50, 0xe3, 0x07,
0x10, 0x03, 0x01,
0x10, 0x04, 0x6f,
0x10, 0x01, 0xe4,
0x10, 0x00, 0x45,
0x10, 0x01, 0xe0,
0x10, 0x20, 0x1e,
0x10, 0x20, 0x1f,
0x10, 0x45, 0xcd,
0x10, 0x46, 0x0c,
0x10, 0x47, 0x36,
0x10, 0x48, 0x0f,
0x10, 0x49, 0x59,
0x10, 0x4a, 0x07,
0x10, 0x50, 0xc4,
0x10, 0x65, 0xcd,
0x10, 0x66, 0x0c,
0x10, 0x67, 0x0e,
0x10, 0x68, 0x0f,
0x10, 0x69, 0x59,
0x10, 0x6a, 0x07,
0x10, 0x70, 0xc4,
0x10, 0x85, 0xcd,
0x10, 0x86, 0x0c,
0x10, 0x87, 0x0e,
0x10, 0x88, 0x0f,
0x10, 0x89, 0x59,
0x10, 0x8a, 0x07,
0x10, 0x90, 0xc4,
0x10, 0x40, 0x0a, // lane clk pn swap
0x10, 0x60, 0x0a, // lane 0 pn swap
0x10, 0x80, 0x0a, // lane 1 pn swap
0x50, 0x04, 0x00, //32bit
0x50, 0x05, 0x00,
0x50, 0x06, 0x00,
0x50, 0x07, 0x01,
0x50, 0xe8, 0x00, //32bit
0x50, 0xe9, 0x00,
0x50, 0xea, 0x00,
0x50, 0xeb, 0x01,
0x50, 0x04, 0x00, //32bit
0x50, 0x05, 0x00,
0x42, 0x00, 0x02, // 0x4200=2选择VINA0x4200=0选择VINB0x4200=4选择VINC0x4200=6选择VIND
// 0x01, 0x11, 0x68, // 适当调整这三个寄存器,也可增加清晰度和饱和度
// 0x42, 0x02, 0x0e, // 适当调整这三个寄存器,也可增加清晰度和饱和度
// 0x42, 0x03, 0x04, // 适当调整这三个寄存器,也可增加清晰度和饱和度
// 0x01, 0x00, 0x38, //
// 0x01, 0xce, 0x00, // 调整自动曝光
/* ------ahd 720p 25----- */
0x06, 0x0b, 0x00,
0x06, 0x27, 0x14,
0x01, 0x0c, 0x00,
0x08, 0x00, 0x05,
0x08, 0x05, 0x05,
0x0b, 0x50, 0x08,
0x0e, 0x08, 0x00,
0x01, 0x0d, 0x40,
0x01, 0x0c, 0x01,
0x01, 0x21, 0x7a,
0x01, 0x22, 0x6b,
0x01, 0x30, 0x10,
0x01, 0xa9, 0x00,
0x01, 0xaa, 0x04,
0x01, 0x56, 0x00,
0x01, 0x57, 0x08,
0x01, 0x05, 0xc1, // AHD制式如发现颜色饱和度异常可选择开关0x105的bit5
0x01, 0x01, 0x42,
0x01, 0x02, 0x40,
0x01, 0x16, 0x3c,
0x01, 0x17, 0x23, // AHD制式如发现颜色饱和度异常可选择打开0x105的bit5并微调0x117
0x01, 0xe2, 0x03,
0x42, 0x0b, 0x21,
0x01, 0x06, 0x80,
0x01, 0x07, 0x00,
0x01, 0x08, 0x80,
0x01, 0x09, 0x00,
0x01, 0x0a, 0x20,
0x01, 0x0b, 0x00,
0x01, 0x1d, 0x17,
0x0e, 0x08, 0x01,
0x0a, 0x60, 0x04,
0x0a, 0x5c, 0xf6,
0x0a, 0x5d, 0xc0,
0x0a, 0x5e, 0x2d,
0x0a, 0x5f, 0x1b,
0x01, 0x56, 0x50,
0x01, 0x57, 0x07,
0x01, 0x1d, 0x17,
0x01, 0x56, 0x00,
0x01, 0x57, 0x08,
0x05, 0x03, 0x00,
0x01, 0x5a, 0x8b,
0x01, 0x5b, 0x0e,
0x01, 0x5c, 0x80,
0x01, 0x5d, 0x16,
0x01, 0x5e, 0xd0,
0x01, 0x5f, 0x02,
0x01, 0x60, 0xee,
0x01, 0x61, 0x02,
0x01, 0x65, 0x40,
0x01, 0x66, 0x0f,
0x0A, 0x00, 0xFD,
0x0A, 0x01, 0xFF,
0x0A, 0x02, 0x00,
0x0A, 0x03, 0x00,
0x0A, 0x04, 0x04,
0x0A, 0x05, 0x00,
0x0A, 0x06, 0x01,
0x0A, 0x07, 0x00,
0x0A, 0x08, 0xFB,
0x0A, 0x09, 0xFF,
0x0A, 0x0A, 0xFE,
0x0A, 0x0B, 0xFF,
0x0A, 0x0C, 0x07,
0x0A, 0x0D, 0x00,
0x0A, 0x0E, 0x03,
0x0A, 0x0F, 0x00,
0x0A, 0x10, 0xF7,
0x0A, 0x11, 0xFF,
0x0A, 0x12, 0xFA,
0x0A, 0x13, 0xFF,
0x0A, 0x14, 0x0B,
0x0A, 0x15, 0x00,
0x0A, 0x16, 0x0A,
0x0A, 0x17, 0x00,
0x0A, 0x18, 0xF3,
0x0A, 0x19, 0xFF,
0x0A, 0x1A, 0xF1,
0x0A, 0x1B, 0xFF,
0x0A, 0x1C, 0x0F,
0x0A, 0x1D, 0x00,
0x0A, 0x1E, 0x18,
0x0A, 0x1F, 0x00,
0x0A, 0x20, 0xEE,
0x0A, 0x21, 0xFF,
0x0A, 0x22, 0xDC,
0x0A, 0x23, 0xFF,
0x0A, 0x24, 0x14,
0x0A, 0x25, 0x00,
0x0A, 0x26, 0x39,
0x0A, 0x27, 0x00,
0x0A, 0x28, 0xEB,
0x0A, 0x29, 0xFF,
0x0A, 0x2A, 0x98,
0x0A, 0x2B, 0xFF,
0x0A, 0x2C, 0x16,
0x0A, 0x2D, 0x00,
0x0A, 0x2E, 0x45,
0x0A, 0x2F, 0x01,
0x0A, 0x30, 0xEA,
0x0A, 0x31, 0x01,
0x0A, 0x60, 0x01,
/* --------- MIPI reset ---------- */
// 0x0e, 0x08, 0x01,
// 0x1e, 0x08, 0x01,
// 0x2e, 0x08, 0x01,
// 0x3e, 0x08, 0x01,
// 0x50, 0x04, 0x00, //32bit
// 0x50, 0x05, 0x00,
// 0x50, 0x06, 0x00,
// 0x50, 0x07, 0x00,
// 0x50, 0x04, 0x00, //32bit
// 0x50, 0x05, 0x00,
// 0x50, 0x06, 0x00,
// 0x50, 0x07, 0x01,
// 0x40, 0x30, 0x15,
// 0x0e, 0x08, 0x01,
0xFF, 0xFF, 0xFF,
};
const _Sensor_ISP_Init xs9950_isp_init =
{
.type = ISP_INPUT_DAT_SRC_MIPI0,
.pixel_h = 720,
.pixel_w = 1280,
.input_format = ISP_INPUT_DAT_FORMAT_YUV422,
};
SENSOR_OP_SECTION const _Sensor_Adpt_ xs9950_cmd =
{
.typ = 1, //YUV
.pixelw = 1280,
.pixelh= 720,
.hsyn = 1,
.vsyn = 1,
.rduline = 0,//
.rawwide = 1,//10bit
.colrarray = 1,//0:_RGRG_ 1:_GRGR_,2:_BGBG_,3:_GBGB_
.init = (uint8 *)xs9950_mipi_AHD_720p_25_init,
.init_len = sizeof(xs9950_mipi_AHD_720p_25_init),
.mipi_lane_num = 1,
.rotate_adapt = {0},
//.hvb_adapt = {0x6a,0x12,0x6a,0x12},
. mclk = 24000000,
.p_fun_adapt = {NULL,NULL,NULL},
.sensor_isp = (_Sensor_ISP_Init *)&xs9950_isp_init,
};
const _Sensor_Ident_ xs9950_init =
{
0x99, 0x60, 0x61, 0x02, 0x01, 0x40f0
};
#endif