HPM SDK
HPMicro Software Development Kit
hpm_ov5640.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_OV5640_H
9 #define HPM_OV5640_H
10 
11 #include "hpm_common.h"
12 #include "hpm_camera_config.h"
13 
23 #define OV5640_ACTIVE_IMAGE_WIDTH (2592U)
24 #define OV5640_ACTIVE_IMAGE_HEIGHT (1944U)
25 #define OV5640_I2C_ADDR (0x3CU)
26 #define OV5640_CHIP_ID_HIGH_BYTE_ADDR (0x300A)
27 #define OV5640_CHIP_ID_HIGH_BYTE_VALUE (0x56)
28 #define OV5640_CHIP_ID_LOW_BYTE_ADDR (0x300B)
29 #define OV5640_CHIP_ID_LOW_BYTE_VALUE (0x40)
30 
31 #define OV5640_RST_ACTIVE 0
32 #define OV5640_RST_INACTIVE 1
33 #define OV5640_PWDN_ACTIVE 1
34 #define OV5640_PWDN_INACTIVE 0
35 
36 /* Camera clock configuration elements. */
37 typedef struct {
38  uint32_t resolution;
39  uint8_t fps;
40  uint8_t pllctrl1;
41  uint8_t pllctrl2;
42  uint8_t vfifoctrl0c;
43  uint8_t pclkdiv;
44  uint8_t pclkperiod;
46 
47 typedef struct {
48  uint8_t lightmode;
49  uint8_t awbctrl;
50  uint8_t awbr_h;
51  uint8_t awbr_l;
52  uint8_t awbg_h;
53  uint8_t awbg_l;
54  uint8_t awbb_h;
55  uint8_t awbb_l;
57 
58 typedef struct {
59  uint8_t effect;
60  uint8_t sdectrl0;
61  uint8_t sdectrl3;
62  uint8_t sdectrl4;
64 
65 typedef struct {
66  uint16_t regaddr;
67  uint8_t regval;
69 
70 typedef struct {
71  uint32_t resolution;
72  ov5640_reg_val_t param[];
74 
75 
76 #ifdef __cplusplus
77 extern "C" {
78 #endif
79 
80 /*
81  * ov5640 initialization
82  */
84 
85 /*
86  * ov5640 read register
87  */
88 hpm_stat_t ov5640_read_register(camera_context_t *context, uint16_t reg, uint8_t *buf);
89 
90 /*
91  * ov5640 write register
92  */
93 hpm_stat_t ov5640_write_register(camera_context_t *context, uint16_t reg, uint8_t val);
94 
95 /*
96  * ov5640 write multi register
97  */
98 hpm_stat_t ov5640_write_multi_registers(camera_context_t *context, const ov5640_reg_val_t regval[], uint32_t len);
99 
100 /*
101  * ov5640 softreset
102  */
104 
105 /*
106  * ov5640 set pixel format
107  */
109 
110 /*
111  * ov5640 check chip id
112  */
114 
115 /*
116  * ov5640 set image size
117  */
119 
120 /*
121  * ov5640 set clock config
122  */
124 
125 /*
126  * ov5640 set interface
127  */
129 
137 hpm_stat_t ov5640_flip(camera_context_t *context, bool enable);
138 
139 /*
140  * ov5640 start
141  */
143 
144 /*
145  * ov5640 stop
146  */
148 
149 /*
150  * ov5640 set brightness
151  */
152 hpm_stat_t ov5640_set_brightness(camera_context_t *context, int32_t brightness);
153 
154 /*
155  * ov5640 set contrast
156  */
157 hpm_stat_t ov5640_set_contrast(camera_context_t *context, int32_t contrast);
158 
159 /*
160  * ov5640 set saturation
161  */
162 hpm_stat_t ov5640_set_saturation(camera_context_t *context, int32_t saturation);
163 
164 /*
165  * ov5640 set environment light mode
166  */
167 hpm_stat_t ov5640_set_light_mode(camera_context_t *context, int32_t lightmode);
168 
169 /*
170  * ov5640 set special effect
171  */
172 hpm_stat_t ov5640_set_special_effect(camera_context_t *context, int32_t effect);
173 
179 void ov5640_power_up(camera_context_t *context);
180 
188 hpm_stat_t ov5640_mirror(camera_context_t *context, bool enable);
189 
190 #ifdef __cplusplus
191 }
192 #endif
193 
199 #endif /* HPM_OV5640_H */
enum display_pixel_format display_pixel_format_t
display pixel format
uint32_t hpm_stat_t
Definition: hpm_common.h:135
hpm_stat_t ov5640_software_reset(camera_context_t *context)
Definition: hpm_ov5640.c:565
hpm_stat_t ov5640_set_image_size(camera_context_t *context, camera_config_t *ov_config)
Definition: hpm_ov5640.c:621
hpm_stat_t ov5640_set_brightness(camera_context_t *context, int32_t brightness)
Definition: hpm_ov5640.c:724
hpm_stat_t ov5640_set_interface(camera_context_t *context, camera_config_t *ov_config)
Definition: hpm_ov5640.c:670
hpm_stat_t ov5640_set_pixel_format(camera_context_t *context, display_pixel_format_t pixel_format)
Definition: hpm_ov5640.c:575
hpm_stat_t ov5640_stop(camera_context_t *context)
Definition: hpm_ov5640.c:704
hpm_stat_t ov5640_init(camera_context_t *context, camera_config_t *ov_config)
Definition: hpm_ov5640.c:864
hpm_stat_t ov5640_set_clock_config(camera_context_t *context, camera_config_t *ov_config)
Definition: hpm_ov5640.c:652
hpm_stat_t ov5640_write_register(camera_context_t *context, uint16_t reg, uint8_t val)
Definition: hpm_ov5640.c:545
hpm_stat_t ov5640_set_saturation(camera_context_t *context, int32_t saturation)
Definition: hpm_ov5640.c:772
hpm_stat_t ov5640_start(camera_context_t *context)
Definition: hpm_ov5640.c:699
hpm_stat_t ov5640_read_register(camera_context_t *context, uint16_t reg, uint8_t *buf)
Definition: hpm_ov5640.c:532
hpm_stat_t ov5640_check_chip_id(camera_context_t *context)
Definition: hpm_ov5640.c:601
hpm_stat_t ov5640_set_light_mode(camera_context_t *context, int32_t lightmode)
Definition: hpm_ov5640.c:797
hpm_stat_t ov5640_write_multi_registers(camera_context_t *context, const ov5640_reg_val_t regval[], uint32_t len)
Definition: hpm_ov5640.c:553
hpm_stat_t ov5640_set_special_effect(camera_context_t *context, int32_t effect)
Definition: hpm_ov5640.c:825
void ov5640_power_up(camera_context_t *context)
ov5640 power up
Definition: hpm_ov5640.c:897
hpm_stat_t ov5640_set_contrast(camera_context_t *context, int32_t contrast)
Definition: hpm_ov5640.c:748
hpm_stat_t ov5640_mirror(camera_context_t *context, bool enable)
set ov5640 mirror
Definition: hpm_ov5640.c:850
hpm_stat_t ov5640_flip(camera_context_t *context, bool enable)
set ov5640 flip
Definition: hpm_ov5640.c:709
Definition: hpm_camera_config.h:42
Definition: hpm_camera_config.h:18
Definition: hpm_ov5640.h:37
uint8_t pllctrl1
Definition: hpm_ov5640.h:40
uint8_t fps
Definition: hpm_ov5640.h:39
uint32_t resolution
Definition: hpm_ov5640.h:38
uint8_t pclkperiod
Definition: hpm_ov5640.h:44
uint8_t pclkdiv
Definition: hpm_ov5640.h:43
uint8_t vfifoctrl0c
Definition: hpm_ov5640.h:42
uint8_t pllctrl2
Definition: hpm_ov5640.h:41
Definition: hpm_ov5640.h:47
uint8_t awbr_h
Definition: hpm_ov5640.h:50
uint8_t awbb_l
Definition: hpm_ov5640.h:55
uint8_t lightmode
Definition: hpm_ov5640.h:48
uint8_t awbctrl
Definition: hpm_ov5640.h:49
uint8_t awbr_l
Definition: hpm_ov5640.h:51
uint8_t awbg_h
Definition: hpm_ov5640.h:52
uint8_t awbg_l
Definition: hpm_ov5640.h:53
uint8_t awbb_h
Definition: hpm_ov5640.h:54
Definition: hpm_ov5640.h:65
uint16_t regaddr
Definition: hpm_ov5640.h:66
uint8_t regval
Definition: hpm_ov5640.h:67
Definition: hpm_ov5640.h:70
uint32_t resolution
Definition: hpm_ov5640.h:71
Definition: hpm_ov5640.h:58
uint8_t sdectrl4
Definition: hpm_ov5640.h:62
uint8_t effect
Definition: hpm_ov5640.h:59
uint8_t sdectrl0
Definition: hpm_ov5640.h:60
uint8_t sdectrl3
Definition: hpm_ov5640.h:61