OV5642 initialisation speed and redundancy

1.Which seller did you purchase the product(s) from?
Kubii
2.The Model number of the product(s) you have purchased?

3.Which Platform are you using the product(s) on?
Arduino UNO R3
4.Which instruction are you following?
I’m using exemple sketch of the Arducam Library
5.Has your product ever worked properly?
Working quite well
6.What problems are you experiencing?
I got the Arducam camera OV5642 plus one week ago for professional use and try to understand how this nice little thing works. I got some jpg images with quite good quality in low luminosity environment.

  1. Question 1: With the example sketch Mini_5MP_Plus_OV5642 I got a initialization time (initCAM()) of 7 sec ! which is not acceptable. I took a close look at the registers and found that among 4700 registers which are set, 4400 are useless since they have already the correct value. The reset “wrSensorReg16_8(0x3008, 0x80);” in initCAM() should put all registers to their default value. So I don’t understand why so many registers are set, especially the 4100 registers (0x8000-0x902D) corresponding to the MCU firmware. I reduced the initialization time by a factor 5 by removing them without visible change. Is it correct to remove them?

  2. In the same idea, I’m studying the initialization step proposed by Omnivision application Notes or the one in the Arducam Library:

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwirqfPHtvvvAhUaDWMBHRjOAB0QFjAAegQIBRAD&url=http%3A%2F%2Fwww.arducam.com%2Fdownloads%2Fmodules%2FOV5642%2FOV5642_camera_module_software_application_notes_1.1.pdf&usg=AOvVaw3rABIibamcW_JmxqFeRP0f

This is where I found strange things I don’t understand. I analyzed one by one the 300 registers of the initialization procedure of 13.1.1 VGA Preview. There are many redundancies since the same registers are set several times, generally with different values. Not only the DeNoise registers are set 3 times ! with different values, but the same register is sometimes set two times and the corresponding function calls are very close:

Register redundancy

Is there some magic one should understand behind this (since they are undocumented register like 3824 between ) ? Or is it simply badly written documentation/implementation ?

7.What attempts at troubleshooting have you already made?

8.How would you like us to help you?

Please send your issue to our [email protected] and our engineer will help you solve your issue.