stm32-camera  1.0
ov7670.h
Go to the documentation of this file.
1 /**
2  * @file ov7670.h
3  * @brief Main header file for the OV7670 camera module.
4  *
5  * @details pinkeee @ j.t0dd@protonmail.com
6  * @note See README for contributing guides and info.
7  * @copyright See License file.
8 */
9 
10 #ifndef OV7670_H
11 #define OV7670_H
12 
13 #include "stm32f4xx_hal.h"
14 #include <stdbool.h>
15 
16 /**
17  * @brief SCCB camera write slave address
18  * @return 0x42
19  */
20 static uint8_t OV7670_WRITE_ADDRESS = 0x42;
21 
22 /**
23  * @brief SCCB camera read slave address
24  * @return 0x43
25  */
26 static uint8_t OV7670_READ_ADDRESS = 0x43;
27 
28 /**
29  * @brief Timeout for whole driver coms
30  * @return 15seconds
31  */
32 static uint32_t OV7670_TIMEOUT = 15;
33 
34 /* Common Control registers (COM) */
35 
36 /**
37  * @brief COM1 RW register
38  * @details Common Control 1
39  * Bit[7]: Reserved
40  * Bit[6]: CCIR656 format
41  * 0: Disable
42  * 1: Enable
43  * Bit[5:2]: Reserved
44  * Bit[1:0]:
45  * AEC low 2 LSB (see registers AECHH for AEC[15:10]
46  * and AECH for AEC[9:2])
47  * @return 0x04
48 */
49 static uint8_t OV7670_COM1_ADDRESS = 0x04;
50 
51 /**
52  * @brief COM2 RW register
53  * @details Common Control 2
54  * Bit[7:5]: Reserved
55  * Bit[4]: Soft sleep mode
56  * Bit[3:2]: Reserved
57  * Bit[1:0]: Output Drive Capability
58  * 00: 1x
59  * 01: 2x
60  * 10: 3x
61  * 11: 4x
62  * @return 0x09
63 */
64 static uint8_t OV7670_COM2_ADDRESS = 0x09;
65 
66 /**
67  * @brief COM3 RW register
68  * @details Common Control 3
69  * Bit[7]: Reserved
70  * Bit[6]: Output data MSB and LSB swap
71  * Bit[5]: Tri-state option for output clock (PCLK, HREF/HSYNC,
72  * VSYNC, and STROBE) at power-down period
73  * 0: Tri-state at this period
74  * 1: No tri-state at this period
75  * Bit[4]: Tri-state option for output data (D[7:0]) at power-down
76  * period
77  * 0: Tri-state at this period
78  * 1: No tri-state at this period
79  * Bit[3]: Scale enable
80  * 0: Disable
81  * 1: Enable - if set to a pre-defined format (see
82  * COM7[5:3]), then COM14[3] must be set to 1 for
83  * manual adjustment.
84  * Bit[2]: DCW enable
85  * 0: Disable
86  * 1: Enable - if set to a pre-defined format (see
87  * COM7[5:3]), then COM14[3] must be set to 1 for
88  * manual adjustment.
89  * Bit[1:0]: Reserved
90  * @return 0x0C
91 */
92 static uint8_t OV7670_COM3_ADDRESS = 0x0C;
93 
94 /**
95  * @brief COM4 RW register
96  * @details Common Control 4
97  * Bit[7:6]: Reserved
98  * Bit[5:4]: Average option (must be same value as COM17[7:6])
99  * 00: Full window
100  * 01: 1/2 window
101  * 10: 1/4 window
102  * 11: 1/4 window
103  * Bit[3:0]: Reserved
104  * @return 0x0D
105 */
106 static uint8_t OV7670_COM4_ADDRESS = 0x0D;
107 
108 /**
109  * @brief COM5 RW register
110  * @details Common Control 5
111  * Bit[7:0]: Reserved
112  * @return 0x0E
113 */
114 static uint8_t OV7670_COM5_ADDRESS = 0x0E;
115 
116 /**
117  * @brief COM6 RW register
118  * @details Common Control 6
119  * Bit[7]: Output of optical black row option
120  * 0: Disable HREF at optical black
121  * 1: Enable HREF at optical black
122  * Bit[6:2]: Reserved
123  * Bit[1]: Reset all timing when format changes
124  * 0: No reset
125  * 1: Resets timing
126  * Bit[0]: Reserved
127  * @return 0x0F
128 */
129 static uint8_t OV7670_COM6_ADDRESS = 0x0F;
130 
131 /**
132  * @brief COM7 RW register
133  * @details Common Control 7
134  * Bit[7]: SCCB register reset
135  * 0: No change
136  * 1: Resets all registers to default values
137  * Bit[6]: Reserved
138  * Bit[5]: Output format - CIF selection
139  * Bit[4]: Output format - QVGA selection
140  * Bit[3]: Output format - QCIF selection
141  * Bit[2]: Output format - RGB selection (see below)
142  * Bit[1]: Color bar
143  * 0: Disable
144  * 1: Enable
145  * Bit[0]: Output format - Raw RGB (see below)
146  * COM7[2] COM7[0]
147  * YUV 0 0
148  * RGB 1 0
149  * Raw Bayer RGB 0 1
150  * Processed Bayer RGB 1 1
151  * @return 0x12
152 */
153 static uint8_t OV7670_COM7_ADDRESS = 0x12;
154 
155 /**
156  * @brief COM8 RW register
157  * @details Common Control 8
158  * Bit[7]: Enable fast AGC/AEC algorithm
159  * Bit[6]: AEC - Step size limit
160  * 0: Step size is limited to vertical blank
161  * 1: Unlimited step size
162  * Bit[5]: Banding filter ON/OFF - In order to turn ON the banding
163  * filter, BD50ST (0x9D) or BD60ST (0x9E) must be set to a
164  * non-zero value.
165  * 0: ON
166  * 1: OFF
167  * Bit[4:3]: Reserved
168  * Bit[2]: AGC Enable
169  * Bit[1]: AWB Enable
170  * Bit[0]: AEC Enable
171  * @return 0x13
172 */
173 static uint8_t OV7670_COM8_ADDRESS = 0x13;
174 
175 /**
176  * @brief COM9 RW register
177  * @details Common Control 9
178  * Bit[7]: Reserved
179  * Bit[6:4]: Automatic Gain Ceiling - maximum AGC value
180  * 000: 2x
181  * 001: 4x
182  * 010: 8x
183  * 011: 16x
184  * 100: 32x
185  * 101: 64x
186  * 110: 128x
187  * 111: Not allowed
188  * Bit[3:1]: Reserved
189  * Bit[0]: Freeze AGC/AEC
190  * @return 0x14
191 */
192 static uint8_t OV7670_COM9_ADDRESS = 0x14;
193 
194 /**
195  * @brief COM10 RW register
196  * @details Common Control 10
197  * Bit[7]: Reserved
198  * Bit[6]: HREF changes to HSYNC
199  * Bit[5]: PCLK output option
200  * 0: Free running PCLK
201  * 1: PCLK does not toggle during horizontal blank
202  * Bit[4]: PCLK reverse
203  * Bit[3]: HREF reverse
204  * Bit[2]: VSYNC option
205  * 0: VSYNC changes on falling edge of PCLK
206  * 1: VSYNC changes on rising edge of PCLK
207  * Bit[1]: VSYNC negative
208  * Bit[0]: HSYNC negative
209  * @return 0x15
210 */
211 static uint8_t OV7670_COM10_ADDRESS = 0x15;
212 
213 /**
214  * @brief COM11 RW register
215  * @details Common Control 11
216  * Bit[7]: Night mode
217  * 0: Night mode disable
218  * 1: Night mode enable - The frame rate is reduced
219  * automatically while the minimum frame rate is limited
220  * by COM11[6:5]. Also, ADVFH and ADVFL will be
221  * automatically updated.
222  * Bit[6:5]: Minimum frame rate of night mode
223  * 00: Same as normal mode frame rate
224  * 01: 1/2 of normal mode frame rate
225  * 10: 1/4 of normal mode frame rate
226  * 11: 1/8 of normal mode frame rate
227  * Bit[4]: D56_Auto
228  * 0: Disable 50/60 Hz auto detection
229  * 1: Enable 50/60 Hz auto detection
230  * Bit[3]: Banding filter value select (effective only when
231  * COM11[4] = 0)
232  * 0: Select BD60ST[7:0] (0x9E) as Banding Filter Value
233  * 1: Select BD50ST[7:0] (0x9D) as Banding Filter Value
234  * Bit[2]: Reserved
235  * Bit[1]: Exposure timing can be less than limit of banding filter
236  * when light is too strong
237  * Bit[0]: Reserved
238  * @return 0x3B
239 */
240 static uint8_t OV7670_COM11_ADDRESS = 0x3B;
241 
242 /**
243  * @brief COM12 RW register
244  * @details Common Control 12
245  * Bit[7]: HREF option
246  * 0: No HREF when VSYNC is low
247  * 1: Always has HREF
248  * Bit[6:0]: Reserved
249  * @return 0x3C
250 */
251 static uint8_t OV7670_COM12_ADDRESS = 0x3C;
252 
253 /**
254  * @brief COM13 RW register
255  * @details Common Control 13
256  * Bit[7]: Gamma enable
257  * Bit[6]: UV saturation level - UV auto adjustment. Result is saved
258  * in register SATCTR[3:0] (0xC9)
259  * Bit[5:2]: Reserved
260  * Bit[1]: UV swap (use with register TSLB[3] (0x3A))
261  * TSLB[3], COM13[1]:
262  * 00: Y U Y V
263  * 01: Y V Y U
264  * 10: U Y V Y
265  * 11: V Y U Y
266  * Bit[0]: Reserved
267  * @return 0x3D
268 */
269 static uint8_t OV7670_COM13_ADDRESS = 0x3D;
270 
271 /**
272  * @brief COM14 RW register
273  * @details Common Control 14
274  * Bit[7:5]: Reserved
275  * Bit[4]: DCW and scaling PCLK enable
276  * 0: Normal PCLK
277  * 1: DCW and scaling PCLK, controlled by register
278  * COM14[2:0] and SCALING_PCLK_DIV[3:0] (0x73))
279  * Bit[3]: Manual scaling enable for pre-defined resolution modes
280  * such as CIF, QCIF, and QVGA
281  * 0: Scaling parameter cannot be adjusted manually
282  * 1: Scaling parameter can be adjusted manually
283  * Bit[2:0]: PCLK divider (only when COM14[4] = 1)
284  * 000: Divided by 1
285  * 001: Divided by 2
286  * 010: Divided by 4
287  * 011: Divided by 8
288  * 100: Divided by 16
289  * 101~111: Not allowed
290  * @return 0x3E
291 */
292 static uint8_t OV7670_COM14_ADDRESS = 0x3E;
293 
294 /**
295  * @brief COM15 RW register
296  * @details Common Control 15
297  * Bit[7:6]: Data format - output full range enable
298  * 0x: Output range: [10] to [F0]
299  * 10: Output range: [01] to [FE]
300  * 11: Output range: [00] to [FF]
301  * Bit[5:4]: RGB 555/565 option (must set COM7[2] = 1 and
302  * COM7[0] = 0)
303  * x0: Normal RGB output
304  * 01: RGB 565
305  * 11: RGB 555
306  * Bit[3:0]: Reserved
307  * @return 0x40
308 */
309 static uint8_t OV7670_COM15_ADDRESS = 0x40;
310 
311 /**
312  * @brief COM16 RW register
313  * @details Common Control 16
314  * Bit[7:6]: Reserved
315  * Bit[5]: Enable edge enhancement auto-adjustment for YUV
316  * output (result is saved in register EDGE[4:0] (0x3F) and
317  * range is controlled by registers REG75[4:0] (0x75) and
318  * REG76[4:0] (0x76))
319  * 0: Disable
320  * 1: Enable
321  * Bit[4]: De-noise auto-adjustment (result is saved in register
322  * DNSTH (0x4C) and range is controlled by register
323  * REG77[7:0] (0x77))
324  * 0: Disable
325  * 1: Enable
326  * Bit[3]: AWB gain enable
327  * Bit[2]: Reserved
328  * Bit[1]: Color matrix coefficient double option
329  * 0: Original matrix
330  * 1: Double of original matrix
331  * Bit[0]: Reserved
332  * @return 0x41
333 */
334 static uint8_t OV7670_COM16_ADDRESS = 0x41;
335 
336 /**
337  * @brief COM17 RW register
338  * @details Common Control 17
339  * Bit[7:6]: AEC window must be the same value as COM4[5:4])
340  * 00: Normal
341  * 01: 1/2
342  * 10: 1/4
343  * 11: 1/4
344  * Bit[5:4]: Reserved
345  * Bit[3]: DSP color bar enable
346  * 0: Disable
347  * 1: Enable
348  * Bit[2:0]: Reserved
349  * @return 0x42
350 */
351 static uint8_t OV7670_COM17_ADDRESS = 0x42;
352 
353 /**
354  * @brief Gain control setting
355  * @details AGC – Gain control gain setting
356  * Bit[7:0]: AGC[7:0] (see VREF[7:6] (0x03) for AGC[9:8])
357  * • Range: [00] to [FF]
358  * @return 0x00
359 */
360 static uint8_t OV7670_GAIN_ADDRESS = 0x00;
361 
362 /**
363  * @brief Blue channel gain settings
364  * @details AWB – Blue channel gain setting
365  * • Range: [00] to [FF]
366  * @return 0x01
367 */
368 static uint8_t OV7670_BLUE_GAIN_ADDRESS = 0x01;
369 
370 /**
371  * @brief Red channel gain settings
372  * @details AWB – Red channel gain setting
373  * • Range: [00] to [FF]
374  * @return 0x02
375 */
376 static uint8_t OV7670_RED_GAIN_ADDRESS = 0x02;
377 
378 /**
379  * @brief Vertical Frame Control (VREF) register
380  * @details Vertical Frame Control
381  * Bit[7:6]: AGC[9:8] (see GAIN[7:0] (0x00) for AGC[7:0])
382  * Bit[5:4]: Reserved
383  * Bit[3:2]: VREF end low 2 bits (high 8 bits at VSTOP[7:0]
384  * Bit[1:0]: VREF start low 2 bits (high 8 bits at VSTRT[7:0]
385  * @return 0x03
386 */
387 static uint8_t OV7670_VREF_ADDRESS = 0x03;
388 
389 /**
390  * @brief U/B Average Level register
391  * @details U/B Average Level
392  * Automatically updated based on chip output format
393  * @return 0x05
394 */
395 static uint8_t OV7670_BAVE_ADDRESS = 0x05;
396 
397 /**
398  * @brief Y/Gb Average Level register
399  * @details Y/Gb Average Level
400  * Automatically updated based on chip output format
401  * @return 0x06
402 */
403 static uint8_t OV7670_GBAVE_ADDRESS = 0x06;
404 
405 /**
406  * @brief Exposure Value - AEC MSB 5 bits
407  * @details Exposure Value - AEC MSB 5 bits
408  * Bit[7:6]: Reserved
409  * Bit[5:0]: AEC[15:10] (see registers AECH for AEC[9:2] and COM1
410  * for AEC[1:0])
411  * @return 0x07
412 */
413 static uint8_t OV7670_AECHH_ADDRESS = 0x07;
414 
415 /**
416  * @brief V/R Average Level
417  * @details V/R Average Level
418  * Automatically updated based on chip output format
419  * @return 0x08
420 */
421 static uint8_t OV7670_RAVE_ADDRESS = 0x08;
422 
423 /**
424  * @brief Product ID Number MSB (Read only)
425  * @return 0x0A
426 */
427 static uint8_t OV7670_PID_ADDRESS = 0x0A;
428 
429 /**
430  * @brief Product ID Number LSB (Read only)
431  * @return 0x0A
432 */
433 static uint8_t OV7670_VER_ADDRESS = 0x0B;
434 
435 /**
436  * @brief Exposure settings register
437  * @details Exposure Value
438  * Bit[7:0]: AEC[9:2] (see registers AECHH for AEC[15:10] and
439  * COM1 for AEC[1:0])
440  * @return 0x10
441 */
442 static uint8_t OV7670_AECH_ADDRESS = 0x10;
443 
444 /**
445  * @brief CLKRC RW register
446  * @details Internal Clock
447  * Bit[7]: Reserved
448  * Bit[6]: Use external clock directly (no clock pre-scale available)
449  * Bit[5:0]: Internal clock pre-scalar
450  * F(internal clock) = F(input clock)/(Bit[5:0]+1)
451  * • Range: [0 0000] to [1 1111]
452  * @return 0x11
453 */
454 static uint8_t OV7670_CLKRC_ADDRESS = 0x11;
455 
456 /**
457  * @brief Reserved register (RSVD)
458  * @return 0x16
459 */
460 static uint8_t OV7670_RSVD_16_ADDRESS = 0x16;
461 
462 /**
463  * @brief Horizontal frame start high
464  * @details Output Format - Horizontal Frame (HREF column) start
465  * high 8-bit (low 3 bits are at HREF[2:0])
466  * @return 0x17
467 */
468 static uint8_t OV7670_HSTART_ADDRESS = 0x17;
469 
470 /**
471  * @brief Horizontal frame end high
472  * @details Output Format - Horizontal Frame (HREF column) end
473  * high 8-bit (low 3 bits are at HREF[5:3])
474  * @return 0x18
475 */
476 static uint8_t OV7670_HSTOP_ADDRESS = 0x18;
477 
478 /**
479  * @brief Vertical frame start register
480  * @details Output Format - Vertical Frame (row) start high 8-bit (
481  * low 2 bits are at VREF[1:0])
482  * @return 0x19
483 */
484 static uint8_t OV7670_VSTART_ADDRESS = 0x19;
485 
486 /**
487  * @brief Vertical frame stop register
488  * @details Output Format - Vertical Frame (row) end high 8-bit (
489  * low 2 bits are at VREF[3:2])
490  * @return 0x1A
491 */
492 static uint8_t OV7670_VSTOP_ADDRESS = 0x1A;
493 
494 /**
495  * @brief Pixel delay shift register
496  * @details Data Format - Pixel Delay Select (delays timing of the D[7:0] data
497  * relative to HREF in pixel units)
498  * • Range: [00] (no delay) to [FF] (256 pixel delay which accounts for
499  * whole array)
500  * @return 0x1B
501 */
502 static uint8_t OV7670_PSHIFT_ADDRESS = 0x1B;
503 
504 /**
505  * @brief Manufacturer ID Byte (High) (Read only = 0x7F)
506  * @return 0x1C
507 */
508 static uint8_t OV7670_MIDH_ADDRESS = 0x1C;
509 
510 /**
511  * @brief Manufacturer ID Byte (Low) (Read only = 0xA2)
512  * @return 0x1D
513 */
514 static uint8_t OV7670_MIDL_ADDRESS = 0x1D;
515 
516 /**
517  * @brief Mirror/VFlip image register
518  * @details Mirror/VFlip Enable
519  * Bit[7:6]: Reserved
520  * Bit[5]: Mirror
521  * 0: Normal image
522  * 1: Mirror image
523  * Bit[4]: VFlip enable
524  * 0: Normal image
525  * 1 : Vertically flip image
526  * Bit[3]: Reserved
527  * Bit[2]: Black sun enable
528  * Bit[1:0]: Reserved
529  * @return 0x1E
530 */
531 static uint8_t OV7670_MVFP_ADDRESS = 0x1E;
532 
533 /**
534  * @brief LAEC register (Reserved)
535  * @return 0x1F
536 */
537 static uint8_t OV7670_LAEC_ADDRESS = 0x1F;
538 
539 /**
540  * @brief ADC control register 0
541  * @details ADC Control
542  * Bit[7:4]: Reserved
543  * Bit[3]: ADC range adjustment
544  * 0: 1x range
545  * 1: 1.5x range
546  * Bit[2:0]: ADC reference adjustment
547  * 000: 0.8x
548  * 100: 1x
549  * 111: 1.2x
550  * @return 0x20
551 */
552 static uint8_t OV7670_ADCCTR0_ADDRESS = 0x20;
553 
554 /**
555  * @brief ADC control register 1 (Reserved)
556  * @return 0x21
557 */
558 static uint8_t OV7670_ADCCTR1_ADDRESS = 0x21;
559 
560 /**
561  * @brief ADC control register 2 (Reserved)
562  * @return 0x22
563 */
564 static uint8_t OV7670_ADCCTR2_ADDRESS = 0x22;
565 
566 /**
567  * @brief ADC control register 3 (Reserved)
568  * @return 0x23
569 */
570 static uint8_t OV7670_ADCCTR3_ADDRESS = 0x23;
571 
572 /**
573  * @brief AGC/AEC - Stable Operating Region (Upper Limit)
574  * @return 0x24
575 */
576 static uint8_t OV7670_AEW_ADDRESS = 0x24;
577 
578 /**
579  * @brief AGC/AEC - Stable Operating Region (Lower Limit)
580  * @return 0x25
581 */
582 static uint8_t OV7670_AEB_ADDRESS = 0x25;
583 
584 /**
585  * @brief AGC/AEC Fast Mode Operating Region
586  * @details AGC/AEC Fast Mode Operating Region
587  * Bit[7:4]: High nibble of upper limit of fast mode control zone
588  * Bit[3:0]: High nibble of lower limit of fast mode control zone
589  * @return 0x26
590 */
591 static uint8_t OV7670_VPT_ADDRESS = 0x26;
592 
593 /**
594  * @brief B channel signal bias
595  * @details B Channel Signal Output Bias (effective only when COM6[3] = 1)
596  * Bit[7]: Bias adjustment sign
597  * 0: Add bias
598  * 1: Subtract bias
599  * Bit[6:0]: Bias value of 10-bit range
600  * @return 0x27
601 */
602 static uint8_t OV7670_BBIAS_ADDRESS = 0x27;
603 
604 /**
605  * @brief Gb channel signal bias
606  * @details B Channel Signal Output Bias (effective only when COM6[3] = 1)
607  * Bit[7]: Bias adjustment sign
608  * 0: Add bias
609  * 1: Subtract bias
610  * Bit[6:0]: Bias value of 10-bit range
611  * @return 0x28
612 */
613 static uint8_t OV7670_GBBIAS_ADDRESS = 0x28;
614 
615 /**
616  * @brief RSVD (Reserved)
617  * @return 0x29
618 */
619 static uint8_t OV7670_RSVD_29_ADDRESS = 0x29;
620 
621 /**
622  * @brief Dummy Pixel Insert MSB
623  * @details Dummy Pixel Insert MSB
624  * Bit[7:4]: 4 MSB for dummy pixel insert in horizontal direction
625  * Bit[3:2]: HSYNC falling edge delay 2 MSB
626  * Bit[1:0]: HSYNC rising edge delay 2 MSB
627  * @return 0x2A
628 */
629 static uint8_t OV7670_EXHCH_ADDRESS = 0x2A;
630 
631 /**
632  * @brief Dummy Pixel Insert LSB
633  * @details 8 LSB for dummy pixel insert in horizontal direction
634  * @return 0x2B
635 */
636 static uint8_t OV7670_EXHCL_ADDRESS = 0x2B;
637 
638 /**
639  * @brief R Channel Signal Output Bias
640  * @details R Channel Signal Output Bias (effective only when COM6[3] = 1)
641  * Bit[7]: Bias adjustment sign
642  * 0: Add bias
643  * 1: Subtract bias
644  * Bit[6:0]: Bias value of 10-bit range
645 */
646 static uint8_t OV7670_RBIAS_ADDRESS = 0x2C;
647 
648 /**
649  * @brief LSB of insert dummy rows in vertical direction (1 bit equals 1 row)
650  * @return 0x2D
651 */
652 static uint8_t OV7670_ADVFL_ADDRESS = 0x2D;
653 
654 /**
655  * @brief MSB of insert dummy rows in vertical direction
656  * @return 0x2E
657 */
658 static uint8_t OV7670_ADVFH_ADDRESS = 0x2E;
659 
660 /**
661  * @brief Y/G Channel Average Value
662  * @return 0x2F
663 */
664 static uint8_t OV7670_YAVE_ADDRESS = 0x2F;
665 
666 /**
667  * @brief HSYNC Rising Edge Delay (low 8 bits)
668  * @return 0x30
669 */
670 static uint8_t OV7670_HSYST_ADDRESS = 0x30;
671 
672 /**
673  * @brief HSYNC Falling Edge Delay (low 8 bits)
674  * @return 0x31
675 */
676 static uint8_t OV7670_HSYSN_ADDRESS = 0x31;
677 
678 /**
679  * @brief HREF Control register
680  * @details HREF Control
681  * Bit[7:6]: HREF edge offset to data output
682  * Bit[5:3]: HREF end 3 LSB (high 8 MSB at register HSTOP)
683  * Bit[2:0]: HREF start 3 LSB (high 8 MSB at register HSTART)
684  * @return 0x32
685 */
686 static uint8_t OV7670_HREF_ADDRESS = 0x32;
687 
688 /**
689  * @brief Array Current Control (Reserved)
690  * @return 0x33
691 */
692 static uint8_t OV7670_CHLF_ADDRESS = 0x33;
693 
694 
695 /**
696  * @brief Array Reference Control (Reserved)
697  * @return 0x34
698 */
699 static uint8_t OV7670_ARBLM_ADDRESS = 0x34;
700 
701 /**
702  * @brief Reserved 2
703  * @return 0x35-0x36
704 */
705 static uint8_t OV7670_RSVD_35_ADDRESS = 0x35;
706 static uint8_t OV7670_RSVD_36_ADDRESS = 0x36;
707 
708 /**
709  * @brief ADC control (Reserved)
710  * @return 0x37
711 */
712 static uint8_t OV7670_ADC_ADDRESS = 0x37;
713 
714 /**
715  * @brief ADC and Analog Common Mode Control (Reserved)
716  * @return 0x38
717 */
718 static uint8_t OV7670_ACOM_ADDRESS = 0x38;
719 
720 /**
721  * @brief ADC Offset Control
722  * @return 0x39
723 */
724 static uint8_t OV7670_OFON_ADDRESS = 0x39;
725 
726 /**
727  * @brief Line Buffer Test options register
728  * @details Line Buffer Test Option
729  * Bit[7:6]: Reserved
730  * Bit[5]: Negative image enable
731  * 0: Normal image
732  * 1: Negative image
733  * Bit[4]: UV output value
734  * 0: Use normal UV output
735  * 1: Use fixed UV value set in registers MANU and MANV
736  * as UV output instead of chip output
737  * Bit[3]: Output sequence (use with register COM13[1] (0x3D))
738  * TSLB[3], COM13[1]:
739  * 00: Y U Y V
740  * 01: Y V Y U
741  * 10: U Y V Y
742  * 11: V Y U Y
743  * Bit[2:1]: Reserved
744  * Bit[0]: Auto output window
745  * 0: Sensor DOES NOT automatically set window after
746  * resolution change. The companion backend
747  * processor can adjust the output window immediately
748  * after changing the resolution
749  *
750  * 1: Sensor automatically sets output window when
751  * resolution changes. After resolution changes, the
752  * companion backend processor must adjust the
753  * output window after the next VSYNC pulse.
754  * @return 0x3A
755 */
756 static uint8_t OV7670_TSLB_ADDRESS = 0x3A;
757 
758 /**
759  * @brief Edge Enhancement Adjustment
760  * @details Edge Enhancement Adjustment
761  * Bit[7:5]: Reserved
762  * Bit[4:0]: Edge enhancement factor
763  * @return 0x3F
764 */
765 static uint8_t OV7670_EDGE_ADDRESS = 0x3F;
766 
767 /**
768  * @brief AWB Control 1
769  * @return 0x43
770 */
771 static uint8_t OV7670_AWBC1_ADDRESS = 0x43;
772 
773 /**
774  * @brief AWB Control 2
775  * @return 0x44
776 */
777 static uint8_t OV7670_AWBC2_ADDRESS = 0x44;
778 
779 /**
780  * @brief AWB Control 3
781  * @return 0x45
782 */
783 static uint8_t OV7670_AWBC3_ADDRESS = 0x45;
784 
785 /**
786  * @brief AWB Control 4
787  * @return 0x46
788 */
789 static uint8_t OV7670_AWBC4_ADDRESS = 0x46;
790 
791 /**
792  * @brief AWB Control 5
793  * @return 0x47
794 */
795 static uint8_t OV7670_AWBC5_ADDRESS = 0x47;
796 
797 /**
798  * @brief AWB Control 6
799  * @return 0x48
800 */
801 static uint8_t OV7670_AWBC6_ADDRESS = 0x48;
802 
803 /**
804  * @brief Reserved register 0x49-0x4A
805  * @return 0x49-0x4A
806 */
807 static uint8_t OV7670_RSVD_49_ADDRESS = 0x49;
808 static uint8_t OV7670_RSVD_4A_ADDRESS = 0x4A;
809 
810 /**
811  * @brief Register 4B
812  * @details Register 4B
813  * Bit[7:1]: Reserved
814  * Bit[0]: UV average enable
815  * @return 0x4B
816 */
817 static uint8_t OV7670_REG4B_ADDRESS = 0x4B;
818 
819 /**
820  * @brief De-noise strength
821  * @return 0x4C
822 */
823 static uint8_t OV7670_DNSTH_ADDRESS = 0x4C;
824 
825 /**
826  * @brief Reserved register 0x4D-0x4E
827  * @return 0x4D
828 */
829 static uint8_t OV7670_RSVD_4D_ADDRESS = 0x4D;
830 static uint8_t OV7670_RSVD_4E_ADDRESS = 0x4E;
831 
832 /**
833  * @brief Matrix Coefficient 1
834  * @return 0x4F
835 */
836 static uint8_t OV7670_MTX1_ADDRESS = 0x4F;
837 
838 /**
839  * @brief Matrix Coefficient 2
840  * @return 0x50
841 */
842 static uint8_t OV7670_MTX2_ADDRESS = 0x50;
843 
844 /**
845  * @brief Matrix Coefficient 3
846  * @return 0x51
847 */
848 static uint8_t OV7670_MTX3_ADDRESS = 0x51;
849 
850 /**
851  * @brief Matrix Coefficient 4
852  * @return 0x52
853 */
854 static uint8_t OV7670_MTX4_ADDRESS = 0x52;
855 
856 /**
857  * @brief Matrix Coefficient 5
858  * @return 0x53
859 */
860 static uint8_t OV7670_MTX5_ADDRESS = 0x53;
861 
862 /**
863  * @brief Matrix Coefficient 6
864  * @return 0x54
865 */
866 static uint8_t OV7670_MTX6_ADDRESS = 0x54;
867 
868 /**
869  * @brief Brightness Control
870  * @return 0x55
871 */
872 static uint8_t OV7670_BRIGHT_ADDRESS = 0x55;
873 
874 /**
875  * @brief Contrast Control
876  * @return 0x56
877 */
878 static uint8_t OV7670_CONTRAS_ADDRESS = 0x56;
879 
880 /**
881  * @brief Contrast Center
882  * @return 0x57
883 */
884 static uint8_t OV7670_CONTRAS_CENTER_ADDRESS = 0x57;
885 
886 /**
887  * @brief Matrix Coefficient Sign register
888  * @details Matrix Coefficient Sign for coefficient 5 to 0
889  * Bit[7]: Auto contrast center enable
890  * 0: Disable, center is set by register
891  * CONTRAS-CENTER (0x57)
892  * 1: Enable, register CONTRAS-CENTER is updated
893  * automatically
894  * Bit[6]: Reserved
895  * Bit[5:0]: Matrix coefficient sign
896  * 0: Plus
897  * 1: Minus
898  * @return 0x58
899 */
900 static uint8_t OV7670_MTXS_ADDRESS = 0x58;
901 
902 /**
903  * @brief RSVD (Reserved)
904  * @return 0x59-0x61
905 */
906 static uint8_t OV7670_RSVD_59_ADDRESS = 0x59;
907 static uint8_t OV7670_RSVD_5A_ADDRESS = 0x5A;
908 static uint8_t OV7670_RSVD_5B_ADDRESS = 0x5B;
909 static uint8_t OV7670_RSVD_5C_ADDRESS = 0x5C;
910 static uint8_t OV7670_RSVD_5D_ADDRESS = 0x5D;
911 static uint8_t OV7670_RSVD_5E_ADDRESS = 0x5E;
912 static uint8_t OV7670_RSVD_5F_ADDRESS = 0x5F;
913 static uint8_t OV7670_RSVD_60_ADDRESS = 0x60;
914 static uint8_t OV7670_RSVD_61_ADDRESS = 0x61;
915 
916 /**
917  * @brief Lens Correction Option 1
918  * @details X Coordinate of Lens Correction Center
919  * Relative to Array Center
920  * @return 0x62
921 */
922 static uint8_t OV7670_LCC1_ADDRESS = 0x62;
923 
924 /**
925  * @brief Lens Correction Option 2
926  * @details Y Coordinate of Lens Correction Center
927  * Relative to Array Center
928  * @return 0x63
929 */
930 static uint8_t OV7670_LCC2_ADDRESS = 0x63;
931 
932 /**
933  * @brief Lens Correction Option 3
934  * @details G Channel Compensation Coefficient when LCC5[2] (0x66) is 1
935  * R, G, and B Channel Compensation Coefficient when LCC5[2] (0x66) is
936  * 0
937  * @return 0x64
938 */
939 static uint8_t OV7670_LCC3_ADDRESS = 0x64;
940 
941 /**
942  * @brief Lens Correction Option 4
943  * @details Radius of the circular section where no
944  compensation applies
945  * @return 0x65
946 */
947 static uint8_t OV7670_LCC4_ADDRESS = 0x65;
948 
949 /**
950  * @brief Lens Correction Control
951  * @details Lens Correction Control
952  * Bit[7:3]: Reserved
953  * Bit[2]: Lens correction control select
954  * 0: R, G, and B channel compensation coefficient is set
955  * by register LCC3
956  * 1: R, G, and B channel compensation coefficient is set
957  * by registers LCC6, LCC3, and LCC7, respectively
958  * Bit[1]: Reserved
959  * Bit[0]: Lens correction enable
960  * 0: Disable
961  * 1: Enable
962  * @return 0x66
963 */
964 static uint8_t OV7670_LCC5_ADDRESS = 0x66;
965 
966 /**
967  * @brief Manual U Value (effective only when register TSLB[4] is high)
968  * @return 0x67
969 */
970 static uint8_t OV7670_MANU_ADDRESS = 0x67;
971 
972 /**
973  * @brief Manual V Value (effective only when register TSLB[4] is high)
974  * @return 0x68
975 */
976 static uint8_t OV7670_MANV_ADDRESS = 0x68;
977 
978 /**
979  * @brief Fixed Gain Control
980  * @details Fix Gain Control
981  * Bit[7:6]: Fix gain for Gr channel
982  * 00: 1x
983  * 01: 1.25x
984  * 10: 1.5x
985  * 11: 1.75x
986  * Bit[5:4]: Fix gain for Gb channel
987  * 00: 1x
988  * 01: 1.25x
989  * 10: 1.5x
990  * 11: 1.75x
991  * Bit[3:2]: Fix gain for R channel
992  * 00: 1x
993  * 01: 1.25x
994  * 10: 1.5x
995  * 11: 1.75x
996  * Bit[1:0]: Fix gain for B channel
997  * 00: 1x
998  * 01: 1.25x
999  * 10: 1.5x
1000  * 11: 1.75x
1001  * @return 0x69
1002 */
1003 static uint8_t OV7670_GFIX_ADDRESS = 0x69;
1004 
1005 /**
1006  * @brief G Channel AWB Gain
1007  * @return 0x6A
1008 */
1009 static uint8_t OV7670_GGAIN_ADDRESS = 0x6A;
1010 
1011 /**
1012  * @brief DBLV register
1013  * @details DBLV register
1014  * Bit[7:6]: PLL control
1015  * 00: Bypass PLL
1016  * 01: Input clock x4
1017  * 10: Input clock x6
1018  * 11: Input clock x8
1019  * Bit[5]: Reserved
1020  * Bit[4]: Regulator control
1021  * 0: Enable internal regulator
1022  * 1: Bypass internal regulator
1023  * Bit[3:0]: Clock divider control for DSP scale control (valid only
1024  * when COM14[3] = 1)
1025  * @return 0x6B
1026 */
1027 static uint8_t OV7670_DBLV_ADDRESS = 0x6B;
1028 
1029 /**
1030  * @brief AWB Control 3
1031  * return 0x6C
1032 */
1033 static uint8_t OV7670_AWBCTR3_ADDRESS = 0x6C;
1034 
1035 /**
1036  * @brief AWB Control 2
1037  * return 0x6D
1038 */
1039 static uint8_t OV7670_AWBCTR2_ADDRESS = 0x6D;
1040 
1041 /**
1042  * @brief AWB Control 1
1043  * return 0x6E
1044 */
1045 static uint8_t OV7670_AWBCTR1_ADDRESS = 0x6E;
1046 
1047 /**
1048  * @brief AWB Control 0
1049  * return 0x6F
1050 */
1051 static uint8_t OV7670_AWBCTR0_ADDRESS = 0x6F;
1052 
1053 /**
1054  * @brief SCALING_XSC register
1055  * @details SCALING_XSC register
1056  * Bit[7]: Test_pattern[0] - works with test_pattern[1] test_pattern
1057  * (SCALING_XSC[7], SCALING_YSC[7]):
1058  * 00: No test pattern output
1059  * 01: Shifting "1"
1060  * 10: 8-bar color bar
1061  * 11: Fade to gray color bar
1062  * Bit[6:0]: Horizontal scale factor
1063  * @return 0x70
1064 */
1065 static uint8_t OV7670_SCALING_XSC_ADDRESS = 0x70;
1066 
1067 /**
1068  * @brief SCALING_YSC register
1069  * @details SCALING_YSC register
1070  * Bit[7]: Test_pattern[1] - works with test_pattern[0] test_pattern
1071  * (SCALING_XSC[7], SCALING_YSC[7]):
1072  * 00: No test pattern output
1073  * 01: Shifting "1"
1074  * 10: 8-bar color bar
1075  * 11: Fade to gray color bar
1076  * Bit[6:0]: Vertical scale factor
1077  * @return 0x71
1078 */
1079 static uint8_t OV7670_SCALING_YSC_ADDRESS = 0x71;
1080 
1081 /**
1082  * @brief DCW Control register
1083  * @details DCW Control
1084  * Bit[7]: Vertical average calculation option
1085  * 0: Vertical truncation
1086  * 1: Vertical rounding
1087  * Bit[6]: Vertical down sampling option
1088  * 0: Vertical truncation
1089  * 1: Vertical rounding
1090  * Bit[5:4]: Vertical down sampling rate
1091  * 00: No vertical down sampling
1092  * 01: Vertical down sample by 2
1093  * 10: Vertical down sample by 4
1094  * 11: Vertical down sample by 8
1095  * Bit[3]: Horizontal average calculation option
1096  * 0: Horizontal truncation
1097  * 1: Horizontal rounding
1098  * Bit[2]: Horizontal down sampling option
1099  * 0: Horizontal truncation
1100  * 1: Horizontal rounding
1101  * Bit[1:0]: Horizontal down sampling rate
1102  * 00: No horizontal down sampling
1103  * 01: Horizontal down sample by 2
1104  * 10: Horizontal down sample by 4
1105  * 11: Horizontal down sample by 8
1106  * @return 0x72
1107 */
1108 static uint8_t OV7670_SCALING_DCWCTR_ADDRESS = 0x72;
1109 
1110 /**
1111  * @brief SCALING_PCLK_DIV register
1112  * @details SCALING_PCLK_DIV
1113  * Bit[7:4]: Reserved
1114  * Bit[3]: Bypass clock divider for DSP scale control
1115  * 0: Enable clock divider
1116  * 1: Bypass clock divider
1117  * Bit[2:0]: Clock divider control for DSP scale control (valid only
1118  * when COM14[3] = 1). Should change with COM14[2:0].
1119  * 000: Divided by 1
1120  * 001: Divided by 2
1121  * 010: Divided by 4
1122  * 011: Divided by 8
1123  * 100: Divided by 16
1124  * 101~111: Not allowed
1125  * @return 0x73
1126 */
1127 static uint8_t OV7670_SCALING_PCLK_DIV_ADDRESS = 0x73;
1128 
1129 /**
1130  * @brief Register 74
1131  * @details REG74
1132  * Bit[7:5]: Reserved
1133  * Bit[4]: Digital gain control select
1134  * 0: Digital gain control by VREF[7:6]
1135  * 1: Digital gain control by REG74[1:0]
1136  * Bit[3:2]: Reserved
1137  * Bit[1:0]: Digital gain manual control
1138  * 00: Bypass
1139  * 01: 1x
1140  * 10: 2x
1141  * 11: 4x
1142  * @return 0x74
1143 */
1144 static uint8_t OV7670_REG74_ADDRESS = 0x74;
1145 
1146 /**
1147  * @brief Register 75
1148  * @details REG75
1149  * Bit[7:5]: Reserved
1150  * Bit[4:0]: Edge enhancement lower limit
1151  * @return 0x75
1152 */
1153 static uint8_t OV7670_REG75_ADDRESS = 0x75;
1154 
1155 /**
1156  * @brief Register 76
1157  * @details REG76
1158  * Bit[7]: Reserved
1159  * Bit[6]: White pixel correction enable
1160  * 0: Disable
1161  * 1: Enable
1162  * Bit[5]: Black pixel correction enable
1163  * 0: Disable
1164  * 1: Enable
1165  * Bit[4:0]: Edge enhancement higher limit
1166  * @return 0x76
1167 */
1168 static uint8_t OV7670_REG76_ADDRESS = 0x76;
1169 
1170 /**
1171  * @brief Register 77
1172  * @details REG77
1173  * Bit[7:0]: Offset, de-noise range control
1174  * @return 0x77
1175 */
1176 static uint8_t OV7670_REG77_ADDRESS = 0x77;
1177 
1178 /**
1179  * @brief RSVD (Reserved)
1180  * @return 0x78-0x79
1181 */
1182 static uint8_t OV7670_RSVD_78_ADDRESS = 0x78;
1183 static uint8_t OV7670_RSVD_79_ADDRESS = 0x79;
1184 
1185 /**
1186  * @brief SLOP register
1187  * @details Gamma Curve Highest Segment Slop - calculated as follows:
1188  * SLOP[7:0] = (0x100 - GAM15[7:0]) x 4/3
1189  * @return 0x7A
1190 */
1191 static uint8_t OV7670_SLOP_ADDRESS = 0x7A;
1192 
1193 /**
1194  * @brief Gamma Curve register 1
1195  * @details Gamma Curve 1st Segment Input End Point 0x04 Output Value
1196  * @return 0x7B
1197 */
1198 static uint8_t OV7670_GAM1_ADDRESS = 0x7B;
1199 
1200 /**
1201  * @brief Gamma Curve register 2
1202  * @details Gamma Curve 2nd Segment Input End Point 0x08 Output Value
1203  * @return 0x7C
1204 */
1205 static uint8_t OV7670_GAM2_ADDRESS = 0x7C;
1206 
1207 /**
1208  * @brief Gamma Curve register 3
1209  * @details Gamma Curve 3rd Segment Input End Point 0x10 Output Value
1210  * @return 0x7D
1211 */
1212 static uint8_t OV7670_GAM3_ADDRESS = 0x7D;
1213 
1214 /**
1215  * @brief Gamma Curve register 4
1216  * @details Gamma Curve 4th Segment Input End Point 0x20 Output Value
1217  * @return 0x7E
1218 */
1219 static uint8_t OV7670_GAM4_ADDRESS = 0x7E;
1220 
1221 /**
1222  * @brief Gamma Curve register 5
1223  * @details Gamma Curve 5th Segment Input End Point 0x28 Output Value
1224  * @return 0x7F
1225 */
1226 static uint8_t OV7670_GAM5_ADDRESS = 0x7F;
1227 
1228 /**
1229  * @brief Gamma Curve register 6
1230  * @details Gamma Curve 6th Segment Input End Point 0x30 Output Value
1231  * @return 0x80
1232 */
1233 static uint8_t OV7670_GAM6_ADDRESS = 0x80;
1234 
1235 /**
1236  * @brief Gamma Curve register 7
1237  * @details Gamma Curve 7th Segment Input End Point 0x38 Output Value
1238  * @return 0x81
1239 */
1240 static uint8_t OV7670_GAM7_ADDRESS = 0x81;
1241 
1242 /**
1243  * @brief Gamma Curve register 8
1244  * @details Gamma Curve 8th Segment Input End Point 0x40 Output Value
1245  * @return 0x82
1246 */
1247 static uint8_t OV7670_GAM8_ADDRESS = 0x82;
1248 
1249 /**
1250  * @brief Gamma Curve register 9
1251  * @details Gamma Curve 9th Segment Input End Point 0x48 Output Value
1252  * @return 0x83
1253 */
1254 static uint8_t OV7670_GAM9_ADDRESS = 0x83;
1255 
1256 /**
1257  * @brief Gamma Curve register 10
1258  * @details Gamma Curve 10th Segment Input End Point 0x50 Output Value
1259  * @return 0x84
1260 */
1261 static uint8_t OV7670_GAM10_ADDRESS = 0x84;
1262 
1263 /**
1264  * @brief Gamma Curve register 11
1265  * @details Gamma Curve 11th Segment Input End Point 0x60 Output Value
1266  * @return 0x85
1267 */
1268 static uint8_t OV7670_GAM11_ADDRESS = 0x85;
1269 
1270 /**
1271  * @brief Gamma Curve register 12
1272  * @details Gamma Curve 12th Segment Input End Point 0x70 Output Value
1273  * @return 0x86
1274 */
1275 static uint8_t OV7670_GAM12_ADDRESS = 0x86;
1276 
1277 /**
1278  * @brief Gamma Curve register 13
1279  * @details Gamma Curve 13th Segment Input End Point 0x90 Output Value
1280  * @return 0x87
1281 */
1282 static uint8_t OV7670_GAM13_ADDRESS = 0x87;
1283 
1284 /**
1285  * @brief Gamma Curve register 14
1286  * @details Gamma Curve 14th Segment Input End Point 0xB0 Output Value
1287  * @return 0x88
1288 */
1289 static uint8_t OV7670_GAM14_ADDRESS = 0x88;
1290 
1291 /**
1292  * @brief Gamma Curve register 15
1293  * @details Gamma Curve 15th Segment Input End Point 0xD0 Output Value
1294  * @return 0x89
1295 */
1296 static uint8_t OV7670_GAM15_ADDRESS = 0x89;
1297 
1298 /**
1299  * @brief RSVD (Reserved)
1300  * @return 0x8A-0x8B
1301 */
1302 static uint8_t OV7670_RSVD_8A_ADDRESS = 0x8A;
1303 static uint8_t OV7670_RSVD_8B_ADDRESS = 0x8B;
1304 
1305 /**
1306  * @brief RGB444 register
1307  * @details RGB444 register
1308  * Bit[7:2]: Reserved
1309  * Bit[1]: RGB444 enable, effective only when COM15[4] is high
1310  * 0: Disable
1311  * 1: Enable
1312  * Bit[0]: RGB444 word format
1313  * 0: xR GB
1314  * 1: RG Bx
1315  * @return 0x8C
1316 */
1317 static uint8_t OV7670_RGB444_ADDRESS = 0x8C;
1318 
1319 /**
1320  * @brief RSVD (Reserved)
1321  * @return 0x8D-0x91
1322 */
1323 static uint8_t OV7670_RSVD_8D_ADDRESS = 0x8D;
1324 static uint8_t OV7670_RSVD_8E_ADDRESS = 0x8E;
1325 static uint8_t OV7670_RSVD_8F_ADDRESS = 0x8F;
1326 static uint8_t OV7670_RSVD_90_ADDRESS = 0x90;
1327 static uint8_t OV7670_RSVD_91_ADDRESS = 0x91;
1328 
1329 /**
1330  * @brief Dummy Row low 8 bits register
1331  * @return 0x92
1332 */
1333 static uint8_t OV7670_DM_LNL_ADDRESS = 0x92;
1334 
1335 /**z
1336  * @brief Dummy Row high 8 bits register
1337  * @return 0x93
1338 */
1339 static uint8_t OV7670_DM_LNH_ADDRESS = 0x93;
1340 
1341 /**
1342  * @brief Lens Correction Option 6 (effective only when LCC5[2] is high)
1343  * @return 0x94
1344 */
1345 static uint8_t OV7670_LCC6_ADDRESS = 0x94;
1346 
1347 /**
1348  * @brief Lens Correction Option 7 (effective only when LCC5[2] is high)
1349  * @return 0x95
1350 */
1351 static uint8_t OV7670_LCC7_ADDRESS = 0x95;
1352 
1353 /**
1354  * @brief RSVD (Reserved)
1355  * @return 0x96-0x9C
1356 */
1357 static uint8_t OV7670_RSVD_96_ADDRESS = 0x96;
1358 static uint8_t OV7670_RSVD_97_ADDRESS = 0x97;
1359 static uint8_t OV7670_RSVD_98_ADDRESS = 0x98;
1360 static uint8_t OV7670_RSVD_99_ADDRESS = 0x99;
1361 static uint8_t OV7670_RSVD_9A_ADDRESS = 0x9A;
1362 static uint8_t OV7670_RSVD_9B_ADDRESS = 0x9B;
1363 static uint8_t OV7670_RSVD_9C_ADDRESS = 0x9C;
1364 
1365 /**
1366  * @brief 50 Hz Banding Filter Value
1367  * @details 50 Hz Banding Filter Value
1368  * (effective only when COM8[5] is high and COM11[3] is high)
1369  * @return 0x9D
1370 */
1371 static uint8_t OV7670_BD50ST_ADDRESS = 0x9D;
1372 
1373 /**
1374  * @brief 60 Hz Banding Filter Value
1375  * @details 60 Hz Banding Filter Value
1376  * (effective only when COM8[5] is high and COM11[3] is low)
1377  * @return 0x9E
1378 */
1379 static uint8_t OV7670_BD60ST_ADDRESS = 0x9E;
1380 
1381 /**
1382  * @brief HAECC1 Histogram-based AEC/AGC Control 1
1383  * @return 0x9F
1384 */
1385 static uint8_t OV7670_HAECC1_ADDRESS = 0x9F;
1386 
1387 /**
1388  * @brief HAECC1 Histogram-based AEC/AGC Control 2
1389  * @return 0xA0
1390 */
1391 static uint8_t OV7670_HAECC2_ADDRESS = 0xA0;
1392 
1393 /**
1394  * @brief RSVD (Reserved)
1395  * @return 0xA1
1396 */
1397 static uint8_t OV7670_RSVD_A1_ADDRESS = 0xA1;
1398 
1399 /**
1400  * @brief Pixel Clock Delay
1401  * @return 0xA2
1402 */
1404 
1405 /**
1406  * @brief RSVD (Reserved)
1407  * @return 0xA3
1408 */
1409 static uint8_t OV7670_RSVD_A3_ADDRESS = 0xA3;
1410 
1411 /**
1412  * @brief NT_CTRL register
1413  * @details NT_CTRL register
1414  * Bit[7:4]: Reserved
1415  * Bit[3]: Auto frame rate adjustment dummy row selection
1416  * 0: N is equal to the maximum exposure, time less than
1417  * frame period when banding filter is enabled
1418  * 1: N is equal to the number of rows per frame
1419  * Bit[2]: Reserved
1420  * Bit[1:0]: Auto frame rate adjustment switch point
1421  * 00: Insert dummy row at 2x gain
1422  * 01: Insert dummy row at 4x gain
1423  * 10: Insert dummy row at 8x gain
1424  * @return 0xA4
1425 */
1426 static uint8_t OV7670_NT_CTRL_ADDRESS = 0xA4;
1427 
1428 /**
1429  * @brief BD50MAX register
1430  * @return 0xA5
1431 */
1432 static uint8_t OV7670_BD50MAX_ADDRESS = 0xA5;
1433 
1434 /**
1435  * @brief HAECC3 Histogram-based AEC/AGC Control 3
1436  * @return 0xA6
1437 */
1438 static uint8_t OV7670_HAECC3_ADDRESS = 0xA6;
1439 
1440 /**
1441  * @brief HAECC4 Histogram-based AEC/AGC Control 4
1442  * @return 0xA7
1443 */
1444 static uint8_t OV7670_HAECC4_ADDRESS = 0xA7;
1445 
1446 /**
1447  * @brief HAECC5 Histogram-based AEC/AGC Control 5
1448  * @return 0xA8
1449 */
1450 static uint8_t OV7670_HAECC5_ADDRESS = 0xA8;
1451 
1452 /**
1453  * @brief HAECC6 Histogram-based AEC/AGC Control 6
1454  * @return 0xA9
1455 */
1456 static uint8_t OV7670_HAECC6_ADDRESS = 0xA9;
1457 
1458 /**
1459  * @brief HAECC7 Histogram-based AEC/AGC Control 7
1460  * @return 0xAA
1461 */
1462 static uint8_t OV7670_HAECC7_ADDRESS = 0xAA;
1463 
1464 /**
1465  * @brief BD60MAX register
1466  * @return 0xAB
1467 */
1468 static uint8_t OV7670_BD60MAX_ADDRESS = 0xAB;
1469 
1470 /**
1471  * @brief STR-OPT register
1472  * @details Register AC
1473  * Bit[7]:Strobe enable
1474  * Bit[6]: R / G / B gain controlled by STR_R (0xAD) / STR_G
1475  * (0xAE) / STR_B (0xAF) for LED output frame
1476  * Bit[5:4]: Xenon mode option
1477  * 00: 1 row
1478  * 01: 2 rows
1479  * 10: 3 rows
1480  * 11: 4 rows
1481  * Bit[3:2]: Reserved
1482  * Bit[1:0]: Mode select
1483  * 00: Xenon
1484  * 01: LED 1
1485  * 1x: LED 2
1486  * @return 0xAC
1487 */
1488 static uint8_t OV7670_STR_OPT_ADDRESS = 0xAC;
1489 
1490 /**
1491  * @brief R Gain for LED Output Frame
1492  * @return 0xAD
1493 */
1494 static uint8_t OV7670_STR_R_ADDRESS = 0xAD;
1495 
1496 /**
1497  * @brief G Gain for LED Output Frame
1498  * @return 0xAE
1499 */
1500 static uint8_t OV7670_STR_G_ADDRESS = 0xAE;
1501 
1502 /**
1503  * @brief B Gain for LED Output Frame
1504  * @return 0xAF
1505 */
1506 static uint8_t OV7670_STR_B_ADDRESS = 0xAF;
1507 
1508 /**
1509  * @brief RSVD (Reserved)
1510  * @return 0xB0
1511 */
1512 static uint8_t OV7670_RSVD_B0_ADDRESS = 0xB0;
1513 
1514 /**
1515  * @brief ABLC1 register
1516  * @details ABLC1 register
1517  * Bit[7:3]: Reserved
1518  * Bit[2]: ABLC enable
1519  * 0: Disable ABLC function, BLC function is still active
1520  * 1: Enable ABLC function
1521  * Bit[1:0]: Reserved
1522  * @return 0xB1
1523 */
1524 static uint8_t OV7670_ABLC1_ADDRESS = 0xB1;
1525 
1526 /**
1527  * @brief RSVD (Reserved)
1528  * @return 0xB2
1529 */
1530 static uint8_t OV7670_RSVD_B2_ADDRESS = 0xB2;
1531 
1532 /**
1533  * @brief ABLC Target
1534  * @return 0xB3
1535 */
1536 static uint8_t OV7670_THL_ST_ADDRESS = 0xB3;
1537 
1538 /**
1539  * @brief RSVD (Reserved)
1540  * @return 0xB4
1541 */
1542 static uint8_t OV7670_RSVD_B4_ADDRESS = 0xB4;
1543 
1544 /**
1545  * @brief ABLC Stable Range
1546  * @return 0xB5
1547 */
1548 static uint8_t OV7670_THL_DLT_ADDRESS = 0xB5;
1549 
1550 /**
1551  * @brief RSVD (Reserved)
1552  * @return 0xB6-0xBD
1553 */
1554 static uint8_t OV7670_RSVD_B6_ADDRESS = 0xB6;
1555 static uint8_t OV7670_RSVD_B7_ADDRESS = 0xB7;
1556 static uint8_t OV7670_RSVD_B8_ADDRESS = 0xB8;
1557 static uint8_t OV7670_RSVD_B9_ADDRESS = 0xB9;
1558 static uint8_t OV7670_RSVD_BA_ADDRESS = 0xBA;
1559 static uint8_t OV7670_RSVD_BB_ADDRESS = 0xBB;
1560 static uint8_t OV7670_RSVD_BC_ADDRESS = 0xBC;
1561 static uint8_t OV7670_RSVD_BD_ADDRESS = 0xBD;
1562 
1563 /**
1564  * @brief Blue Channel Black Level Compensation
1565  * @details Blue Channel Black Level Compensation
1566  * Bit[7]: Reserved
1567  * Bit[6]: Sign bit
1568  * Bit[5:0]: Blue channel black level compensation
1569  * @return 0xBE
1570 */
1571 static uint8_t OV7670_AD_CHB_ADDRESS = 0xBE;
1572 
1573 /**
1574  * @brief Red Channel Black Level Compensation
1575  * @details Red Channel Black Level Compensation
1576  * Bit[7]: Reserved
1577  * Bit[6]: Sign bit
1578  * Bit[5:0]: Red channel black level compensation
1579  * @return 0xBF
1580 */
1581 static uint8_t OV7670_AD_CHR_ADDRESS = 0xBF;
1582 
1583 /**
1584  * @brief Gb Channel Black Level Compensation
1585  * @details Gb Channel Black Level Compensation
1586  * Bit[7]: Reserved
1587  * Bit[6]: Sign bit
1588  * Bit[5:0]: Gb channel black level compensation
1589  * @return 0xC0
1590 */
1591 static uint8_t OV7670_AD_CHGB_ADDRESS = 0xC0;
1592 
1593 /**
1594  * @brief Gr Channel Black Level Compensation
1595  * @details Gr Channel Black Level Compensation
1596  * Bit[7]: Reserved
1597  * Bit[6]: Sign bit
1598  * Bit[5:0]: Gr channel black level compensation
1599  * @return 0xC1
1600 */
1601 static uint8_t OV7670_AD_CHGR_ADDRESS = 0xC1;
1602 
1603 /**
1604  * @brief RSVD (Reserved)
1605  * @return 0xC2-0xC8
1606 */
1607 static uint8_t OV7670_RSVD_C2_ADDRESS = 0xC2;
1608 static uint8_t OV7670_RSVD_C3_ADDRESS = 0xC3;
1609 static uint8_t OV7670_RSVD_C4_ADDRESS = 0xC4;
1610 static uint8_t OV7670_RSVD_C5_ADDRESS = 0xC5;
1611 static uint8_t OV7670_RSVD_C6_ADDRESS = 0xC6;
1612 static uint8_t OV7670_RSVD_C7_ADDRESS = 0xC7;
1613 static uint8_t OV7670_RSVD_C8_ADDRESS = 0xC8;
1614 
1615 /**
1616  * @brief Saturation Control register
1617  * @details Saturation Control
1618  * Bit[7:4]: UV saturation control minimum
1619  * Bit[3:0]: UV saturation control result
1620  * @return 0xC9
1621 */
1622 static uint8_t OV7670_SATCTR_ADDRESS = 0xC9;
1623 
1624 
1625 /* Init values! */
1626 
1627 /**
1628  * @brief Values for registers to be set at camera init.
1629  * @details For this camera, these values aren't really mentioned in the datasheet
1630  * and instead contact has to be made with OmniVision to get the best
1631  * values. Instead of doing that myself, these values are from the Linux
1632  * kernel driver for this camera, these values came from OmniVision.
1633  *
1634  * The camera init should be done in this order too. These settings
1635  * give VGA VUYU, 30fps
1636 */
1637 
1638 /**
1639  * @brief COM7 software reset value.
1640  * @details Writing 0x80 to the COM7 register sets
1641  * all registers to their default value.
1642  * Default does not mean optimal though.
1643  *
1644  * This is recommended to be run at the
1645  * very start of the driver init.
1646  * @return 0x80
1647  */
1648 static uint8_t OV7670_COM7_SOFT_RESET = 0x80;
1649 
1650 /**
1651  * @brief CLKRC 30fps clock scale
1652  * @details 0x1 == 0000 0001
1653  * This value sets the internal clock pre-scaler
1654  * @return 0x1
1655 */
1656 static uint8_t OV7670_CLKRC_RESET_VALUE = 0x01;
1657 
1658 /**
1659  * @brief TSLB magic reserved bit
1660  * @details 0000 0100
1661  * @return 0x04
1662 */
1663 static uint8_t OV7670_TSLB_RESET_VALUE = 0x04;
1664 
1665 /**
1666  * @brief COM7 YUV reset value
1667  * @details 0000 0000
1668  * @return 0x0
1669 */
1670 static uint8_t OV7670_COM7_RESET_VALUE = 0x0;
1671 
1672 /**
1673  * @brief HSTART reset, value from OV doesn't make sense at all
1674  * @details 0001 0011
1675  * @return 0x13
1676 */
1677 static uint8_t OV7670_HSTART_RESET_VALUE = 0x13;
1678 
1679 /**
1680  * @brief HSTOP reset, value from OV doesn't make sense at all
1681  * @details 0000 0001
1682  * @return 0x01
1683 */
1684 static uint8_t OV7670_HSTOP_RESET_VALUE = 0x01;
1685 
1686 /**
1687  * @brief HREF reset, MSB bits from HSTART AND HSTOP
1688  * @details 1011 0110 , HREF edge offset = 10
1689  * @return 0xB6
1690 */
1691 static uint8_t OV7670_HREF_RESET_VALUE = 0xB6;
1692 
1693 /**
1694  * @brief VSTART reset
1695  * @details 0001 0010
1696  * @return 0x02
1697 */
1698 static uint8_t OV7670_VSTART_RESET_VALUE = 0x02;
1699 
1700 /**
1701  * @brief VSTOP reset, this makes more sense compared to HSTOP.
1702  * @details 0111 1010
1703  * @return 0x7A
1704 */
1705 static uint8_t OV7670_VSTOP_RESET_VALUE = 0x7A;
1706 
1707 /**
1708  * @brief VREF reset, start low 2 bits from VSTOP/START
1709  * @details 0000 1010
1710  * @return 0x0A
1711 */
1712 static uint8_t OV7670_VREF_RESET_VALUE = 0x0A;
1713 
1714 /**
1715  * @brief COM3 reset value
1716  * @details 0000 0000 , nothing important
1717  * @return 0x0
1718 */
1719 static uint8_t OV7670_COM14_RESET_VALUE = 0x0;
1720 
1721 /**
1722  * @brief SCALING_XSC reset value
1723  * @details 0011 1010 , Max horizontal scale factor, no test pattern output
1724  * @return 0x3A
1725 */
1726 static uint8_t OV7670_SCALING_XSC_RESET_VALUE = 0x3A;
1727 
1728 /**
1729  * @brief SCALING_PCLK_DIV reset value
1730  * @details 1111 0000 , Reserved magic???
1731  * @return 0xF0
1732 */
1734 
1735 /**
1736  * @brief SLOP , Gamma curve highest segment slop
1737  * @details 0010 0000
1738  * @return 0x20
1739 */
1740 static uint8_t OV7670_SLOP_RESET_VALUE = 0x20;
1741 
1742 /**
1743  * @brief GAM1 Gamma curve 1
1744  * @details 0001 0000
1745  * @return 0x10
1746 */
1747 static uint8_t OV7670_GAM1_RESET_VALUE = 0x10;
1748 
1749 /**
1750  * @brief GAM2 Gamma curve 2
1751  * @details 0001 1110
1752  * @return 0x1E
1753 */
1754 static uint8_t OV7670_GAM2_RESET_VALUE = 0x1E;
1755 
1756 /**
1757  * @brief GAM3 Gamma curve 3
1758  * @details 0011 0101
1759  * @return 0x35
1760 */
1761 static uint8_t OV7670_GAM3_RESET_VALUE = 0x35;
1762 
1763 /**
1764  * @brief GAM4 Gamma curve 4
1765  * @details 0101 1010
1766  * @return 0x5A
1767 */
1768 static uint8_t OV7670_GAM4_RESET_VALUE = 0x5A;
1769 
1770 /**
1771  * @brief GAM5 Gamma curve 5
1772  * @details 0110 1001
1773  * @return 0x69
1774 */
1775 static uint8_t OV7670_GAM5_RESET_VALUE = 0x69;
1776 
1777 /**
1778  * @brief GAM6 Gamma curve 6
1779  * @details 0111 0110
1780  * @return 0x76
1781 */
1782 static uint8_t OV7670_GAM6_RESET_VALUE = 0x76;
1783 
1784 /**
1785  * @brief GAM7 Gamma curve 7
1786  * @details 1000 0000
1787  * @return 0x80
1788 */
1789 static uint8_t OV7670_GAM7_RESET_VALUE = 0x80;
1790 
1791 /**
1792  * @brief GAM8 Gamma curve 8
1793  * @details 1000 1000
1794  * @return 0x88
1795 */
1796 static uint8_t OV7670_GAM8_RESET_VALUE = 0x88;
1797 
1798 /**
1799  * @brief GAM9 Gamma curve 9
1800  * @details 1000 1111
1801  * @return 0x8F
1802 */
1803 static uint8_t OV7670_GAM9_RESET_VALUE = 0x8F;
1804 
1805 /**
1806  * @brief GAM10 Gamma curve 10
1807  * @details 1001 0110
1808  * @return 0x96
1809 */
1810 static uint8_t OV7670_GAM10_RESET_VALUE = 0x96;
1811 
1812 /**
1813  * @brief GAM11 Gamma curve 11
1814  * @details 1010 0011
1815  * @return 0xA3
1816 */
1817 static uint8_t OV7670_GAM11_RESET_VALUE = 0xA3;
1818 
1819 /**
1820  * @brief GAM12 Gamma curve 12
1821  * @details 1010 1111
1822  * @return 0xAF
1823 */
1824 static uint8_t OV7670_GAM12_RESET_VALUE = 0xAF;
1825 
1826 /**
1827  * @brief GAM13 Gamma curve 13
1828  * @details 1100 0100
1829  * @return 0xC4
1830 */
1831 static uint8_t OV7670_GAM13_RESET_VALUE = 0xC4;
1832 
1833 /**
1834  * @brief GAM14 Gamma curve 14
1835  * @details 1101 0111
1836  * @return 0xD7
1837 */
1838 static uint8_t OV7670_GAM14_RESET_VALUE = 0xD7;
1839 
1840 /**
1841  * @brief GAM15 Gamma curve 15
1842  * @details 1110 1000
1843  * @return 0xE8
1844 */
1845 static uint8_t OV7670_GAM15_RESET_VALUE = 0xE8;
1846 
1847 /**
1848  * @brief COM8 reset, disable AGC and AEC first. One/Two.
1849  * @details 1110 0000 , reserved magic, banding on, AEC step size, fast algorithm
1850  * @return 0xE0
1851 */
1852 static uint8_t OV7670_COM8_RESET_VALUE_ONE = 0xE0;
1853 
1854 /**
1855  * @brief COM4 reset, magic reserved 6th bit
1856  * @details 0100 0000
1857  * @return 0x40
1858 */
1859 static uint8_t OV7670_COM4_RESET_VALUE = 0x40;
1860 
1861 /**
1862  * @brief COM9 reset, magic reserved, 4x gain ceiling
1863  * @details 0001 1000
1864  * @return 0x18
1865 */
1866 static uint8_t OV7670_COM9_RESET_VALUE = 0x18;
1867 
1868 /**
1869  * @brief BD50MAX reset
1870  * @detais 0000 0101
1871  * @return 0x05
1872 */
1873 static uint8_t OV7670_BD50MAX_RESET_VALUE = 0x05;
1874 
1875 /**
1876  * @brief BD60MAX reset
1877  * @detais 0000 0111
1878  * @return 0x07
1879 */
1880 static uint8_t OV7670_BD60MAX_RESET_VALUE = 0x07;
1881 
1882 /**
1883  * @brief AEW reset
1884  * @details 1001 0101
1885  * @return 0x95
1886 */
1887 static uint8_t OV7670_AEW_RESET_VALUE = 0x95;
1888 
1889 /**
1890  * @brief AEB reset
1891  * @details 0011 00111
1892  * @return 0x33
1893 */
1894 static uint8_t OV7670_AEB_RESET_VALUE = 0x33;
1895 
1896 /**
1897  * @brief VPT reset
1898  * @details 1110 0011
1899  * @return 0xE3
1900 */
1901 static uint8_t OV7670_VPT_RESET_VALUE = 0xE3;
1902 
1903 /**
1904  * @brief HAECC1 reset
1905  * @details 0111 1000
1906  * @return 0x78
1907 */
1908 static uint8_t OV7670_HAECC1_RESET_VALUE = 0x78;
1909 
1910 /**
1911  * @brief HAECC2 reset
1912  * @details 0110 1000
1913  * @return 0x68
1914 */
1915 static uint8_t OV7670_HAECC2_RESET_VALUE = 0x68;
1916 
1917 /**
1918  * @brief Reserved magic again
1919  * @details 0000 0011
1920  * @return 0x03
1921 */
1922 static uint8_t OV7670_RSVD_A1_RESET_VALUE = 0x03;
1923 
1924 /**
1925  * @brief HAECC3 reset
1926  * @details 1101 1000
1927  * @return 0xD8
1928 */
1929 static uint8_t OV7670_HAECC3_RESET_VALUE = 0xD8;
1930 
1931 /**
1932  * @brief HAECC4 reset
1933  * @details 1101 1000
1934  * @return 0xD8
1935 */
1936 static uint8_t OV7670_HAECC4_RESET_VALUE = 0xD8;
1937 
1938 /**
1939  * @brief HAECC6 reset
1940  * @details 1001 0000
1941  * @return 0x90
1942 */
1943 static uint8_t OV7670_HAECC6_RESET_VALUE = 0x90;
1944 
1945 /**
1946  * @brief HAECC7 reset
1947  * @details 1001 0100
1948  * @return 0x94
1949 */
1950 static uint8_t OV7670_HAECC7_RESET_VALUE = 0x94;
1951 
1952 /**
1953  * @brief COM8 reset 2
1954  * @details 1110 0101 , Enables FAST AEC, AEC STEP, BFILT, AGC, AEC
1955  * @return 0xE5
1956 */
1957 static uint8_t OV7670_COM8_RESET_VALUE_TWO = 0xE5;
1958 
1959 /**
1960  * @brief COM5 reset
1961  * @details 0110 0001, magic reserved
1962  * @return 0x61
1963 */
1964 static uint8_t OV7670_COM5_RESET_VALUE = 0x61;
1965 
1966 /**
1967  * @brief COM6 reset
1968  * @details 0100 1011, magic reserved
1969  * @return 0x4B
1970 */
1971 static uint8_t OV7670_COM6_RESET_VALUE = 0x4B;
1972 
1973 /**
1974  * @brief RSVD reset
1975  * @details 0000 0010
1976  * @return 0x02
1977 */
1978 static uint8_t OV7670_RSVD_16_RESET_VALUE = 0x02;
1979 
1980 /**
1981  * @brief MVFP reset
1982  * @details 0000 0111
1983  * @return 0x07
1984 */
1985 static uint8_t OV7670_MVFP_RESET_VALUE = 0x07;
1986 
1987 /**
1988  * @brief ADCCTR2 reset
1989  * @details 1001 0001
1990  * @return 0x91
1991 */
1992 static uint8_t OV7670_ADCCTR2_RESET_VALUE = 0x91;
1993 
1994 /**
1995  * @brief RSVD reset
1996  * @details 0000 0111
1997  * @return 0x07
1998 */
1999 static uint8_t OV7670_RSVD_29_RESET_VALUE = 0x07;
2000 
2001 /**
2002  * @brief CHLF reset value, reserved
2003  * @details 0000 1011
2004  * @return 0x0B
2005 */
2006 static uint8_t OV7670_CHLF_RESET_VALUE = 0x0B;
2007 
2008 /**
2009  * @brief RSVD reset
2010  * @details 0000 1011
2011  * @return 0x0B
2012 */
2013 static uint8_t OV7670_RSVD_35_RESET_VALUE = 0x0B;
2014 
2015 /**
2016  * @brief ADC reset
2017  * @details 0001 1101
2018  * @return 0x1D
2019 */
2020 static uint8_t OV7670_ADC_RESET_VALUE = 0x1D;
2021 
2022 /**
2023  * @brief ACOM reset
2024  * @details 0111 0001
2025  * @return 0x71
2026 */
2027 static uint8_t OV7670_ACOM_RESET_VALUE = 0x71;
2028 
2029 /**
2030  * @brief OFON reset
2031  * @details 0010 1010
2032  * @return 0x2A
2033 */
2034 static uint8_t OV7670_OFON_RESET_VALUE = 0x2A;
2035 
2036 /**
2037  * @brief COM12 reset
2038  * @details 0111 1000, magic reserved
2039  * @return 0x78
2040 */
2041 static uint8_t OV7670_COM12_RESET_VALUE = 0x78;
2042 
2043 /**
2044  * @brief RSVD reset
2045  * @details 0100 0000
2046  * @return 0x40
2047 */
2048 static uint8_t OV7670_RSVD_4D_RESET_VALUE = 0x40;
2049 
2050 /**
2051  * @brief RSVD reset
2052  * @details 0010 0000
2053  * @return 0x20
2054 */
2055 static uint8_t OV7670_RSVD_4E_RESET_VALUE = 0x20;
2056 
2057 /**
2058  * @brief GFIX reset
2059  * @details 0000 0000
2060  * @return 0x0
2061 */
2062 static uint8_t OV7670_GFIX_RESET_VALUE = 0x0;
2063 
2064 /**
2065  * @brief DBLV reset
2066  * @details 0100 1010
2067  * @return 0x4A
2068 */
2069 static uint8_t OV7670_DBLV_RESET_VALUE = 0x4A;
2070 
2071 /**
2072  * @brief REG74 reset
2073  * @details 0001 0000
2074  * @return 0x10
2075 */
2076 static uint8_t OV7670_REG74_RESET_VALUE = 0x10;
2077 
2078 /**
2079  * @brief RSVD reset
2080  * @details 0100 1111
2081  * @return 0x4F
2082 */
2083 static uint8_t OV7670_RSVD_8D_RESET_VALUE = 0x4F;
2084 
2085 /**
2086  * @brief RSVD reset
2087  * @details 0000 0000
2088  * @return 0x0
2089 */
2090 static uint8_t OV7670_RSVD_8E_RESET_VALUE = 0x0;
2091 
2092 /**
2093  * @brief RSVD reset
2094  * @details 0000 0000
2095  * @return 0x0
2096 */
2097 static uint8_t OV7670_RSVD_8F_RESET_VALUE = 0x0;
2098 
2099 /**
2100  * @brief RSVD reset
2101  * @details 0000 0000
2102  * @return 0x0
2103 */
2104 static uint8_t OV7670_RSVD_90_RESET_VALUE = 0x0;
2105 
2106 /**
2107  * @brief RSVD reset
2108  * @details 0000 0000
2109  * @return 0x0
2110 */
2111 static uint8_t OV7670_RSVD_91_RESET_VALUE = 0x0;
2112 
2113 /**
2114  * @brief RSVD reset
2115  * @details 0000 0000
2116  * @return 0x0
2117 */
2118 static uint8_t OV7670_RSVD_96_RESET_VALUE_ONE = 0x0;
2119 
2120 /**
2121  * @brief RSVD reset
2122  * @details 0000 0000
2123  * @return 0x0
2124 */
2125 static uint8_t OV7670_RSVD_9A_RESET_VALUE_ONE = 0x0;
2126 
2127 /**
2128  * @brief RSVD reset
2129  * @details 1000 0100
2130  * @return 0x84
2131 */
2132 static uint8_t OV7670_RSVD_B0_RESET_VALUE = 0x84;
2133 
2134 /**
2135  * @brief ABLC1 reset
2136  * @details 0000 1100
2137  * @return 0x0C
2138 */
2139 static uint8_t OV7670_ABLC1_RESET_VALUE = 0x0C;
2140 
2141 /**
2142  * @brief RSVD reset
2143  * @details 0000 1110
2144  * @return 0x0E
2145 */
2146 static uint8_t OV7670_RSVD_B2_RESET_VALUE = 0x0E;
2147 
2148 /**
2149  * @brief THL_ST reset
2150  * @details 1000 0010
2151  * @return 0x82
2152 */
2153 static uint8_t OV7670_THL_ST_RESET_VALUE = 0x82;
2154 
2155 /**
2156  * @brief RSVD reset
2157  * @details 0000 1010
2158  * @return 0x0A
2159 */
2160 static uint8_t OV7670_RSVD_B8_RESET_VALUE = 0x0A;
2161 
2162 /**
2163  * @brief AWBC1 reset
2164  * @details 0000 1010
2165  * @return 0x0A
2166 */
2167 static uint8_t OV7670_AWBC1_RESET_VALUE = 0x0A;
2168 
2169 /**
2170  * @brief AWBC3 reset
2171  * @details 0011 0100
2172  * @return 0x34
2173 */
2174 static uint8_t OV7670_AWBC3_RESET_VALUE = 0x34;
2175 
2176 /**
2177  * @brief AWBC4 reset
2178  * @details 0101 1000
2179  * @return 0x58
2180 */
2181 static uint8_t OV7670_AWBC4_RESET_VALUE = 0x58;
2182 
2183 /**
2184  * @brief AWBC5 reset
2185  * @details 0010 1000
2186  * @return 0x28
2187 */
2188 static uint8_t OV7670_AWBC5_RESET_VALUE = 0x28;
2189 
2190 /**
2191  * @brief AWBC6 reset
2192  * @details 0011 1010
2193  * @return 0x3A
2194 */
2195 static uint8_t OV7670_AWBC6_RESET_VALUE = 0x3A;
2196 
2197 /**
2198  * @brief RSVD reset
2199  * @details 1000 1000
2200  * @return 0x88
2201 */
2202 static uint8_t OV7670_RSVD_59_RESET_VALUE = 0x88;
2203 
2204 /**
2205  * @brief RSVD reset
2206  * @details 1000 1000
2207  * @return 0x88
2208 */
2209 static uint8_t OV7670_RSVD_5A_RESET_VALUE = 0x88;
2210 
2211 /**
2212  * @brief RSVD reset
2213  * @details 0100 0100
2214  * @return 0x44
2215 */
2216 static uint8_t OV7670_RSVD_5B_RESET_VALUE = 0x44;
2217 
2218 /**
2219  * @brief RSVD reset
2220  * @details 0110 0111
2221  * @return 0x67
2222 */
2223 static uint8_t OV7670_RSVD_5C_RESET_VALUE = 0x67;
2224 
2225 /**
2226  * @brief RSVD reset
2227  * @details 0100 1001
2228  * @return 0x49
2229 */
2230 static uint8_t OV7670_RSVD_5D_RESET_VALUE = 0x49;
2231 
2232 /**
2233  * @brief RSVD reset
2234  * @details 0000 1110
2235  * @return 0x0E
2236 */
2237 static uint8_t OV7670_RSVD_5E_RESET_VALUE = 0x0E;
2238 
2239 /**
2240  * @brief AWBCTR3 reset
2241  * @details 0000 1010
2242  * @return 0x0A
2243 */
2244 static uint8_t OV7670_AWBCTR3_RESET_VALUE = 0x0A;
2245 
2246 /**
2247  * @brief AWBCTR2 reset
2248  * @details 0101 0101
2249  * @return 0x55
2250 */
2251 static uint8_t OV7670_AWBCTR2_RESET_VALUE = 0x55;
2252 
2253 /**
2254  * @brief AWBCTR1 reset
2255  * @details 0001 0001
2256  * @return 0x11
2257 */
2258 static uint8_t OV7670_AWBCTR1_RESET_VALUE = 0x11;
2259 
2260 /**
2261  * @brief AWBCTR0 reset
2262  * @details 0110 1111
2263  * @return 0x6F
2264 */
2265 static uint8_t OV7670_AWBCTR0_RESET_VALUE = 0x9F;
2266 
2267 /**
2268  * @brief GGAIN reset
2269  * @details 0100 0000
2270  * @return 0x40
2271 */
2272 static uint8_t OV7670_GGAIN_RESET_VALUE = 0x40;
2273 
2274 /**
2275  * @brief BLUE Gain reset
2276  * @details 0100 0000
2277  * @return 0x40
2278 */
2279 static uint8_t OV7670_BLUE_GAIN_RESET_VALUE = 0x40;
2280 
2281 /**
2282  * @brief RED Gain reset
2283  * @details 0110 0000
2284  * @return 0x60
2285 */
2286 static uint8_t OV7670_RED_GAIN_RESET_VALUE = 0x60;
2287 
2288 /**
2289  * @brief COM8 reset three
2290  * @details 1110 0111
2291  * @return 0xE7
2292 */
2293 static uint8_t OV7670_COM8_RESET_VALUE_THREE = 0xE7;
2294 
2295 /**
2296  * @brief MTX1 reset
2297  * @details 1000 0000
2298  * @return 0x80
2299 */
2300 static uint8_t OV7670_MTX1_RESET_VALUE = 0x80;
2301 
2302 /**
2303  * @brief MTX2 reset
2304  * @details 1000 0000
2305  * @return 0x80
2306 */
2307 static uint8_t OV7670_MTX2_RESET_VALUE = 0x80;
2308 
2309 /**
2310  * @brief MTX3 reset
2311  * @details 0000 0000
2312  * @return 0x0
2313 */
2314 static uint8_t OV7670_MTX3_RESET_VALUE = 0x0;
2315 
2316 /**
2317  * @brief MTX4 reset
2318  * @details 0010 0010
2319  * @return 0x22
2320 */
2321 static uint8_t OV7670_MTX4_RESET_VALUE = 0x22;
2322 
2323 /**
2324  * @brief MTX5 reset
2325  * @details 0101 1110
2326  * @return 0x5E
2327 */
2328 static uint8_t OV7670_MTX5_RESET_VALUE = 0x5E;
2329 
2330 /**
2331  * @brief MTX6 reset
2332  * @details 1000 0000
2333  * @return 0x80
2334 */
2335 static uint8_t OV7670_MTX6_RESET_VALUE = 0x80;
2336 
2337 /**
2338  * @brief MTXS reset
2339  * @details 1001 1110
2340  * @return 0x9E
2341 */
2342 static uint8_t OV7670_MTXS_RESET_VALUE = 0x9E;
2343 
2344 /**
2345  * @brief COM16 reset
2346  * @details 0000 1000
2347  * @return 0x08
2348 */
2349 static uint8_t OV7670_COM16_RESET_VALUE_ONE = 0x08;
2350 
2351 /**
2352  * @brief EDGE reset
2353  * @details 0000 0000
2354  * @return 0x0
2355 */
2356 static uint8_t OV7670_EDGE_RESET_VALUE = 0x0;
2357 
2358 /**
2359  * @brief REG75 reset
2360  * @details 0000 0101
2361  * @return 0x05
2362 */
2363 static uint8_t OV7670_REG75_RESET_VALUE = 0x05;
2364 
2365 /**
2366  * @brief REG76 reset
2367  * @details 1110 0001
2368  * @return 0xE1
2369 */
2370 static uint8_t OV7670_REG76_RESET_VALUE = 0xE1;
2371 
2372 /**
2373  * @brief DNSTH reset
2374  * @details 0000 0000
2375  * @return 0x0
2376 */
2377 static uint8_t OV7670_DNSTH_RESET_VALUE = 0x0;
2378 
2379 /**
2380  * @brief REG77 reset
2381  * @details 0000 0001
2382  * @return 0x01
2383 */
2384 static uint8_t OV7670_REG77_RESET_VALUE = 0x01;
2385 
2386 /**
2387  * @brief COM13 reset
2388  * @details 1100 0011
2389  * @return 0xC3
2390 */
2391 static uint8_t OV7670_COM13_RESET_VALUE = 0xC3;
2392 
2393 /**
2394  * @brief REG4B reset
2395  * @details 0000 1001
2396  * @return 0x09
2397 */
2398 static uint8_t OV7670_REG4B_RESET_VALUE = 0x09;
2399 
2400 /**
2401  * @brief SATCTR reset
2402  * @details 0110 0000
2403  * @return 0x60
2404 */
2405 static uint8_t OV7670_SATCTR_RESET_VALUE = 0x60;
2406 
2407 /**
2408  * @brief COM16 reset
2409  * @details 0011 1000
2410  * @return 0x38
2411 */
2412 static uint8_t OV7670_COM16_RESET_VALUE_TWO = 0x38;
2413 
2414 /**
2415  * @brief COM11 reset
2416  * @details 0001 0010
2417  * @return 0x12
2418 */
2419 static uint8_t OV7670_COM11_RESET_VALUE = 0x12;
2420 
2421 /**
2422  * @brief NT_CTRL reset
2423  * @details 1000 1000
2424  * @return 0x88
2425 */
2426 static uint8_t OV7670_NT_CTRL_RESET_VALUE = 0x88;
2427 
2428 /**
2429  * @brief RSVD reset
2430  * @details 0000 0000
2431  * @return 0x0
2432 */
2433 static uint8_t OV7670_RSVD_96_RESET_VALUE_TWO = 0x0;
2434 
2435 /**
2436  * @brief RSVD reset
2437  * @details 0011 0000
2438  * @return 0x30
2439 */
2440 static uint8_t OV7670_RSVD_97_RESET_VALUE = 0x30;
2441 
2442 /**
2443  * @brief RSVD reset
2444  * @details 0020 0000
2445  * @return 0x20
2446 */
2447 static uint8_t OV7670_RSVD_98_RESET_VALUE = 0x20;
2448 
2449 /**
2450  * @brief RSVD reset
2451  * @details 0011 0000
2452  * @return 0x30
2453 */
2454 static uint8_t OV7670_RSVD_99_RESET_VALUE = 0x30;
2455 
2456 /**
2457  * @brief RSVD reset
2458  * @details 1000 0100
2459  * @return 0x84
2460 */
2461 static uint8_t OV7670_RSVD_9A_RESET_VALUE_TWO = 0x84;
2462 
2463 /**
2464  * @brief RSVD reset
2465  * @details 0010 1001
2466  * @return 0x29
2467 */
2468 static uint8_t OV7670_RSVD_9B_RESET_VALUE = 0x29;
2469 
2470 /**
2471  * @brief RSVD reset
2472  * @details 0000 0011
2473  * @return 0x03
2474 */
2475 static uint8_t OV7670_RSVD_9C_RESET_VALUE = 0x03;
2476 
2477 /**
2478  * @brief BD50ST reset
2479  * @details 0100 1100
2480  * @return 0x4C
2481 */
2482 static uint8_t OV7670_BD50ST_RESET_VALUE = 0x4C;
2483 
2484 /**
2485  * @brief BD60ST reset
2486  * @details 0011 1111
2487  * @return 0x3F
2488 */
2489 static uint8_t OV7670_BD60ST_RESET_VALUE = 0x3F;
2490 
2491 /**
2492  * @brief RSVD reset
2493  * @details 0000 0100
2494  * @return 0x04
2495 */
2496 static uint8_t OV7670_RSVD_78_RESET_VALUE = 0x04;
2497 
2498 /**
2499  * @brief RSVD reset
2500  * @details 0000 0001
2501  * @return 0x01
2502 */
2503 static uint8_t OV7670_RSVD_79_RESET_VALUE_ONE = 0x01;
2504 
2505 /**
2506  * @brief RSVD reset
2507  * @details 1111 0000
2508  * @return 0xF8
2509 */
2510 static uint8_t OV7670_RSVD_C8_RESET_VALUE_ONE = 0xF0;
2511 
2512 /**
2513  * @brief RSVD reset
2514  * @details 0000 1111
2515  * @return 0x0F
2516 */
2517 static uint8_t OV7670_RSVD_79_RESET_VALUE_TWO = 0x0F;
2518 
2519 /**
2520  * @brief RSVD reset
2521  * @details 0000 0000
2522  * @return 0x0
2523 */
2524 static uint8_t OV7670_RSVD_C8_RESET_VALUE_TWO = 0x0;
2525 
2526 /**
2527  * @brief RSVD reset
2528  * @details 0001 0000
2529  * @return 0x10
2530 */
2531 static uint8_t OV7670_RSVD_79_RESET_VALUE_THREE = 0x10;
2532 
2533 /**
2534  * @brief RSVD reset
2535  * @details 0111 1110
2536  * @return 0x7E
2537 */
2538 static uint8_t OV7670_RSVD_C8_RESET_VALUE_THREE = 0x7E;
2539 
2540 /**
2541  * @brief RSVD reset
2542  * @details 0001 1010
2543  * @return 0x0A
2544 */
2545 static uint8_t OV7670_RSVD_79_RESET_VALUE_FOUR = 0x0A;
2546 
2547 /**
2548  * @brief RSVD reset
2549  * @details 1000 0000
2550  * @return 0x80
2551 */
2552 static uint8_t OV7670_RSVD_C8_RESET_VALUE_FOUR = 0x80;
2553 
2554 /**
2555  * @brief RSVD reset
2556  * @details 0000 1011
2557  * @return 0x0B
2558 */
2559 static uint8_t OV7670_RSVD_79_RESET_VALUE_FIVE = 0x0B;
2560 
2561 /**
2562  * @brief RSVD reset
2563  * @details 0000 0001
2564  * @return 0x01
2565 */
2566 static uint8_t OV7670_RSVD_C8_RESET_VALUE_FIVE = 0x01;
2567 
2568 /**
2569  * @brief RSVD reset
2570  * @details 0000 1100
2571  * @return 0x0C
2572 */
2573 static uint8_t OV7670_RSVD_79_RESET_VALUE_SIX = 0x0C;
2574 
2575 /**
2576  * @brief RSVD reset
2577  * @details 0000 1111
2578  * @return 0x0F
2579 */
2580 static uint8_t OV7670_RSVD_C8_RESET_VALUE_SIX = 0x0F;
2581 
2582 /**
2583  * @brief RSVD reset
2584  * @details 0000 1101
2585  * @return 0x0D
2586 */
2587 static uint8_t OV7670_RSVD_79_RESET_VALUE_SEVEN = 0x0D;
2588 
2589 /**
2590  * @brief RSVD reset
2591  * @details 0010 0000
2592  * @return 0x20
2593 */
2594 static uint8_t OV7670_RSVD_C8_RESET_VALUE_SEVEN = 0x20;
2595 
2596 /**
2597  * @brief RSVD reset
2598  * @details 0000 1001
2599  * @return 0x09
2600 */
2601 static uint8_t OV7670_RSVD_79_RESET_VALUE_EIGHT = 0x09;
2602 
2603 /**
2604  * @brief RSVD reset
2605  * @details 1000 0000
2606  * @return 0x80
2607 */
2608 static uint8_t OV7670_RSVD_C8_RESET_VALUE_EIGHT = 0x80;
2609 
2610 /**
2611  * @brief RSVD reset
2612  * @details 0000 0010
2613  * @return 0x02
2614 */
2615 static uint8_t OV7670_RSVD_79_RESET_VALUE_NINE = 0x02;
2616 
2617 /**
2618  * @brief RSVD reset
2619  * @details 1100 0000
2620  * @return 0xC0
2621 */
2622 static uint8_t OV7670_RSVD_C8_RESET_VALUE_NINE = 0xC0;
2623 
2624 /**
2625  * @brief RSVD reset
2626  * @details 0000 0011
2627  * @return 0x03
2628 */
2629 static uint8_t OV7670_RSVD_79_RESET_VALUE_TEN = 0x03;
2630 
2631 /**
2632  * @brief RSVD reset
2633  * @details 0100 0000
2634  * @return 0x40
2635 */
2636 static uint8_t OV7670_RSVD_C8_RESET_VALUE_TEN = 0x40;
2637 
2638 /**
2639  * @brief RSVD reset
2640  * @details 0000 0101
2641  * @return 0x05
2642 */
2644 
2645 /**
2646  * @brief RSVD reset
2647  * @details 0011 0000
2648  * @return 0x30
2649 */
2651 
2652 /**
2653  * @brief RSVD reset
2654  * @details 0010 0110
2655  * @return 0x26
2656 */
2657 static uint8_t OV7670_RSVD_79_RESET_VALUE_FINAL = 0x26;
2658 
2659 /** Functions and other variables! **/
2660 
2661 extern I2C_HandleTypeDef *OV7670_I2C;
2662 
2663 bool OV7670_init(I2C_HandleTypeDef *hi2c);
2664 
2665 #endif /* OV7670_H */
static uint8_t OV7670_EXHCH_ADDRESS
Dummy Pixel Insert MSB.
Definition: ov7670.h:629
static uint8_t OV7670_GAM4_ADDRESS
Gamma Curve register 4.
Definition: ov7670.h:1219
static uint8_t OV7670_MVFP_RESET_VALUE
MVFP reset.
Definition: ov7670.h:1985
static uint8_t OV7670_RSVD_59_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:906
static uint8_t OV7670_RSVD_8F_ADDRESS
Definition: ov7670.h:1325
static uint8_t OV7670_PID_ADDRESS
Product ID Number MSB (Read only)
Definition: ov7670.h:427
static uint8_t OV7670_RED_GAIN_RESET_VALUE
RED Gain reset.
Definition: ov7670.h:2286
static uint8_t OV7670_BD50MAX_RESET_VALUE
BD50MAX reset 0000 0101.
Definition: ov7670.h:1873
static uint8_t OV7670_LCC6_ADDRESS
Lens Correction Option 6 (effective only when LCC5[2] is high)
Definition: ov7670.h:1345
static uint8_t OV7670_CLKRC_RESET_VALUE
CLKRC 30fps clock scale.
Definition: ov7670.h:1656
static uint8_t OV7670_VSTOP_RESET_VALUE
VSTOP reset, this makes more sense compared to HSTOP.
Definition: ov7670.h:1705
static uint8_t OV7670_SCALING_PCLK_DIV_ADDRESS
SCALING_PCLK_DIV register.
Definition: ov7670.h:1127
static uint8_t OV7670_MANU_ADDRESS
Manual U Value (effective only when register TSLB[4] is high)
Definition: ov7670.h:970
static uint8_t OV7670_REG74_RESET_VALUE
REG74 reset.
Definition: ov7670.h:2076
static uint8_t OV7670_COM15_ADDRESS
COM15 RW register.
Definition: ov7670.h:309
static uint8_t OV7670_RBIAS_ADDRESS
R Channel Signal Output Bias.
Definition: ov7670.h:646
static uint8_t OV7670_DM_LNH_ADDRESS
z
Definition: ov7670.h:1339
static uint8_t OV7670_HSYST_ADDRESS
HSYNC Rising Edge Delay (low 8 bits)
Definition: ov7670.h:670
static uint8_t OV7670_GAM10_ADDRESS
Gamma Curve register 10.
Definition: ov7670.h:1261
static uint8_t OV7670_AD_CHR_ADDRESS
Red Channel Black Level Compensation.
Definition: ov7670.h:1581
static uint8_t OV7670_ADCCTR2_ADDRESS
ADC control register 2 (Reserved)
Definition: ov7670.h:564
static uint8_t OV7670_RSVD_90_ADDRESS
Definition: ov7670.h:1326
static uint8_t OV7670_RSVD_C8_RESET_VALUE_TWO
RSVD reset.
Definition: ov7670.h:2524
static uint8_t OV7670_VSTART_RESET_VALUE
VSTART reset.
Definition: ov7670.h:1698
static uint8_t OV7670_RSVD_C8_RESET_VALUE_EIGHT
RSVD reset.
Definition: ov7670.h:2608
static uint8_t OV7670_DNSTH_ADDRESS
De-noise strength.
Definition: ov7670.h:823
static uint8_t OV7670_COM7_SOFT_RESET
Values for registers to be set at camera init.
Definition: ov7670.h:1648
static uint8_t OV7670_ADC_ADDRESS
ADC control (Reserved)
Definition: ov7670.h:712
static uint8_t OV7670_MTX3_RESET_VALUE
MTX3 reset.
Definition: ov7670.h:2314
static uint8_t OV7670_GAM13_RESET_VALUE
GAM13 Gamma curve 13.
Definition: ov7670.h:1831
static uint8_t OV7670_RSVD_29_RESET_VALUE
RSVD reset.
Definition: ov7670.h:1999
static uint8_t OV7670_AWBC2_ADDRESS
AWB Control 2.
Definition: ov7670.h:777
static uint32_t OV7670_TIMEOUT
Timeout for whole driver coms.
Definition: ov7670.h:32
static uint8_t OV7670_RSVD_9C_ADDRESS
Definition: ov7670.h:1363
static uint8_t OV7670_MTX5_RESET_VALUE
MTX5 reset.
Definition: ov7670.h:2328
static uint8_t OV7670_COM3_ADDRESS
COM3 RW register.
Definition: ov7670.h:92
static uint8_t OV7670_COM16_ADDRESS
COM16 RW register.
Definition: ov7670.h:334
static uint8_t OV7670_RSVD_49_ADDRESS
Reserved register 0x49-0x4A.
Definition: ov7670.h:807
static uint8_t OV7670_AWBCTR2_RESET_VALUE
AWBCTR2 reset.
Definition: ov7670.h:2251
static uint8_t OV7670_RSVD_5A_ADDRESS
Definition: ov7670.h:907
static uint8_t OV7670_EXHCL_ADDRESS
Dummy Pixel Insert LSB.
Definition: ov7670.h:636
static uint8_t OV7670_GAM6_RESET_VALUE
GAM6 Gamma curve 6.
Definition: ov7670.h:1782
static uint8_t OV7670_RSVD_C8_RESET_VALUE_ONE
RSVD reset.
Definition: ov7670.h:2510
static uint8_t OV7670_ACOM_RESET_VALUE
ACOM reset.
Definition: ov7670.h:2027
static uint8_t OV7670_VREF_RESET_VALUE
VREF reset, start low 2 bits from VSTOP/START.
Definition: ov7670.h:1712
static uint8_t OV7670_COM1_ADDRESS
COM1 RW register.
Definition: ov7670.h:49
static uint8_t OV7670_RSVD_9B_ADDRESS
Definition: ov7670.h:1362
static uint8_t OV7670_ADVFH_ADDRESS
MSB of insert dummy rows in vertical direction.
Definition: ov7670.h:658
static uint8_t OV7670_RSVD_8E_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2090
static uint8_t OV7670_RSVD_5D_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2230
static uint8_t OV7670_STR_R_ADDRESS
R Gain for LED Output Frame.
Definition: ov7670.h:1494
static uint8_t OV7670_RSVD_A1_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1397
static uint8_t OV7670_RSVD_B7_ADDRESS
Definition: ov7670.h:1555
static uint8_t OV7670_RSVD_5F_ADDRESS
Definition: ov7670.h:912
static uint8_t OV7670_RSVD_B8_ADDRESS
Definition: ov7670.h:1556
static uint8_t OV7670_SLOP_RESET_VALUE
SLOP , Gamma curve highest segment slop.
Definition: ov7670.h:1740
static uint8_t OV7670_RSVD_79_RESET_VALUE_THREE
RSVD reset.
Definition: ov7670.h:2531
static uint8_t OV7670_COM11_RESET_VALUE
COM11 reset.
Definition: ov7670.h:2419
static uint8_t OV7670_RSVD_C4_ADDRESS
Definition: ov7670.h:1609
static uint8_t OV7670_GAM2_RESET_VALUE
GAM2 Gamma curve 2.
Definition: ov7670.h:1754
static uint8_t OV7670_AECHH_ADDRESS
Exposure Value - AEC MSB 5 bits.
Definition: ov7670.h:413
static uint8_t OV7670_EDGE_ADDRESS
Edge Enhancement Adjustment.
Definition: ov7670.h:765
static uint8_t OV7670_RSVD_60_ADDRESS
Definition: ov7670.h:913
static uint8_t OV7670_RSVD_BB_ADDRESS
Definition: ov7670.h:1559
static uint8_t OV7670_LCC1_ADDRESS
Lens Correction Option 1.
Definition: ov7670.h:922
static uint8_t OV7670_RSVD_4E_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2055
static uint8_t OV7670_HAECC1_ADDRESS
HAECC1 Histogram-based AEC/AGC Control 1.
Definition: ov7670.h:1385
static uint8_t OV7670_AWBCTR2_ADDRESS
AWB Control 2 return 0x6D.
Definition: ov7670.h:1039
static uint8_t OV7670_DNSTH_RESET_VALUE
DNSTH reset.
Definition: ov7670.h:2377
static uint8_t OV7670_HSTOP_RESET_VALUE
HSTOP reset, value from OV doesn&#39;t make sense at all.
Definition: ov7670.h:1684
static uint8_t OV7670_YAVE_ADDRESS
Y/G Channel Average Value.
Definition: ov7670.h:664
static uint8_t OV7670_BD60ST_ADDRESS
60 Hz Banding Filter Value
Definition: ov7670.h:1379
static uint8_t OV7670_RSVD_5C_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2223
static uint8_t OV7670_RSVD_91_ADDRESS
Definition: ov7670.h:1327
static uint8_t OV7670_VREF_ADDRESS
Vertical Frame Control (VREF) register.
Definition: ov7670.h:387
static uint8_t OV7670_REG75_RESET_VALUE
REG75 reset.
Definition: ov7670.h:2363
static uint8_t OV7670_AWBCTR1_RESET_VALUE
AWBCTR1 reset.
Definition: ov7670.h:2258
static uint8_t OV7670_CHLF_ADDRESS
Array Current Control (Reserved)
Definition: ov7670.h:692
static uint8_t OV7670_HAECC7_ADDRESS
HAECC7 Histogram-based AEC/AGC Control 7.
Definition: ov7670.h:1462
static uint8_t OV7670_RSVD_8A_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1302
static uint8_t OV7670_RSVD_16_RESET_VALUE
RSVD reset.
Definition: ov7670.h:1978
static uint8_t OV7670_RSVD_4E_ADDRESS
Definition: ov7670.h:830
static uint8_t OV7670_SCALING_XSC_RESET_VALUE
SCALING_XSC reset value.
Definition: ov7670.h:1726
static uint8_t OV7670_RSVD_78_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2496
static uint8_t OV7670_RSVD_8F_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2097
static uint8_t OV7670_RSVD_79_RESET_VALUE_FIVE
RSVD reset.
Definition: ov7670.h:2559
static uint8_t OV7670_COM5_RESET_VALUE
COM5 reset.
Definition: ov7670.h:1964
static uint8_t OV7670_BD50ST_ADDRESS
50 Hz Banding Filter Value
Definition: ov7670.h:1371
static uint8_t OV7670_REG4B_RESET_VALUE
REG4B reset.
Definition: ov7670.h:2398
static uint8_t OV7670_RSVD_BA_ADDRESS
Definition: ov7670.h:1558
static uint8_t OV7670_REG76_ADDRESS
Register 76.
Definition: ov7670.h:1168
static uint8_t OV7670_RSVD_5B_ADDRESS
Definition: ov7670.h:908
static uint8_t OV7670_RSVD_59_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2202
static uint8_t OV7670_RSVD_C5_ADDRESS
Definition: ov7670.h:1610
static uint8_t OV7670_AWBC3_ADDRESS
AWB Control 3.
Definition: ov7670.h:783
static uint8_t OV7670_MTX3_ADDRESS
Matrix Coefficient 3.
Definition: ov7670.h:848
static uint8_t OV7670_RSVD_79_RESET_VALUE_TEN
RSVD reset.
Definition: ov7670.h:2629
static uint8_t OV7670_COM14_RESET_VALUE
COM3 reset value.
Definition: ov7670.h:1719
static uint8_t OV7670_BD50MAX_ADDRESS
BD50MAX register.
Definition: ov7670.h:1432
static uint8_t OV7670_RSVD_B2_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2146
static uint8_t OV7670_VSTART_ADDRESS
Vertical frame start register.
Definition: ov7670.h:484
static uint8_t OV7670_RSVD_79_RESET_VALUE_ONE
RSVD reset.
Definition: ov7670.h:2503
static uint8_t OV7670_MVFP_ADDRESS
Mirror/VFlip image register.
Definition: ov7670.h:531
static uint8_t OV7670_SATCTR_ADDRESS
Saturation Control register.
Definition: ov7670.h:1622
static uint8_t OV7670_ACOM_ADDRESS
ADC and Analog Common Mode Control (Reserved)
Definition: ov7670.h:718
static uint8_t OV7670_ABLC1_ADDRESS
ABLC1 register.
Definition: ov7670.h:1524
static uint8_t OV7670_RSVD_C3_ADDRESS
Definition: ov7670.h:1608
static uint8_t OV7670_RSVD_8D_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2083
static uint8_t OV7670_RSVD_96_RESET_VALUE_ONE
RSVD reset.
Definition: ov7670.h:2118
static uint8_t OV7670_COM12_RESET_VALUE
COM12 reset.
Definition: ov7670.h:2041
static uint8_t OV7670_SCALING_PCLK_DIV_RESET_VALUE
SCALING_PCLK_DIV reset value.
Definition: ov7670.h:1733
static uint8_t OV7670_RSVD_C8_ADDRESS
Definition: ov7670.h:1613
static uint8_t OV7670_HAECC4_RESET_VALUE
HAECC4 reset.
Definition: ov7670.h:1936
static uint8_t OV7670_HAECC4_ADDRESS
HAECC4 Histogram-based AEC/AGC Control 4.
Definition: ov7670.h:1444
static uint8_t OV7670_COM5_ADDRESS
COM5 RW register.
Definition: ov7670.h:114
static uint8_t OV7670_HSYSN_ADDRESS
HSYNC Falling Edge Delay (low 8 bits)
Definition: ov7670.h:676
static uint8_t OV7670_RSVD_C8_RESET_VALUE_SIX
RSVD reset.
Definition: ov7670.h:2580
static uint8_t OV7670_REG76_RESET_VALUE
REG76 reset.
Definition: ov7670.h:2370
static uint8_t OV7670_RSVD_98_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2447
static uint8_t OV7670_RSVD_79_RESET_VALUE_FOUR
RSVD reset.
Definition: ov7670.h:2545
static uint8_t OV7670_COM7_RESET_VALUE
COM7 YUV reset value.
Definition: ov7670.h:1670
static uint8_t OV7670_RSVD_C8_RESET_VALUE_FIVE
RSVD reset.
Definition: ov7670.h:2566
static uint8_t OV7670_RSVD_97_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2440
static uint8_t OV7670_GBBIAS_ADDRESS
Gb channel signal bias.
Definition: ov7670.h:613
static uint8_t OV7670_HAECC6_RESET_VALUE
HAECC6 reset.
Definition: ov7670.h:1943
static uint8_t OV7670_MIDL_ADDRESS
Manufacturer ID Byte (Low) (Read only = 0xA2)
Definition: ov7670.h:514
static uint8_t OV7670_RSVD_C8_RESET_VALUE_TEN
RSVD reset.
Definition: ov7670.h:2636
static uint8_t OV7670_RSVD_9A_RESET_VALUE_ONE
RSVD reset.
Definition: ov7670.h:2125
static uint8_t OV7670_RED_GAIN_ADDRESS
Red channel gain settings.
Definition: ov7670.h:376
static uint8_t OV7670_CONTRAS_ADDRESS
Contrast Control.
Definition: ov7670.h:878
static uint8_t OV7670_VPT_RESET_VALUE
VPT reset.
Definition: ov7670.h:1901
static uint8_t OV7670_AWBC5_RESET_VALUE
AWBC5 reset.
Definition: ov7670.h:2188
static uint8_t OV7670_COM16_RESET_VALUE_ONE
COM16 reset.
Definition: ov7670.h:2349
static uint8_t OV7670_RSVD_98_ADDRESS
Definition: ov7670.h:1359
bool OV7670_init(I2C_HandleTypeDef *hi2c)
Definition: ov7670.c:15
static uint8_t OV7670_DBLV_RESET_VALUE
DBLV reset.
Definition: ov7670.h:2069
static uint8_t OV7670_GAM4_RESET_VALUE
GAM4 Gamma curve 4.
Definition: ov7670.h:1768
static uint8_t OV7670_COM8_RESET_VALUE_THREE
COM8 reset three.
Definition: ov7670.h:2293
static uint8_t OV7670_COM6_ADDRESS
COM6 RW register.
Definition: ov7670.h:129
static uint8_t OV7670_OFON_RESET_VALUE
OFON reset.
Definition: ov7670.h:2034
static uint8_t OV7670_RSVD_C7_ADDRESS
Definition: ov7670.h:1612
static uint8_t OV7670_ADVFL_ADDRESS
LSB of insert dummy rows in vertical direction (1 bit equals 1 row)
Definition: ov7670.h:652
static uint8_t OV7670_RSVD_B8_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2160
static uint8_t OV7670_HSTART_ADDRESS
Horizontal frame start high.
Definition: ov7670.h:468
static uint8_t OV7670_RSVD_9C_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2475
static uint8_t OV7670_STR_B_ADDRESS
B Gain for LED Output Frame.
Definition: ov7670.h:1506
static uint8_t OV7670_COM8_RESET_VALUE_ONE
COM8 reset, disable AGC and AEC first.
Definition: ov7670.h:1852
static uint8_t OV7670_THL_ST_ADDRESS
ABLC Target.
Definition: ov7670.h:1536
static uint8_t OV7670_AWBC1_ADDRESS
AWB Control 1.
Definition: ov7670.h:771
static uint8_t OV7670_RSVD_C2_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1607
static uint8_t OV7670_RSVD_B2_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1530
static uint8_t OV7670_HAECC3_ADDRESS
HAECC3 Histogram-based AEC/AGC Control 3.
Definition: ov7670.h:1438
static uint8_t OV7670_RSVD_35_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2013
static uint8_t OV7670_AWBC6_ADDRESS
AWB Control 6.
Definition: ov7670.h:801
static uint8_t OV7670_GAIN_ADDRESS
Gain control setting.
Definition: ov7670.h:360
static uint8_t OV7670_VSTOP_ADDRESS
Vertical frame stop register.
Definition: ov7670.h:492
static uint8_t OV7670_COM8_ADDRESS
COM8 RW register.
Definition: ov7670.h:173
static uint8_t OV7670_RSVD_35_ADDRESS
Reserved 2.
Definition: ov7670.h:705
static uint8_t OV7670_RSVD_C8_RESET_VALUE_FOUR
RSVD reset.
Definition: ov7670.h:2552
static uint8_t OV7670_NT_CTRL_ADDRESS
NT_CTRL register.
Definition: ov7670.h:1426
static uint8_t OV7670_RSVD_16_ADDRESS
Reserved register (RSVD)
Definition: ov7670.h:460
static uint8_t OV7670_RSVD_79_RESET_VALUE_SIX
RSVD reset.
Definition: ov7670.h:2573
static uint8_t OV7670_LCC5_ADDRESS
Lens Correction Control.
Definition: ov7670.h:964
static uint8_t OV7670_BD60MAX_ADDRESS
BD60MAX register.
Definition: ov7670.h:1468
static uint8_t OV7670_HSTART_RESET_VALUE
HSTART reset, value from OV doesn&#39;t make sense at all.
Definition: ov7670.h:1677
static uint8_t OV7670_RSVD_C8_RESET_VALUE_SEVEN
RSVD reset.
Definition: ov7670.h:2594
static uint8_t OV7670_BLUE_GAIN_ADDRESS
Blue channel gain settings.
Definition: ov7670.h:368
static uint8_t OV7670_COM13_ADDRESS
COM13 RW register.
Definition: ov7670.h:269
static uint8_t OV7670_RSVD_5C_ADDRESS
Definition: ov7670.h:909
static uint8_t OV7670_AWBC4_ADDRESS
AWB Control 4.
Definition: ov7670.h:789
static uint8_t OV7670_LCC3_ADDRESS
Lens Correction Option 3.
Definition: ov7670.h:939
static uint8_t OV7670_VPT_ADDRESS
AGC/AEC Fast Mode Operating Region.
Definition: ov7670.h:591
static uint8_t OV7670_RSVD_4D_ADDRESS
Reserved register 0x4D-0x4E.
Definition: ov7670.h:829
static uint8_t OV7670_GAM5_RESET_VALUE
GAM5 Gamma curve 5.
Definition: ov7670.h:1775
static uint8_t OV7670_AD_CHGB_ADDRESS
Gb Channel Black Level Compensation.
Definition: ov7670.h:1591
static uint8_t OV7670_GFIX_ADDRESS
Fixed Gain Control.
Definition: ov7670.h:1003
static uint8_t OV7670_TSLB_ADDRESS
Line Buffer Test options register.
Definition: ov7670.h:756
static uint8_t OV7670_LCC7_ADDRESS
Lens Correction Option 7 (effective only when LCC5[2] is high)
Definition: ov7670.h:1351
static uint8_t OV7670_GAM15_RESET_VALUE
GAM15 Gamma curve 15.
Definition: ov7670.h:1845
static uint8_t OV7670_RSVD_4D_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2048
static uint8_t OV7670_GAM12_RESET_VALUE
GAM12 Gamma curve 12.
Definition: ov7670.h:1824
static uint8_t OV7670_AWBC6_RESET_VALUE
AWBC6 reset.
Definition: ov7670.h:2195
static uint8_t OV7670_RSVD_79_RESET_VALUE_TWO
RSVD reset.
Definition: ov7670.h:2517
static uint8_t OV7670_COM8_RESET_VALUE_TWO
COM8 reset 2.
Definition: ov7670.h:1957
static uint8_t OV7670_GGAIN_RESET_VALUE
GGAIN reset.
Definition: ov7670.h:2272
static uint8_t OV7670_GAM9_ADDRESS
Gamma Curve register 9.
Definition: ov7670.h:1254
static uint8_t OV7670_COM14_ADDRESS
COM14 RW register.
Definition: ov7670.h:292
static uint8_t OV7670_HSTOP_ADDRESS
Horizontal frame end high.
Definition: ov7670.h:476
static uint8_t OV7670_GGAIN_ADDRESS
G Channel AWB Gain.
Definition: ov7670.h:1009
static uint8_t OV7670_RSVD_29_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:619
static uint8_t OV7670_COM4_RESET_VALUE
COM4 reset, magic reserved 6th bit.
Definition: ov7670.h:1859
static uint8_t OV7670_MANV_ADDRESS
Manual V Value (effective only when register TSLB[4] is high)
Definition: ov7670.h:976
static uint8_t OV7670_GAM3_RESET_VALUE
GAM3 Gamma curve 3.
Definition: ov7670.h:1761
static uint8_t OV7670_RSVD_96_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1357
static uint8_t OV7670_RSVD_79_RESET_VALUE_FINAL
RSVD reset.
Definition: ov7670.h:2657
static uint8_t OV7670_REG4B_ADDRESS
Register 4B.
Definition: ov7670.h:817
static uint8_t OV7670_RSVD_79_RESET_VALUE_EIGHT
RSVD reset.
Definition: ov7670.h:2601
static uint8_t OV7670_ADCCTR0_ADDRESS
ADC control register 0.
Definition: ov7670.h:552
static uint8_t OV7670_AEW_ADDRESS
AGC/AEC - Stable Operating Region (Upper Limit)
Definition: ov7670.h:576
static uint8_t OV7670_REG74_ADDRESS
Register 74.
Definition: ov7670.h:1144
static uint8_t OV7670_GAM2_ADDRESS
Gamma Curve register 2.
Definition: ov7670.h:1205
static uint8_t OV7670_RSVD_5E_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2237
static uint8_t OV7670_AEB_RESET_VALUE
AEB reset.
Definition: ov7670.h:1894
static uint8_t OV7670_PSHIFT_ADDRESS
Pixel delay shift register.
Definition: ov7670.h:502
static uint8_t OV7670_STR_G_ADDRESS
G Gain for LED Output Frame.
Definition: ov7670.h:1500
static uint8_t OV7670_RSVD_9A_RESET_VALUE_TWO
RSVD reset.
Definition: ov7670.h:2461
static uint8_t OV7670_SCALING_DCWCTR_ADDRESS
DCW Control register.
Definition: ov7670.h:1108
static uint8_t OV7670_GAM13_ADDRESS
Gamma Curve register 13.
Definition: ov7670.h:1282
static uint8_t OV7670_AWBCTR3_RESET_VALUE
AWBCTR3 reset.
Definition: ov7670.h:2244
static uint8_t OV7670_RSVD_99_ADDRESS
Definition: ov7670.h:1360
static uint8_t OV7670_RSVD_79_RESET_VALUE_NINE
RSVD reset.
Definition: ov7670.h:2615
static uint8_t OV7670_RSVD_5A_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2209
static uint8_t OV7670_GAM15_ADDRESS
Gamma Curve register 15.
Definition: ov7670.h:1296
static uint8_t OV7670_LAEC_ADDRESS
LAEC register (Reserved)
Definition: ov7670.h:537
static uint8_t OV7670_RSVD_BD_ADDRESS
Definition: ov7670.h:1561
static uint8_t OV7670_BD60MAX_RESET_VALUE
BD60MAX reset 0000 0111.
Definition: ov7670.h:1880
static uint8_t OV7670_RSVD_9B_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2468
static uint8_t OV7670_GAM12_ADDRESS
Gamma Curve register 12.
Definition: ov7670.h:1275
static uint8_t OV7670_BRIGHT_ADDRESS
Brightness Control.
Definition: ov7670.h:872
static uint8_t OV7670_RSVD_B4_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1542
static uint8_t OV7670_MTXS_RESET_VALUE
MTXS reset.
Definition: ov7670.h:2342
static uint8_t OV7670_HREF_ADDRESS
HREF Control register.
Definition: ov7670.h:686
static uint8_t OV7670_READ_ADDRESS
SCCB camera read slave address.
Definition: ov7670.h:26
static uint8_t OV7670_RSVD_A1_RESET_VALUE
Reserved magic again.
Definition: ov7670.h:1922
static uint8_t OV7670_HAECC6_ADDRESS
HAECC6 Histogram-based AEC/AGC Control 6.
Definition: ov7670.h:1456
static uint8_t OV7670_HAECC2_RESET_VALUE
HAECC2 reset.
Definition: ov7670.h:1915
static uint8_t OV7670_AEW_RESET_VALUE
AEW reset.
Definition: ov7670.h:1887
static uint8_t OV7670_MTX1_RESET_VALUE
MTX1 reset.
Definition: ov7670.h:2300
static uint8_t OV7670_RSVD_36_ADDRESS
Definition: ov7670.h:706
static uint8_t OV7670_BLUE_GAIN_RESET_VALUE
BLUE Gain reset.
Definition: ov7670.h:2279
static uint8_t OV7670_RSVD_BC_ADDRESS
Definition: ov7670.h:1560
static uint8_t OV7670_GAM7_RESET_VALUE
GAM7 Gamma curve 7.
Definition: ov7670.h:1789
static uint8_t OV7670_COM6_RESET_VALUE
COM6 reset.
Definition: ov7670.h:1971
static uint8_t OV7670_ADCCTR3_ADDRESS
ADC control register 3 (Reserved)
Definition: ov7670.h:570
static uint8_t OV7670_ADCCTR2_RESET_VALUE
ADCCTR2 reset.
Definition: ov7670.h:1992
static uint8_t OV7670_RSVD_79_ADDRESS
Definition: ov7670.h:1183
static uint8_t OV7670_CLKRC_ADDRESS
CLKRC RW register.
Definition: ov7670.h:454
static uint8_t OV7670_AD_CHB_ADDRESS
Blue Channel Black Level Compensation.
Definition: ov7670.h:1571
static uint8_t OV7670_LCC4_ADDRESS
Lens Correction Option 4.
Definition: ov7670.h:947
static uint8_t OV7670_VER_ADDRESS
Product ID Number LSB (Read only)
Definition: ov7670.h:433
static uint8_t OV7670_SCALING_YSC_ADDRESS
SCALING_YSC register.
Definition: ov7670.h:1079
static uint8_t OV7670_GAM6_ADDRESS
Gamma Curve register 6.
Definition: ov7670.h:1233
static uint8_t OV7670_RSVD_8B_ADDRESS
Definition: ov7670.h:1303
I2C_HandleTypeDef * OV7670_I2C
Functions and other variables!
Definition: ov7670.c:13
static uint8_t OV7670_GAM1_RESET_VALUE
GAM1 Gamma curve 1.
Definition: ov7670.h:1747
static uint8_t OV7670_AWBC4_RESET_VALUE
AWBC4 reset.
Definition: ov7670.h:2181
static uint8_t OV7670_AWBC5_ADDRESS
AWB Control 5.
Definition: ov7670.h:795
static uint8_t OV7670_AECH_ADDRESS
Exposure settings register.
Definition: ov7670.h:442
static uint8_t OV7670_GAM3_ADDRESS
Gamma Curve register 3.
Definition: ov7670.h:1212
static uint8_t OV7670_GAM5_ADDRESS
Gamma Curve register 5.
Definition: ov7670.h:1226
static uint8_t OV7670_RSVD_8E_ADDRESS
Definition: ov7670.h:1324
static uint8_t OV7670_GAM1_ADDRESS
Gamma Curve register 1.
Definition: ov7670.h:1198
static uint8_t OV7670_RSVD_A3_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1409
static uint8_t OV7670_HAECC2_ADDRESS
HAECC1 Histogram-based AEC/AGC Control 2.
Definition: ov7670.h:1391
static uint8_t OV7670_REG77_RESET_VALUE
REG77 reset.
Definition: ov7670.h:2384
static uint8_t OV7670_RSVD_B9_ADDRESS
Definition: ov7670.h:1557
static uint8_t OV7670_RSVD_C8_RESET_VALUE_NINE
RSVD reset.
Definition: ov7670.h:2622
static uint8_t OV7670_CONTRAS_CENTER_ADDRESS
Contrast Center.
Definition: ov7670.h:884
static uint8_t OV7670_LCC2_ADDRESS
Lens Correction Option 2.
Definition: ov7670.h:930
static uint8_t OV7670_RSVD_4A_ADDRESS
Definition: ov7670.h:808
static uint8_t OV7670_RSVD_99_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2454
static uint8_t OV7670_GFIX_RESET_VALUE
GFIX reset.
Definition: ov7670.h:2062
static uint8_t OV7670_BAVE_ADDRESS
U/B Average Level register.
Definition: ov7670.h:395
static uint8_t OV7670_MTX4_ADDRESS
Matrix Coefficient 4.
Definition: ov7670.h:854
static uint8_t OV7670_BBIAS_ADDRESS
B channel signal bias.
Definition: ov7670.h:602
static uint8_t OV7670_HAECC1_RESET_VALUE
HAECC1 reset.
Definition: ov7670.h:1908
static uint8_t OV7670_COM13_RESET_VALUE
COM13 reset.
Definition: ov7670.h:2391
static uint8_t OV7670_GAM11_ADDRESS
Gamma Curve register 11.
Definition: ov7670.h:1268
static uint8_t OV7670_RSVD_5B_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2216
static uint8_t OV7670_REG75_ADDRESS
Register 75.
Definition: ov7670.h:1153
static uint8_t OV7670_COM2_ADDRESS
COM2 RW register.
Definition: ov7670.h:64
static uint8_t OV7670_MTXS_ADDRESS
Matrix Coefficient Sign register.
Definition: ov7670.h:900
static uint8_t OV7670_AWBCTR1_ADDRESS
AWB Control 1 return 0x6E.
Definition: ov7670.h:1045
static uint8_t OV7670_RSVD_B0_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1512
static uint8_t OV7670_COM12_ADDRESS
COM12 RW register.
Definition: ov7670.h:251
static uint8_t OV7670_RSVD_C8_RESET_VALUE_THREE
RSVD reset.
Definition: ov7670.h:2538
static uint8_t OV7670_EDGE_RESET_VALUE
EDGE reset.
Definition: ov7670.h:2356
static uint8_t OV7670_CHLF_RESET_VALUE
CHLF reset value, reserved.
Definition: ov7670.h:2006
static uint8_t OV7670_RSVD_C8_RESET_VALUE_ELEVEN
RSVD reset.
Definition: ov7670.h:2650
static uint8_t OV7670_AD_CHGR_ADDRESS
Gr Channel Black Level Compensation.
Definition: ov7670.h:1601
static uint8_t OV7670_AWBC1_RESET_VALUE
AWBC1 reset.
Definition: ov7670.h:2167
static uint8_t OV7670_GAM11_RESET_VALUE
GAM11 Gamma curve 11.
Definition: ov7670.h:1817
static uint8_t OV7670_RSVD_B0_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2132
static uint8_t OV7670_RSVD_C6_ADDRESS
Definition: ov7670.h:1611
static uint8_t OV7670_AWBCTR3_ADDRESS
AWB Control 3 return 0x6C.
Definition: ov7670.h:1033
static uint8_t OV7670_COM11_ADDRESS
COM11 RW register.
Definition: ov7670.h:240
static uint8_t OV7670_COM7_ADDRESS
COM7 RW register.
Definition: ov7670.h:153
static uint8_t OV7670_BD50ST_RESET_VALUE
BD50ST reset.
Definition: ov7670.h:2482
static uint8_t OV7670_WRITE_ADDRESS
SCCB camera write slave address.
Definition: ov7670.h:20
static uint8_t OV7670_RAVE_ADDRESS
V/R Average Level.
Definition: ov7670.h:421
static uint8_t OV7670_GAM9_RESET_VALUE
GAM9 Gamma curve 9.
Definition: ov7670.h:1803
static uint8_t OV7670_MTX1_ADDRESS
Matrix Coefficient 1.
Definition: ov7670.h:836
static uint8_t OV7670_RSVD_79_RESET_VALUE_SEVEN
RSVD reset.
Definition: ov7670.h:2587
static uint8_t OV7670_COM17_ADDRESS
COM17 RW register.
Definition: ov7670.h:351
static uint8_t OV7670_DBLV_ADDRESS
DBLV register.
Definition: ov7670.h:1027
static uint8_t OV7670_HAECC3_RESET_VALUE
HAECC3 reset.
Definition: ov7670.h:1929
static uint8_t OV7670_RSVD_5E_ADDRESS
Definition: ov7670.h:911
static uint8_t OV7670_THL_ST_RESET_VALUE
THL_ST reset.
Definition: ov7670.h:2153
static uint8_t OV7670_BD60ST_RESET_VALUE
BD60ST reset.
Definition: ov7670.h:2489
static uint8_t OV7670_COM16_RESET_VALUE_TWO
COM16 reset.
Definition: ov7670.h:2412
static uint8_t OV7670_RSVD_8D_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1323
static uint8_t OV7670_RSVD_96_RESET_VALUE_TWO
RSVD reset.
Definition: ov7670.h:2433
static uint8_t OV7670_GAM14_RESET_VALUE
GAM14 Gamma curve 14.
Definition: ov7670.h:1838
static uint8_t OV7670_GBAVE_ADDRESS
Y/Gb Average Level register.
Definition: ov7670.h:403
static uint8_t OV7670_MTX2_RESET_VALUE
MTX2 reset.
Definition: ov7670.h:2307
static uint8_t OV7670_SLOP_ADDRESS
SLOP register.
Definition: ov7670.h:1191
static uint8_t OV7670_MIDH_ADDRESS
Manufacturer ID Byte (High) (Read only = 0x7F)
Definition: ov7670.h:508
static uint8_t OV7670_GAM8_ADDRESS
Gamma Curve register 8.
Definition: ov7670.h:1247
static uint8_t OV7670_RSVD_5D_ADDRESS
Definition: ov7670.h:910
static uint8_t OV7670_SATCTR_RESET_VALUE
SATCTR reset.
Definition: ov7670.h:2405
static uint8_t OV7670_RSVD_97_ADDRESS
Definition: ov7670.h:1358
static uint8_t OV7670_RSVD_61_ADDRESS
Definition: ov7670.h:914
static uint8_t OV7670_TSLB_RESET_VALUE
TSLB magic reserved bit.
Definition: ov7670.h:1663
static uint8_t OV7670_ARBLM_ADDRESS
Array Reference Control (Reserved)
Definition: ov7670.h:699
static uint8_t OV7670_NT_CTRL_RESET_VALUE
NT_CTRL reset.
Definition: ov7670.h:2426
static uint8_t OV7670_ADCCTR1_ADDRESS
ADC control register 1 (Reserved)
Definition: ov7670.h:558
static uint8_t OV7670_COM4_ADDRESS
COM4 RW register.
Definition: ov7670.h:106
static uint8_t OV7670_HAECC5_ADDRESS
HAECC5 Histogram-based AEC/AGC Control 5.
Definition: ov7670.h:1450
static uint8_t OV7670_AWBCTR0_RESET_VALUE
AWBCTR0 reset.
Definition: ov7670.h:2265
static uint8_t OV7670_STR_OPT_ADDRESS
STR-OPT register.
Definition: ov7670.h:1488
static uint8_t OV7670_HAECC7_RESET_VALUE
HAECC7 reset.
Definition: ov7670.h:1950
static uint8_t OV7670_GAM10_RESET_VALUE
GAM10 Gamma curve 10.
Definition: ov7670.h:1810
static uint8_t OV7670_COM9_RESET_VALUE
COM9 reset, magic reserved, 4x gain ceiling.
Definition: ov7670.h:1866
static uint8_t OV7670_RGB444_ADDRESS
RGB444 register.
Definition: ov7670.h:1317
static uint8_t OV7670_REG77_ADDRESS
Register 77.
Definition: ov7670.h:1176
static uint8_t OV7670_RSVD_91_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2111
static uint8_t OV7670_RSVD_B6_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1554
static uint8_t OV7670_HREF_RESET_VALUE
HREF reset, MSB bits from HSTART AND HSTOP.
Definition: ov7670.h:1691
static uint8_t OV7670_RSVD_90_RESET_VALUE
RSVD reset.
Definition: ov7670.h:2104
static uint8_t OV7670_MTX5_ADDRESS
Matrix Coefficient 5.
Definition: ov7670.h:860
static uint8_t OV7670_MTX6_ADDRESS
Matrix Coefficient 6.
Definition: ov7670.h:866
static uint8_t OV7670_ABLC1_RESET_VALUE
ABLC1 reset.
Definition: ov7670.h:2139
static uint8_t OV7670_COM10_ADDRESS
COM10 RW register.
Definition: ov7670.h:211
static uint8_t OV7670_MTX4_RESET_VALUE
MTX4 reset.
Definition: ov7670.h:2321
static uint8_t OV7670_SCALING_PCLK_DELAY_ADDRESS
Pixel Clock Delay.
Definition: ov7670.h:1403
static uint8_t OV7670_RSVD_9A_ADDRESS
Definition: ov7670.h:1361
static uint8_t OV7670_AWBCTR0_ADDRESS
AWB Control 0 return 0x6F.
Definition: ov7670.h:1051
static uint8_t OV7670_MTX6_RESET_VALUE
MTX6 reset.
Definition: ov7670.h:2335
static uint8_t OV7670_AEB_ADDRESS
AGC/AEC - Stable Operating Region (Lower Limit)
Definition: ov7670.h:582
static uint8_t OV7670_COM9_ADDRESS
COM9 RW register.
Definition: ov7670.h:192
static uint8_t OV7670_DM_LNL_ADDRESS
Dummy Row low 8 bits register.
Definition: ov7670.h:1333
static uint8_t OV7670_GAM7_ADDRESS
Gamma Curve register 7.
Definition: ov7670.h:1240
static uint8_t OV7670_GAM14_ADDRESS
Gamma Curve register 14.
Definition: ov7670.h:1289
static uint8_t OV7670_ADC_RESET_VALUE
ADC reset.
Definition: ov7670.h:2020
static uint8_t OV7670_SCALING_XSC_ADDRESS
SCALING_XSC register.
Definition: ov7670.h:1065
static uint8_t OV7670_RSVD_79_RESET_VALUE_ELEVEN
RSVD reset.
Definition: ov7670.h:2643
static uint8_t OV7670_RSVD_78_ADDRESS
RSVD (Reserved)
Definition: ov7670.h:1182
static uint8_t OV7670_GAM8_RESET_VALUE
GAM8 Gamma curve 8.
Definition: ov7670.h:1796
static uint8_t OV7670_AWBC3_RESET_VALUE
AWBC3 reset.
Definition: ov7670.h:2174
static uint8_t OV7670_OFON_ADDRESS
ADC Offset Control.
Definition: ov7670.h:724
static uint8_t OV7670_MTX2_ADDRESS
Matrix Coefficient 2.
Definition: ov7670.h:842
static uint8_t OV7670_THL_DLT_ADDRESS
ABLC Stable Range.
Definition: ov7670.h:1548