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 
14 #define OV5640_ACTIVE_IMAGE_WIDTH (2592U)
15 #define OV5640_ACTIVE_IMAGE_HEIGHT (1944U)
16 #define OV5640_I2C_ADDR (0x3CU)
17 #define OV5640_CHIP_ID_HIGH_BYTE_ADDR (0x300A)
18 #define OV5640_CHIP_ID_HIGH_BYTE_VALUE (0x56)
19 #define OV5640_CHIP_ID_LOW_BYTE_ADDR (0x300B)
20 #define OV5640_CHIP_ID_LOW_BYTE_VALUE (0x40)
21 
22 #define OV5640_RST_ACTIVE 0
23 #define OV5640_RST_INACTIVE 1
24 #define OV5640_PWDN_ACTIVE 1
25 #define OV5640_PWDN_INACTIVE 0
26 
27 /* Camera clock configuration elements. */
28 typedef struct {
29  uint32_t resolution;
30  uint8_t fps;
31  uint8_t pllctrl1;
32  uint8_t pllctrl2;
33  uint8_t vfifoctrl0c;
34  uint8_t pclkdiv;
35  uint8_t pclkperiod;
37 
38 typedef struct {
39  uint8_t lightmode;
40  uint8_t awbctrl;
41  uint8_t awbr_h;
42  uint8_t awbr_l;
43  uint8_t awbg_h;
44  uint8_t awbg_l;
45  uint8_t awbb_h;
46  uint8_t awbb_l;
48 
49 typedef struct {
50  uint8_t effect;
51  uint8_t sdectrl0;
52  uint8_t sdectrl3;
53  uint8_t sdectrl4;
55 
56 typedef struct {
57  uint16_t regaddr;
58  uint8_t regval;
60 
61 typedef struct {
62  uint32_t resolution;
63  ov5640_reg_val_t param[];
65 
66 
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
71 /*
72  * ov5640 initialization
73  */
75 
76 /*
77  * ov5640 read register
78  */
79 hpm_stat_t ov5640_read_register(camera_context_t *context, uint16_t reg, uint8_t *buf);
80 
81 /*
82  * ov5640 write register
83  */
84 hpm_stat_t ov5640_write_register(camera_context_t *context, uint16_t reg, uint8_t val);
85 
86 /*
87  * ov5640 write multi register
88  */
89 hpm_stat_t ov5640_write_multi_registers(camera_context_t *context, const ov5640_reg_val_t regval[], uint32_t len);
90 
91 /*
92  * ov5640 softreset
93  */
95 
96 /*
97  * ov5640 set pixel format
98  */
100 
101 /*
102  * ov5640 check chip id
103  */
105 
106 /*
107  * ov5640 set image size
108  */
110 
111 /*
112  * ov5640 set clock config
113  */
115 
116 /*
117  * ov5640 set interface
118  */
120 
128 hpm_stat_t ov5640_flip(camera_context_t *context, bool enable);
129 
130 /*
131  * ov5640 start
132  */
134 
135 /*
136  * ov5640 stop
137  */
139 
140 /*
141  * ov5640 set brightness
142  */
143 hpm_stat_t ov5640_set_brightness(camera_context_t *context, int32_t brightness);
144 
145 /*
146  * ov5640 set contrast
147  */
148 hpm_stat_t ov5640_set_contrast(camera_context_t *context, int32_t contrast);
149 
150 /*
151  * ov5640 set saturation
152  */
153 hpm_stat_t ov5640_set_saturation(camera_context_t *context, int32_t saturation);
154 
155 /*
156  * ov5640 set environment light mode
157  */
158 hpm_stat_t ov5640_set_light_mode(camera_context_t *context, int32_t lightmode);
159 
160 /*
161  * ov5640 set special effect
162  */
163 hpm_stat_t ov5640_set_special_effect(camera_context_t *context, int32_t effect);
164 
170 void ov5640_power_up(camera_context_t *context);
171 
179 hpm_stat_t ov5640_mirror(camera_context_t *context, bool enable);
180 
181 #ifdef __cplusplus
182 }
183 #endif
184 #endif /* HPM_OV5640_H */
enum display_pixel_format display_pixel_format_t
display pixel format
uint32_t hpm_stat_t
Definition: hpm_common.h:123
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:28
uint8_t pllctrl1
Definition: hpm_ov5640.h:31
uint8_t fps
Definition: hpm_ov5640.h:30
uint32_t resolution
Definition: hpm_ov5640.h:29
uint8_t pclkperiod
Definition: hpm_ov5640.h:35
uint8_t pclkdiv
Definition: hpm_ov5640.h:34
uint8_t vfifoctrl0c
Definition: hpm_ov5640.h:33
uint8_t pllctrl2
Definition: hpm_ov5640.h:32
Definition: hpm_ov5640.h:38
uint8_t awbr_h
Definition: hpm_ov5640.h:41
uint8_t awbb_l
Definition: hpm_ov5640.h:46
uint8_t lightmode
Definition: hpm_ov5640.h:39
uint8_t awbctrl
Definition: hpm_ov5640.h:40
uint8_t awbr_l
Definition: hpm_ov5640.h:42
uint8_t awbg_h
Definition: hpm_ov5640.h:43
uint8_t awbg_l
Definition: hpm_ov5640.h:44
uint8_t awbb_h
Definition: hpm_ov5640.h:45
Definition: hpm_ov5640.h:56
uint16_t regaddr
Definition: hpm_ov5640.h:57
uint8_t regval
Definition: hpm_ov5640.h:58
Definition: hpm_ov5640.h:61
uint32_t resolution
Definition: hpm_ov5640.h:62
Definition: hpm_ov5640.h:49
uint8_t sdectrl4
Definition: hpm_ov5640.h:53
uint8_t effect
Definition: hpm_ov5640.h:50
uint8_t sdectrl0
Definition: hpm_ov5640.h:51
uint8_t sdectrl3
Definition: hpm_ov5640.h:52