660 lines
36 KiB
C
Executable File
660 lines
36 KiB
C
Executable File
#include <stdint.h>
|
|
|
|
#ifndef STM32U5_OV5640_H
|
|
#define STM32U5_OV5640_H
|
|
#define OV5640_SYSREM_RESET00 0x3000U
|
|
#define OV5640_SYSREM_RESET01 0x3001U
|
|
#define OV5640_SYSREM_RESET02 0x3002U
|
|
#define OV5640_SYSREM_RESET03 0x3003U
|
|
#define OV5640_CLOCK_ENABLE00 0x3004U
|
|
#define OV5640_CLOCK_ENABLE01 0x3005U
|
|
#define OV5640_CLOCK_ENABLE02 0x3006U
|
|
#define OV5640_CLOCK_ENABLE03 0x3007U
|
|
#define OV5640_SYSTEM_CTROL0 0x3008U
|
|
#define OV5640_CHIP_ID_HIGH_BYTE 0x300AU
|
|
#define OV5640_CHIP_ID_LOW_BYTE 0x300BU
|
|
#define OV5640_MIPI_CONTROL00 0x300EU
|
|
#define OV5640_PAD_OUTPUT_ENABLE00 0x3016U
|
|
#define OV5640_PAD_OUTPUT_ENABLE01 0x3017U
|
|
#define OV5640_PAD_OUTPUT_ENABLE02 0x3018U
|
|
#define OV5640_PAD_OUTPUT_VALUE00 0x3019U
|
|
#define OV5640_PAD_OUTPUT_VALUE01 0x301AU
|
|
#define OV5640_PAD_OUTPUT_VALUE02 0x301BU
|
|
#define OV5640_PAD_SELECT00 0x301CU
|
|
#define OV5640_PAD_SELECT01 0x301DU
|
|
#define OV5640_PAD_SELECT02 0x301EU
|
|
#define OV5640_CHIP_REVISION 0x302AU
|
|
#define OV5640_PAD_CONTROL00 0x301CU
|
|
#define OV5640_SC_PWC 0x3031U
|
|
#define OV5640_SC_PLL_CONTRL0 0x3034U
|
|
#define OV5640_SC_PLL_CONTRL1 0x3035U
|
|
#define OV5640_SC_PLL_CONTRL2 0x3036U
|
|
#define OV5640_SC_PLL_CONTRL3 0x3037U
|
|
#define OV5640_SC_PLL_CONTRL4 0x3038U
|
|
#define OV5640_SC_PLL_CONTRL5 0x3039U
|
|
#define OV5640_SC_PLLS_CTRL0 0x303AU
|
|
#define OV5640_SC_PLLS_CTRL1 0x303BU
|
|
#define OV5640_SC_PLLS_CTRL2 0x303CU
|
|
#define OV5640_SC_PLLS_CTRL3 0x303DU
|
|
#define OV5640_IO_PAD_VALUE00 0x3050U
|
|
#define OV5640_IO_PAD_VALUE01 0x3051U
|
|
#define OV5640_IO_PAD_VALUE02 0x3052U
|
|
|
|
/* SCCB control [0x3100 ~ 0x3108] */
|
|
#define OV5640_SCCB_ID 0x3100U
|
|
#define OV5640_SCCB_SYSTEM_CTRL0 0x3102U
|
|
#define OV5640_SCCB_SYSTEM_CTRL1 0x3103U
|
|
#define OV5640_SYSTEM_ROOT_DIVIDER 0x3108U
|
|
|
|
/* SRB control [0x3200 ~ 0x3213] */
|
|
#define OV5640_GROUP_ADDR0 0x3200U
|
|
#define OV5640_GROUP_ADDR1 0x3201U
|
|
#define OV5640_GROUP_ADDR2 0x3202U
|
|
#define OV5640_GROUP_ADDR3 0x3203U
|
|
#define OV5640_SRM_GROUP_ACCESS 0x3212U
|
|
#define OV5640_SRM_GROUP_STATUS 0x3213U
|
|
|
|
/* AWB gain control [0x3400 ~ 0x3406] */
|
|
#define OV5640_AWB_R_GAIN_MSB 0x3400U
|
|
#define OV5640_AWB_R_GAIN_LSB 0x3401U
|
|
#define OV5640_AWB_G_GAIN_MSB 0x3402U
|
|
#define OV5640_AWB_G_GAIN_LSB 0x3403U
|
|
#define OV5640_AWB_B_GAIN_MSB 0x3404U
|
|
#define OV5640_AWB_B_GAIN_LSB 0x3405U
|
|
#define OV5640_AWB_MANUAL_CONTROL 0x3406U
|
|
|
|
/* AEC/AGC control [0x3500 ~ 0x350D] */
|
|
#define OV5640_AEC_PK_EXPOSURE_19_16 0x3500U
|
|
#define OV5640_AEC_PK_EXPOSURE_HIGH 0x3501U
|
|
#define OV5640_AEC_PK_EXPOSURE_LOW 0x3502U
|
|
#define OV5640_AEC_PK_MANUAL 0x3503U
|
|
#define OV5640_AEC_PK_REAL_GAIN_9_8 0x350AU
|
|
#define OV5640_AEC_PK_REAL_GAIN_LOW 0x350BU
|
|
#define OV5640_AEC_PK_VTS_HIGH 0x350CU
|
|
#define OV5640_AEC_PK_VTS_LOW 0x350DU
|
|
|
|
/* VCM control [0x3600 ~ 0x3606] */
|
|
#define OV5640_VCM_CONTROL_0 0x3602U
|
|
#define OV5640_VCM_CONTROL_1 0x3603U
|
|
#define OV5640_VCM_CONTROL_2 0x3604U
|
|
#define OV5640_VCM_CONTROL_3 0x3605U
|
|
#define OV5640_VCM_CONTROL_4 0x3606U
|
|
|
|
/* timing control [0x3800 ~ 0x3821] */
|
|
#define OV5640_TIMING_HS_HIGH 0x3800U
|
|
#define OV5640_TIMING_HS_LOW 0x3801U
|
|
#define OV5640_TIMING_VS_HIGH 0x3802U
|
|
#define OV5640_TIMING_VS_LOW 0x3803U
|
|
#define OV5640_TIMING_HW_HIGH 0x3804U
|
|
#define OV5640_TIMING_HW_LOW 0x3805U
|
|
#define OV5640_TIMING_VH_HIGH 0x3806U
|
|
#define OV5640_TIMING_VH_LOW 0x3807U
|
|
#define OV5640_TIMING_DVPHO_HIGH 0x3808U
|
|
#define OV5640_TIMING_DVPHO_LOW 0x3809U
|
|
#define OV5640_TIMING_DVPVO_HIGH 0x380AU
|
|
#define OV5640_TIMING_DVPVO_LOW 0x380BU
|
|
#define OV5640_TIMING_HTS_HIGH 0x380CU
|
|
#define OV5640_TIMING_HTS_LOW 0x380DU
|
|
#define OV5640_TIMING_VTS_HIGH 0x380EU
|
|
#define OV5640_TIMING_VTS_LOW 0x380FU
|
|
#define OV5640_TIMING_HOFFSET_HIGH 0x3810U
|
|
#define OV5640_TIMING_HOFFSET_LOW 0x3811U
|
|
#define OV5640_TIMING_VOFFSET_HIGH 0x3812U
|
|
#define OV5640_TIMING_VOFFSET_LOW 0x3813U
|
|
#define OV5640_TIMING_X_INC 0x3814U
|
|
#define OV5640_TIMING_Y_INC 0x3815U
|
|
#define OV5640_HSYNC_START_HIGH 0x3816U
|
|
#define OV5640_HSYNC_START_LOW 0x3817U
|
|
#define OV5640_HSYNC_WIDTH_HIGH 0x3818U
|
|
#define OV5640_HSYNC_WIDTH_LOW 0x3819U
|
|
#define OV5640_TIMING_TC_REG20 0x3820U
|
|
#define OV5640_TIMING_TC_REG21 0x3821U
|
|
|
|
/* AEC/AGC power down domain control [0x3A00 ~ 0x3A25] */
|
|
#define OV5640_AEC_CTRL00 0x3A00U
|
|
#define OV5640_AEC_CTRL01 0x3A01U
|
|
#define OV5640_AEC_CTRL02 0x3A02U
|
|
#define OV5640_AEC_CTRL03 0x3A03U
|
|
#define OV5640_AEC_CTRL04 0x3A04U
|
|
#define OV5640_AEC_CTRL05 0x3A05U
|
|
#define OV5640_AEC_CTRL06 0x3A06U
|
|
#define OV5640_AEC_CTRL07 0x3A07U
|
|
#define OV5640_AEC_B50_STEP_HIGH 0x3A08U
|
|
#define OV5640_AEC_B50_STEP_LOW 0x3A09U
|
|
#define OV5640_AEC_B60_STEP_HIGH 0x3A0AU
|
|
#define OV5640_AEC_B60_STEP_LOW 0x3A0BU
|
|
#define OV5640_AEC_AEC_CTRL0C 0x3A0CU
|
|
#define OV5640_AEC_CTRL0D 0x3A0DU
|
|
#define OV5640_AEC_CTRL0E 0x3A0EU
|
|
#define OV5640_AEC_CTRL0F 0x3A0FU
|
|
#define OV5640_AEC_CTRL10 0x3A10U
|
|
#define OV5640_AEC_CTRL11 0x3A11U
|
|
#define OV5640_AEC_CTRL13 0x3A13U
|
|
#define OV5640_AEC_MAX_EXPO_HIGH 0x3A14U
|
|
#define OV5640_AEC_MAX_EXPO_LOW 0x3A15U
|
|
#define OV5640_AEC_CTRL17 0x3A17U
|
|
#define OV5640_AEC_GAIN_CEILING_HIGH 0x3A18U
|
|
#define OV5640_AEC_GAIN_CEILING_LOW 0x3A19U
|
|
#define OV5640_AEC_DIFF_MIN 0x3A1AU
|
|
#define OV5640_AEC_CTRL1B 0x3A1BU
|
|
#define OV5640_LED_ADD_ROW_HIGH 0x3A1CU
|
|
#define OV5640_LED_ADD_ROW_LOW 0x3A1DU
|
|
#define OV5640_AEC_CTRL1E 0x3A1EU
|
|
#define OV5640_AEC_CTRL1F 0x3A1FU
|
|
#define OV5640_AEC_CTRL20 0x3A20U
|
|
#define OV5640_AEC_CTRL21 0x3A21U
|
|
#define OV5640_AEC_CTRL25 0x3A25U
|
|
|
|
/* strobe control [0x3B00 ~ 0x3B0C] */
|
|
#define OV5640_STROBE_CTRL 0x3B00U
|
|
#define OV5640_FREX_EXPOSURE02 0x3B01U
|
|
#define OV5640_FREX_SHUTTER_DLY01 0x3B02U
|
|
#define OV5640_FREX_SHUTTER_DLY00 0x3B03U
|
|
#define OV5640_FREX_EXPOSURE01 0x3B04U
|
|
#define OV5640_FREX_EXPOSURE00 0x3B05U
|
|
#define OV5640_FREX_CTRL07 0x3B06U
|
|
#define OV5640_FREX_MODE 0x3B07U
|
|
#define OV5640_FREX_RQST 0x3B08U
|
|
#define OV5640_FREX_HREF_DLY 0x3B09U
|
|
#define OV5640_FREX_RST_LENGTH 0x3B0AU
|
|
#define OV5640_STROBE_WIDTH_HIGH 0x3B0BU
|
|
#define OV5640_STROBE_WIDTH_LOW 0x3B0CU
|
|
|
|
/* 50/60Hz detector control [0x3C00 ~ 0x3C1E] */
|
|
#define OV5640_5060HZ_CTRL00 0x3C00U
|
|
#define OV5640_5060HZ_CTRL01 0x3C01U
|
|
#define OV5640_5060HZ_CTRL02 0x3C02U
|
|
#define OV5640_5060HZ_CTRL03 0x3C03U
|
|
#define OV5640_5060HZ_CTRL04 0x3C04U
|
|
#define OV5640_5060HZ_CTRL05 0x3C05U
|
|
#define OV5640_LIGHTMETER1_TH_HIGH 0x3C06U
|
|
#define OV5640_LIGHTMETER1_TH_LOW 0x3C07U
|
|
#define OV5640_LIGHTMETER2_TH_HIGH 0x3C08U
|
|
#define OV5640_LIGHTMETER2_TH_LOW 0x3C09U
|
|
#define OV5640_SAMPLE_NUMBER_HIGH 0x3C0AU
|
|
#define OV5640_SAMPLE_NUMBER_LOW 0x3C0BU
|
|
#define OV5640_SIGMA_DELTA_CTRL0C 0x3C0CU
|
|
#define OV5640_SUM50_BYTE4 0x3C0DU
|
|
#define OV5640_SUM50_BYTE3 0x3C0EU
|
|
#define OV5640_SUM50_BYTE2 0x3C0FU
|
|
#define OV5640_SUM50_BYTE1 0x3C10U
|
|
#define OV5640_SUM60_BYTE4 0x3C11U
|
|
#define OV5640_SUM60_BYTE3 0x3C12U
|
|
#define OV5640_SUM60_BYTE2 0x3C13U
|
|
#define OV5640_SUM60_BYTE1 0x3C14U
|
|
#define OV5640_SUM5060_HIGH 0x3C15U
|
|
#define OV5640_SUM5060_LOW 0x3C16U
|
|
#define OV5640_BLOCK_CNTR_HIGH 0x3C17U
|
|
#define OV5640_BLOCK_CNTR_LOW 0x3C18U
|
|
#define OV5640_B6_HIGH 0x3C19U
|
|
#define OV5640_B6_LOW 0x3C1AU
|
|
#define OV5640_LIGHTMETER_OUTPUT_BYTE3 0x3C1BU
|
|
#define OV5640_LIGHTMETER_OUTPUT_BYTE2 0x3C1CU
|
|
#define OV5640_LIGHTMETER_OUTPUT_BYTE1 0x3C1DU
|
|
#define OV5640_SUM_THRESHOLD 0x3C1EU
|
|
|
|
/* OTP control [0x3D00 ~ 0x3D21] */
|
|
/* MC control [0x3F00 ~ 0x3F0D] */
|
|
/* BLC control [0x4000 ~ 0x4033] */
|
|
#define OV5640_BLC_CTRL00 0x4000U
|
|
#define OV5640_BLC_CTRL01 0x4001U
|
|
#define OV5640_BLC_CTRL02 0x4002U
|
|
#define OV5640_BLC_CTRL03 0x4003U
|
|
#define OV5640_BLC_CTRL04 0x4004U
|
|
#define OV5640_BLC_CTRL05 0x4005U
|
|
|
|
/* frame control [0x4201 ~ 0x4202] */
|
|
#define OV5640_FRAME_CTRL01 0x4201U
|
|
#define OV5640_FRAME_CTRL02 0x4202U
|
|
|
|
/* format control [0x4300 ~ 0x430D] */
|
|
#define OV5640_FORMAT_CTRL00 0x4300U
|
|
#define OV5640_FORMAT_CTRL01 0x4301U
|
|
#define OV5640_YMAX_VAL_HIGH 0x4302U
|
|
#define OV5640_YMAX_VAL_LOW 0x4303U
|
|
#define OV5640_YMIN_VAL_HIGH 0x4304U
|
|
#define OV5640_YMIN_VAL_LOW 0x4305U
|
|
#define OV5640_UMAX_VAL_HIGH 0x4306U
|
|
#define OV5640_UMAX_VAL_LOW 0x4307U
|
|
#define OV5640_UMIN_VAL_HIGH 0x4308U
|
|
#define OV5640_UMIN_VAL_LOW 0x4309U
|
|
#define OV5640_VMAX_VAL_HIGH 0x430AU
|
|
#define OV5640_VMAX_VAL_LOW 0x430BU
|
|
#define OV5640_VMIN_VAL_HIGH 0x430CU
|
|
#define OV5640_VMIN_VAL_LOW 0x430DU
|
|
|
|
/* JPEG control [0x4400 ~ 0x4431] */
|
|
#define OV5640_JPEG_CTRL00 0x4400U
|
|
#define OV5640_JPEG_CTRL01 0x4401U
|
|
#define OV5640_JPEG_CTRL02 0x4402U
|
|
#define OV5640_JPEG_CTRL03 0x4403U
|
|
#define OV5640_JPEG_CTRL04 0x4404U
|
|
#define OV5640_JPEG_CTRL05 0x4405U
|
|
#define OV5640_JPEG_CTRL06 0x4406U
|
|
#define OV5640_JPEG_CTRL07 0x4407U
|
|
#define OV5640_JPEG_ISI_CTRL1 0x4408U
|
|
#define OV5640_JPEG_CTRL09 0x4409U
|
|
#define OV5640_JPEG_CTRL0A 0x440AU
|
|
#define OV5640_JPEG_CTRL0B 0x440BU
|
|
#define OV5640_JPEG_CTRL0C 0x440CU
|
|
#define OV5640_JPEG_QT_DATA 0x4410U
|
|
#define OV5640_JPEG_QT_ADDR 0x4411U
|
|
#define OV5640_JPEG_ISI_DATA 0x4412U
|
|
#define OV5640_JPEG_ISI_CTRL2 0x4413U
|
|
#define OV5640_JPEG_LENGTH_BYTE3 0x4414U
|
|
#define OV5640_JPEG_LENGTH_BYTE2 0x4415U
|
|
#define OV5640_JPEG_LENGTH_BYTE1 0x4416U
|
|
#define OV5640_JFIFO_OVERFLOW 0x4417U
|
|
|
|
/* VFIFO control [0x4600 ~ 0x460D] */
|
|
#define OV5640_VFIFO_CTRL00 0x4600U
|
|
#define OV5640_VFIFO_HSIZE_HIGH 0x4602U
|
|
#define OV5640_VFIFO_HSIZE_LOW 0x4603U
|
|
#define OV5640_VFIFO_VSIZE_HIGH 0x4604U
|
|
#define OV5640_VFIFO_VSIZE_LOW 0x4605U
|
|
#define OV5640_VFIFO_CTRL0C 0x460CU
|
|
#define OV5640_VFIFO_CTRL0D 0x460DU
|
|
|
|
/* DVP control [0x4709 ~ 0x4745] */
|
|
#define OV5640_DVP_VSYNC_WIDTH0 0x4709U
|
|
#define OV5640_DVP_VSYNC_WIDTH1 0x470AU
|
|
#define OV5640_DVP_VSYNC_WIDTH2 0x470BU
|
|
#define OV5640_PAD_LEFT_CTRL 0x4711U
|
|
#define OV5640_PAD_RIGHT_CTRL 0x4712U
|
|
#define OV5640_JPG_MODE_SELECT 0x4713U
|
|
#define OV5640_656_DUMMY_LINE 0x4715U
|
|
#define OV5640_CCIR656_CTRL 0x4719U
|
|
#define OV5640_HSYNC_CTRL00 0x471BU
|
|
#define OV5640_DVP_VSYN_CTRL 0x471DU
|
|
#define OV5640_DVP_HREF_CTRL 0x471FU
|
|
#define OV5640_VSTART_OFFSET 0x4721U
|
|
#define OV5640_VEND_OFFSET 0x4722U
|
|
#define OV5640_DVP_CTRL23 0x4723U
|
|
#define OV5640_CCIR656_CTRL00 0x4730U
|
|
#define OV5640_CCIR656_CTRL01 0x4731U
|
|
#define OV5640_CCIR656_FS 0x4732U
|
|
#define OV5640_CCIR656_FE 0x4733U
|
|
#define OV5640_CCIR656_LS 0x4734U
|
|
#define OV5640_CCIR656_LE 0x4735U
|
|
#define OV5640_CCIR656_CTRL06 0x4736U
|
|
#define OV5640_CCIR656_CTRL07 0x4737U
|
|
#define OV5640_CCIR656_CTRL08 0x4738U
|
|
#define OV5640_POLARITY_CTRL 0x4740U
|
|
#define OV5640_TEST_PATTERN 0x4741U
|
|
#define OV5640_DATA_ORDER 0x4745U
|
|
|
|
/* MIPI control [0x4800 ~ 0x4837] */
|
|
#define OV5640_MIPI_CTRL00 0x4800U
|
|
#define OV5640_MIPI_CTRL01 0x4801U
|
|
#define OV5640_MIPI_CTRL05 0x4805U
|
|
#define OV5640_MIPI_DATA_ORDER 0x480AU
|
|
#define OV5640_MIN_HS_ZERO_HIGH 0x4818U
|
|
#define OV5640_MIN_HS_ZERO_LOW 0x4819U
|
|
#define OV5640_MIN_MIPI_HS_TRAIL_HIGH 0x481AU
|
|
#define OV5640_MIN_MIPI_HS_TRAIL_LOW 0x481BU
|
|
#define OV5640_MIN_MIPI_CLK_ZERO_HIGH 0x481CU
|
|
#define OV5640_MIN_MIPI_CLK_ZERO_LOW 0x481DU
|
|
#define OV5640_MIN_MIPI_CLK_PREPARE_HIGH 0x481EU
|
|
#define OV5640_MIN_MIPI_CLK_PREPARE_LOW 0x481FU
|
|
#define OV5640_MIN_CLK_POST_HIGH 0x4820U
|
|
#define OV5640_MIN_CLK_POST_LOW 0x4821U
|
|
#define OV5640_MIN_CLK_TRAIL_HIGH 0x4822U
|
|
#define OV5640_MIN_CLK_TRAIL_LOW 0x4823U
|
|
#define OV5640_MIN_LPX_PCLK_HIGH 0x4824U
|
|
#define OV5640_MIN_LPX_PCLK_LOW 0x4825U
|
|
#define OV5640_MIN_HS_PREPARE_HIGH 0x4826U
|
|
#define OV5640_MIN_HS_PREPARE_LOW 0x4827U
|
|
#define OV5640_MIN_HS_EXIT_HIGH 0x4828U
|
|
#define OV5640_MIN_HS_EXIT_LOW 0x4829U
|
|
#define OV5640_MIN_HS_ZERO_UI 0x482AU
|
|
#define OV5640_MIN_HS_TRAIL_UI 0x482BU
|
|
#define OV5640_MIN_CLK_ZERO_UI 0x482CU
|
|
#define OV5640_MIN_CLK_PREPARE_UI 0x482DU
|
|
#define OV5640_MIN_CLK_POST_UI 0x482EU
|
|
#define OV5640_MIN_CLK_TRAIL_UI 0x482FU
|
|
#define OV5640_MIN_LPX_PCLK_UI 0x4830U
|
|
#define OV5640_MIN_HS_PREPARE_UI 0x4831U
|
|
#define OV5640_MIN_HS_EXIT_UI 0x4832U
|
|
#define OV5640_PCLK_PERIOD 0x4837U
|
|
|
|
/* ISP frame control [0x4901 ~ 0x4902] */
|
|
#define OV5640_ISP_FRAME_CTRL01 0x4901U
|
|
#define OV5640_ISP_FRAME_CTRL02 0x4902U
|
|
|
|
/* ISP top control [0x5000 ~ 0x5063] */
|
|
#define OV5640_ISP_CONTROL00 0x5000U
|
|
#define OV5640_ISP_CONTROL01 0x5001U
|
|
#define OV5640_ISP_CONTROL03 0x5003U
|
|
#define OV5640_ISP_CONTROL05 0x5005U
|
|
#define OV5640_ISP_MISC0 0x501DU
|
|
#define OV5640_ISP_MISC1 0x501EU
|
|
#define OV5640_FORMAT_MUX_CTRL 0x501FU
|
|
#define OV5640_DITHER_CTRL0 0x5020U
|
|
#define OV5640_DRAW_WINDOW_CTRL00 0x5027U
|
|
#define OV5640_DRAW_WINDOW_LEFT_CTRL_HIGH 0x5028U
|
|
#define OV5640_DRAW_WINDOW_LEFT_CTRL_LOW 0x5029U
|
|
#define OV5640_DRAW_WINDOW_RIGHT_CTRL_HIGH 0x502AU
|
|
#define OV5640_DRAW_WINDOW_RIGHT_CTRL_LOW 0x502BU
|
|
#define OV5640_DRAW_WINDOW_TOP_CTRL_HIGH 0x502CU
|
|
#define OV5640_DRAW_WINDOW_TOP_CTRL_LOW 0x502DU
|
|
#define OV5640_DRAW_WINDOW_BOTTOM_CTRL_HIGH 0x502EU
|
|
#define OV5640_DRAW_WINDOW_BOTTOM_CTRL_LOW 0x502FU
|
|
#define OV5640_DRAW_WINDOW_HBW_CTRL_HIGH 0x5030U /* HBW: Horizontal Boundary Width */
|
|
#define OV5640_DRAW_WINDOW_HBW_CTRL_LOW 0x5031U
|
|
#define OV5640_DRAW_WINDOW_VBW_CTRL_HIGH 0x5032U /* VBW: Vertical Boundary Width */
|
|
#define OV5640_DRAW_WINDOW_VBW_CTRL_LOW 0x5033U
|
|
#define OV5640_DRAW_WINDOW_Y_CTRL 0x5034U
|
|
#define OV5640_DRAW_WINDOW_U_CTRL 0x5035U
|
|
#define OV5640_DRAW_WINDOW_V_CTRL 0x5036U
|
|
#define OV5640_PRE_ISP_TEST_SETTING1 0x503DU
|
|
#define OV5640_ISP_SENSOR_BIAS_I 0x5061U
|
|
#define OV5640_ISP_SENSOR_GAIN1_I 0x5062U
|
|
#define OV5640_ISP_SENSOR_GAIN2_I 0x5063U
|
|
|
|
/* AWB control [0x5180 ~ 0x51D0] */
|
|
#define OV5640_AWB_CTRL00 0x5180U
|
|
#define OV5640_AWB_CTRL01 0x5181U
|
|
#define OV5640_AWB_CTRL02 0x5182U
|
|
#define OV5640_AWB_CTRL03 0x5183U
|
|
#define OV5640_AWB_CTRL04 0x5184U
|
|
#define OV5640_AWB_CTRL05 0x5185U
|
|
#define OV5640_AWB_CTRL06 0x5186U /* Advanced AWB control registers: 0x5186 ~ 0x5190 */
|
|
#define OV5640_AWB_CTRL07 0x5187U
|
|
#define OV5640_AWB_CTRL08 0x5188U
|
|
#define OV5640_AWB_CTRL09 0x5189U
|
|
#define OV5640_AWB_CTRL10 0x518AU
|
|
#define OV5640_AWB_CTRL11 0x518BU
|
|
#define OV5640_AWB_CTRL12 0x518CU
|
|
#define OV5640_AWB_CTRL13 0x518DU
|
|
#define OV5640_AWB_CTRL14 0x518EU
|
|
#define OV5640_AWB_CTRL15 0x518FU
|
|
#define OV5640_AWB_CTRL16 0x5190U
|
|
#define OV5640_AWB_CTRL17 0x5191U
|
|
#define OV5640_AWB_CTRL18 0x5192U
|
|
#define OV5640_AWB_CTRL19 0x5193U
|
|
#define OV5640_AWB_CTRL20 0x5194U
|
|
#define OV5640_AWB_CTRL21 0x5195U
|
|
#define OV5640_AWB_CTRL22 0x5196U
|
|
#define OV5640_AWB_CTRL23 0x5197U
|
|
#define OV5640_AWB_CTRL24 0x5198U
|
|
#define OV5640_AWB_CTRL25 0x5199U
|
|
#define OV5640_AWB_CTRL26 0x519AU
|
|
#define OV5640_AWB_CTRL27 0x519BU
|
|
#define OV5640_AWB_CTRL28 0x519CU
|
|
#define OV5640_AWB_CTRL29 0x519DU
|
|
#define OV5640_AWB_CTRL30 0x519EU
|
|
#define OV5640_AWB_CURRENT_R_GAIN_HIGH 0x519FU
|
|
#define OV5640_AWB_CURRENT_R_GAIN_LOW 0x51A0U
|
|
#define OV5640_AWB_CURRENT_G_GAIN_HIGH 0x51A1U
|
|
#define OV5640_AWB_CURRENT_G_GAIN_LOW 0x51A2U
|
|
#define OV5640_AWB_CURRENT_B_GAIN_HIGH 0x51A3U
|
|
#define OV5640_AWB_CURRENT_B_GAIN_LOW 0x51A4U
|
|
#define OV5640_AWB_AVERAGE_R 0x51A5U
|
|
#define OV5640_AWB_AVERAGE_G 0x51A6U
|
|
#define OV5640_AWB_AVERAGE_B 0x51A7U
|
|
#define OV5640_AWB_CTRL74 0x5180U
|
|
|
|
/* CIP control [0x5300 ~ 0x530F] */
|
|
#define OV5640_CIP_SHARPENMT_TH1 0x5300U
|
|
#define OV5640_CIP_SHARPENMT_TH2 0x5301U
|
|
#define OV5640_CIP_SHARPENMT_OFFSET1 0x5302U
|
|
#define OV5640_CIP_SHARPENMT_OFFSET2 0x5303U
|
|
#define OV5640_CIP_DNS_TH1 0x5304U
|
|
#define OV5640_CIP_DNS_TH2 0x5305U
|
|
#define OV5640_CIP_DNS_OFFSET1 0x5306U
|
|
#define OV5640_CIP_DNS_OFFSET2 0x5307U
|
|
#define OV5640_CIP_CTRL 0x5308U
|
|
#define OV5640_CIP_SHARPENTH_TH1 0x5309U
|
|
#define OV5640_CIP_SHARPENTH_TH2 0x530AU
|
|
#define OV5640_CIP_SHARPENTH_OFFSET1 0x530BU
|
|
#define OV5640_CIP_SHARPENTH_OFFSET2 0x530CU
|
|
#define OV5640_CIP_EDGE_MT_AUTO 0x530DU
|
|
#define OV5640_CIP_DNS_TH_AUTO 0x530EU
|
|
#define OV5640_CIP_SHARPEN_TH_AUTO 0x530FU
|
|
|
|
/* CMX control [0x5380 ~ 0x538B] */
|
|
#define OV5640_CMX_CTRL 0x5380U
|
|
#define OV5640_CMX1 0x5381U
|
|
#define OV5640_CMX2 0x5382U
|
|
#define OV5640_CMX3 0x5383U
|
|
#define OV5640_CMX4 0x5384U
|
|
#define OV5640_CMX5 0x5385U
|
|
#define OV5640_CMX6 0x5386U
|
|
#define OV5640_CMX7 0x5387U
|
|
#define OV5640_CMX8 0x5388U
|
|
#define OV5640_CMX9 0x5389U
|
|
#define OV5640_CMXSIGN_HIGH 0x538AU
|
|
#define OV5640_CMXSIGN_LOW 0x538BU
|
|
|
|
/* gamma control [0x5480 ~ 0x5490] */
|
|
#define OV5640_GAMMA_CTRL00 0x5480U
|
|
#define OV5640_GAMMA_YST00 0x5481U
|
|
#define OV5640_GAMMA_YST01 0x5482U
|
|
#define OV5640_GAMMA_YST02 0x5483U
|
|
#define OV5640_GAMMA_YST03 0x5484U
|
|
#define OV5640_GAMMA_YST04 0x5485U
|
|
#define OV5640_GAMMA_YST05 0x5486U
|
|
#define OV5640_GAMMA_YST06 0x5487U
|
|
#define OV5640_GAMMA_YST07 0x5488U
|
|
#define OV5640_GAMMA_YST08 0x5489U
|
|
#define OV5640_GAMMA_YST09 0x548AU
|
|
#define OV5640_GAMMA_YST0A 0x548BU
|
|
#define OV5640_GAMMA_YST0B 0x548CU
|
|
#define OV5640_GAMMA_YST0C 0x548DU
|
|
#define OV5640_GAMMA_YST0D 0x548EU
|
|
#define OV5640_GAMMA_YST0E 0x548FU
|
|
#define OV5640_GAMMA_YST0F 0x5490U
|
|
|
|
/* SDE control [0x5580 ~ 0x558C] */
|
|
#define OV5640_SDE_CTRL0 0x5580U
|
|
#define OV5640_SDE_CTRL1 0x5581U
|
|
#define OV5640_SDE_CTRL2 0x5582U
|
|
#define OV5640_SDE_CTRL3 0x5583U
|
|
#define OV5640_SDE_CTRL4 0x5584U
|
|
#define OV5640_SDE_CTRL5 0x5585U
|
|
#define OV5640_SDE_CTRL6 0x5586U
|
|
#define OV5640_SDE_CTRL7 0x5587U
|
|
#define OV5640_SDE_CTRL8 0x5588U
|
|
#define OV5640_SDE_CTRL9 0x5589U
|
|
#define OV5640_SDE_CTRL10 0x558AU
|
|
#define OV5640_SDE_CTRL11 0x558BU
|
|
#define OV5640_SDE_CTRL12 0x558CU
|
|
|
|
/* scale control [0x5600 ~ 0x5606] */
|
|
#define OV5640_SCALE_CTRL0 0x5600U
|
|
#define OV5640_SCALE_CTRL1 0x5601U
|
|
#define OV5640_SCALE_CTRL2 0x5602U
|
|
#define OV5640_SCALE_CTRL3 0x5603U
|
|
#define OV5640_SCALE_CTRL4 0x5604U
|
|
#define OV5640_SCALE_CTRL5 0x5605U
|
|
#define OV5640_SCALE_CTRL6 0x5606U
|
|
|
|
|
|
/* AVG control [0x5680 ~ 0x56A2] */
|
|
#define OV5640_X_START_HIGH 0x5680U
|
|
#define OV5640_X_START_LOW 0x5681U
|
|
#define OV5640_Y_START_HIGH 0x5682U
|
|
#define OV5640_Y_START_LOW 0x5683U
|
|
#define OV5640_X_WINDOW_HIGH 0x5684U
|
|
#define OV5640_X_WINDOW_LOW 0x5685U
|
|
#define OV5640_Y_WINDOW_HIGH 0x5686U
|
|
#define OV5640_Y_WINDOW_LOW 0x5687U
|
|
#define OV5640_WEIGHT00 0x5688U
|
|
#define OV5640_WEIGHT01 0x5689U
|
|
#define OV5640_WEIGHT02 0x568AU
|
|
#define OV5640_WEIGHT03 0x568BU
|
|
#define OV5640_WEIGHT04 0x568CU
|
|
#define OV5640_WEIGHT05 0x568DU
|
|
#define OV5640_WEIGHT06 0x568EU
|
|
#define OV5640_WEIGHT07 0x568FU
|
|
#define OV5640_AVG_CTRL10 0x5690U
|
|
#define OV5640_AVG_WIN_00 0x5691U
|
|
#define OV5640_AVG_WIN_01 0x5692U
|
|
#define OV5640_AVG_WIN_02 0x5693U
|
|
#define OV5640_AVG_WIN_03 0x5694U
|
|
#define OV5640_AVG_WIN_10 0x5695U
|
|
#define OV5640_AVG_WIN_11 0x5696U
|
|
#define OV5640_AVG_WIN_12 0x5697U
|
|
#define OV5640_AVG_WIN_13 0x5698U
|
|
#define OV5640_AVG_WIN_20 0x5699U
|
|
#define OV5640_AVG_WIN_21 0x569AU
|
|
#define OV5640_AVG_WIN_22 0x569BU
|
|
#define OV5640_AVG_WIN_23 0x569CU
|
|
#define OV5640_AVG_WIN_30 0x569DU
|
|
#define OV5640_AVG_WIN_31 0x569EU
|
|
#define OV5640_AVG_WIN_32 0x569FU
|
|
#define OV5640_AVG_WIN_33 0x56A0U
|
|
#define OV5640_AVG_READOUT 0x56A1U
|
|
#define OV5640_AVG_WEIGHT_SUM 0x56A2U
|
|
|
|
/* LENC control [0x5800 ~ 0x5849] */
|
|
#define OV5640_GMTRX00 0x5800U
|
|
#define OV5640_GMTRX01 0x5801U
|
|
#define OV5640_GMTRX02 0x5802U
|
|
#define OV5640_GMTRX03 0x5803U
|
|
#define OV5640_GMTRX04 0x5804U
|
|
#define OV5640_GMTRX05 0x5805U
|
|
#define OV5640_GMTRX10 0x5806U
|
|
#define OV5640_GMTRX11 0x5807U
|
|
#define OV5640_GMTRX12 0x5808U
|
|
#define OV5640_GMTRX13 0x5809U
|
|
#define OV5640_GMTRX14 0x580AU
|
|
#define OV5640_GMTRX15 0x580BU
|
|
#define OV5640_GMTRX20 0x580CU
|
|
#define OV5640_GMTRX21 0x580DU
|
|
#define OV5640_GMTRX22 0x580EU
|
|
#define OV5640_GMTRX23 0x580FU
|
|
#define OV5640_GMTRX24 0x5810U
|
|
#define OV5640_GMTRX25 0x5811U
|
|
#define OV5640_GMTRX30 0x5812U
|
|
#define OV5640_GMTRX31 0x5813U
|
|
#define OV5640_GMTRX32 0x5814U
|
|
#define OV5640_GMTRX33 0x5815U
|
|
#define OV5640_GMTRX34 0x5816U
|
|
#define OV5640_GMTRX35 0x5817U
|
|
#define OV5640_GMTRX40 0x5818U
|
|
#define OV5640_GMTRX41 0x5819U
|
|
#define OV5640_GMTRX42 0x581AU
|
|
#define OV5640_GMTRX43 0x581BU
|
|
#define OV5640_GMTRX44 0x581CU
|
|
#define OV5640_GMTRX45 0x581DU
|
|
#define OV5640_GMTRX50 0x581EU
|
|
#define OV5640_GMTRX51 0x581FU
|
|
#define OV5640_GMTRX52 0x5820U
|
|
#define OV5640_GMTRX53 0x5821U
|
|
#define OV5640_GMTRX54 0x5822U
|
|
#define OV5640_GMTRX55 0x5823U
|
|
#define OV5640_BRMATRX00 0x5824U
|
|
#define OV5640_BRMATRX01 0x5825U
|
|
#define OV5640_BRMATRX02 0x5826U
|
|
#define OV5640_BRMATRX03 0x5827U
|
|
#define OV5640_BRMATRX04 0x5828U
|
|
#define OV5640_BRMATRX05 0x5829U
|
|
#define OV5640_BRMATRX06 0x582AU
|
|
#define OV5640_BRMATRX07 0x582BU
|
|
#define OV5640_BRMATRX08 0x582CU
|
|
#define OV5640_BRMATRX09 0x582DU
|
|
#define OV5640_BRMATRX20 0x582EU
|
|
#define OV5640_BRMATRX21 0x582FU
|
|
#define OV5640_BRMATRX22 0x5830U
|
|
#define OV5640_BRMATRX23 0x5831U
|
|
#define OV5640_BRMATRX24 0x5832U
|
|
#define OV5640_BRMATRX30 0x5833U
|
|
#define OV5640_BRMATRX31 0x5834U
|
|
#define OV5640_BRMATRX32 0x5835U
|
|
#define OV5640_BRMATRX33 0x5836U
|
|
#define OV5640_BRMATRX34 0x5837U
|
|
#define OV5640_BRMATRX40 0x5838U
|
|
#define OV5640_BRMATRX41 0x5839U
|
|
#define OV5640_BRMATRX42 0x583AU
|
|
#define OV5640_BRMATRX43 0x583BU
|
|
#define OV5640_BRMATRX44 0x583CU
|
|
#define OV5640_LENC_BR_OFFSET 0x583DU
|
|
#define OV5640_MAX_GAIN 0x583EU
|
|
#define OV5640_MIN_GAIN 0x583FU
|
|
#define OV5640_MIN_Q 0x5840U
|
|
#define OV5640_LENC_CTRL59 0x5841U
|
|
#define OV5640_BR_HSCALE_HIGH 0x5842U
|
|
#define OV5640_BR_HSCALE_LOW 0x5843U
|
|
#define OV5640_BR_VSCALE_HIGH 0x5844U
|
|
#define OV5640_BR_VSCALE_LOW 0x5845U
|
|
#define OV5640_G_HSCALE_HIGH 0x5846U
|
|
#define OV5640_G_HSCALE_LOW 0x5847U
|
|
#define OV5640_G_VSCALE_HIGH 0x5848U
|
|
#define OV5640_G_VSCALE_LOW 0x5849U
|
|
|
|
/* AFC control [0x6000 ~ 0x603F] */
|
|
#define OV5640_AFC_CTRL00 0x6000U
|
|
#define OV5640_AFC_CTRL01 0x6001U
|
|
#define OV5640_AFC_CTRL02 0x6002U
|
|
#define OV5640_AFC_CTRL03 0x6003U
|
|
#define OV5640_AFC_CTRL04 0x6004U
|
|
#define OV5640_AFC_CTRL05 0x6005U
|
|
#define OV5640_AFC_CTRL06 0x6006U
|
|
#define OV5640_AFC_CTRL07 0x6007U
|
|
#define OV5640_AFC_CTRL08 0x6008U
|
|
#define OV5640_AFC_CTRL09 0x6009U
|
|
#define OV5640_AFC_CTRL10 0x600AU
|
|
#define OV5640_AFC_CTRL11 0x600BU
|
|
#define OV5640_AFC_CTRL12 0x600CU
|
|
#define OV5640_AFC_CTRL13 0x600DU
|
|
#define OV5640_AFC_CTRL14 0x600EU
|
|
#define OV5640_AFC_CTRL15 0x600FU
|
|
#define OV5640_AFC_CTRL16 0x6010U
|
|
#define OV5640_AFC_CTRL17 0x6011U
|
|
#define OV5640_AFC_CTRL18 0x6012U
|
|
#define OV5640_AFC_CTRL19 0x6013U
|
|
#define OV5640_AFC_CTRL20 0x6014U
|
|
#define OV5640_AFC_CTRL21 0x6015U
|
|
#define OV5640_AFC_CTRL22 0x6016U
|
|
#define OV5640_AFC_CTRL23 0x6017U
|
|
#define OV5640_AFC_CTRL24 0x6018U
|
|
#define OV5640_AFC_CTRL25 0x6019U
|
|
#define OV5640_AFC_CTRL26 0x601AU
|
|
#define OV5640_AFC_CTRL27 0x601BU
|
|
#define OV5640_AFC_CTRL28 0x601CU
|
|
#define OV5640_AFC_CTRL29 0x601DU
|
|
#define OV5640_AFC_CTRL30 0x601EU
|
|
#define OV5640_AFC_CTRL31 0x601FU
|
|
#define OV5640_AFC_CTRL32 0x6020U
|
|
#define OV5640_AFC_CTRL33 0x6021U
|
|
#define OV5640_AFC_CTRL34 0x6022U
|
|
#define OV5640_AFC_CTRL35 0x6023U
|
|
#define OV5640_AFC_CTRL36 0x6024U
|
|
#define OV5640_AFC_CTRL37 0x6025U
|
|
#define OV5640_AFC_CTRL38 0x6026U
|
|
#define OV5640_AFC_CTRL39 0x6027U
|
|
#define OV5640_AFC_CTRL40 0x6028U
|
|
#define OV5640_AFC_CTRL41 0x6029U
|
|
#define OV5640_AFC_CTRL42 0x602AU
|
|
#define OV5640_AFC_CTRL43 0x602BU
|
|
#define OV5640_AFC_CTRL44 0x602CU
|
|
#define OV5640_AFC_CTRL45 0x602DU
|
|
#define OV5640_AFC_CTRL46 0x602EU
|
|
#define OV5640_AFC_CTRL47 0x602FU
|
|
#define OV5640_AFC_CTRL48 0x6030U
|
|
#define OV5640_AFC_CTRL49 0x6031U
|
|
#define OV5640_AFC_CTRL50 0x6032U
|
|
#define OV5640_AFC_CTRL51 0x6033U
|
|
#define OV5640_AFC_CTRL52 0x6034U
|
|
#define OV5640_AFC_CTRL53 0x6035U
|
|
#define OV5640_AFC_CTRL54 0x6036U
|
|
#define OV5640_AFC_CTRL55 0x6037U
|
|
#define OV5640_AFC_CTRL56 0x6038U
|
|
#define OV5640_AFC_CTRL57 0x6039U
|
|
#define OV5640_AFC_CTRL58 0x603AU
|
|
#define OV5640_AFC_CTRL59 0x603BU
|
|
#define OV5640_AFC_CTRL60 0x603CU
|
|
#define OV5640_AFC_READ58 0x603DU
|
|
#define OV5640_AFC_READ59 0x603EU
|
|
#define OV5640_AFC_READ60 0x603FU
|
|
|
|
|
|
void camera_sleep();
|
|
void camera_wakeup();
|
|
void camera_init();
|
|
|
|
#define PICTURE_BUFFER_SIZE 150000 // max support 150x4 = 600k
|
|
|
|
#endif //STM32U5_OV5640_H
|