This repository has been archived on 2024-05-28. You can view files and clone it, but cannot push or open issues or pull requests.
2023-11-14 16:25:09 -05:00

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