Library to control Silicon Labs SI570 10 MHZ TO 1.4 GHZ I2C PROGRAMMABLE XO/VCXO.

Dependencies:   mbed

Fork of SI570 by Gerrit Polder

Committer:
DL3LD
Date:
Sun Mar 27 06:55:59 2016 +0000
Revision:
1:1556bcaaf759
STM32F746NG SI570 VFO Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DL3LD 1:1556bcaaf759 1 /**
DL3LD 1:1556bcaaf759 2 ******************************************************************************
DL3LD 1:1556bcaaf759 3 * @file ov9655.c
DL3LD 1:1556bcaaf759 4 * @author MCD Application Team
DL3LD 1:1556bcaaf759 5 * @version V1.0.0
DL3LD 1:1556bcaaf759 6 * @date 25-June-2015
DL3LD 1:1556bcaaf759 7 * @brief This file provides the OV9655 camera driver
DL3LD 1:1556bcaaf759 8 ******************************************************************************
DL3LD 1:1556bcaaf759 9 * @attention
DL3LD 1:1556bcaaf759 10 *
DL3LD 1:1556bcaaf759 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
DL3LD 1:1556bcaaf759 12 *
DL3LD 1:1556bcaaf759 13 * Redistribution and use in source and binary forms, with or without modification,
DL3LD 1:1556bcaaf759 14 * are permitted provided that the following conditions are met:
DL3LD 1:1556bcaaf759 15 * 1. Redistributions of source code must retain the above copyright notice,
DL3LD 1:1556bcaaf759 16 * this list of conditions and the following disclaimer.
DL3LD 1:1556bcaaf759 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
DL3LD 1:1556bcaaf759 18 * this list of conditions and the following disclaimer in the documentation
DL3LD 1:1556bcaaf759 19 * and/or other materials provided with the distribution.
DL3LD 1:1556bcaaf759 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
DL3LD 1:1556bcaaf759 21 * may be used to endorse or promote products derived from this software
DL3LD 1:1556bcaaf759 22 * without specific prior written permission.
DL3LD 1:1556bcaaf759 23 *
DL3LD 1:1556bcaaf759 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
DL3LD 1:1556bcaaf759 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
DL3LD 1:1556bcaaf759 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DL3LD 1:1556bcaaf759 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
DL3LD 1:1556bcaaf759 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DL3LD 1:1556bcaaf759 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
DL3LD 1:1556bcaaf759 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
DL3LD 1:1556bcaaf759 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
DL3LD 1:1556bcaaf759 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
DL3LD 1:1556bcaaf759 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
DL3LD 1:1556bcaaf759 34 *
DL3LD 1:1556bcaaf759 35 ******************************************************************************
DL3LD 1:1556bcaaf759 36 */
DL3LD 1:1556bcaaf759 37
DL3LD 1:1556bcaaf759 38 /* Includes ------------------------------------------------------------------*/
DL3LD 1:1556bcaaf759 39 #include "ov9655.h"
DL3LD 1:1556bcaaf759 40
DL3LD 1:1556bcaaf759 41 /** @addtogroup BSP
DL3LD 1:1556bcaaf759 42 * @{
DL3LD 1:1556bcaaf759 43 */
DL3LD 1:1556bcaaf759 44
DL3LD 1:1556bcaaf759 45 /** @addtogroup Components
DL3LD 1:1556bcaaf759 46 * @{
DL3LD 1:1556bcaaf759 47 */
DL3LD 1:1556bcaaf759 48
DL3LD 1:1556bcaaf759 49 /** @addtogroup OV9655
DL3LD 1:1556bcaaf759 50 * @brief This file provides a set of functions needed to drive the
DL3LD 1:1556bcaaf759 51 * OV9655 Camera module.
DL3LD 1:1556bcaaf759 52 * @{
DL3LD 1:1556bcaaf759 53 */
DL3LD 1:1556bcaaf759 54
DL3LD 1:1556bcaaf759 55 /** @defgroup OV9655_Private_TypesDefinitions
DL3LD 1:1556bcaaf759 56 * @{
DL3LD 1:1556bcaaf759 57 */
DL3LD 1:1556bcaaf759 58
DL3LD 1:1556bcaaf759 59 /**
DL3LD 1:1556bcaaf759 60 * @}
DL3LD 1:1556bcaaf759 61 */
DL3LD 1:1556bcaaf759 62
DL3LD 1:1556bcaaf759 63 /** @defgroup OV9655_Private_Defines
DL3LD 1:1556bcaaf759 64 * @{
DL3LD 1:1556bcaaf759 65 */
DL3LD 1:1556bcaaf759 66
DL3LD 1:1556bcaaf759 67 /**
DL3LD 1:1556bcaaf759 68 * @}
DL3LD 1:1556bcaaf759 69 */
DL3LD 1:1556bcaaf759 70
DL3LD 1:1556bcaaf759 71 /** @defgroup OV9655_Private_Macros
DL3LD 1:1556bcaaf759 72 * @{
DL3LD 1:1556bcaaf759 73 */
DL3LD 1:1556bcaaf759 74
DL3LD 1:1556bcaaf759 75 /**
DL3LD 1:1556bcaaf759 76 * @}
DL3LD 1:1556bcaaf759 77 */
DL3LD 1:1556bcaaf759 78
DL3LD 1:1556bcaaf759 79 /** @defgroup OV9655_Private_FunctionPrototypes
DL3LD 1:1556bcaaf759 80 * @{
DL3LD 1:1556bcaaf759 81 */
DL3LD 1:1556bcaaf759 82 static uint64_t ov9655_ConvertValue(uint32_t feature, uint32_t value);
DL3LD 1:1556bcaaf759 83 /**
DL3LD 1:1556bcaaf759 84 * @}
DL3LD 1:1556bcaaf759 85 */
DL3LD 1:1556bcaaf759 86
DL3LD 1:1556bcaaf759 87 /** @defgroup OV9655_Private_Variables
DL3LD 1:1556bcaaf759 88 * @{
DL3LD 1:1556bcaaf759 89 */
DL3LD 1:1556bcaaf759 90
DL3LD 1:1556bcaaf759 91 CAMERA_DrvTypeDef ov9655_drv =
DL3LD 1:1556bcaaf759 92 {
DL3LD 1:1556bcaaf759 93 ov9655_Init,
DL3LD 1:1556bcaaf759 94 ov9655_ReadID,
DL3LD 1:1556bcaaf759 95 ov9655_Config,
DL3LD 1:1556bcaaf759 96 };
DL3LD 1:1556bcaaf759 97
DL3LD 1:1556bcaaf759 98 /* Initialization sequence for VGA resolution (640x480)*/
DL3LD 1:1556bcaaf759 99 const unsigned char OV9655_VGA[][2]=
DL3LD 1:1556bcaaf759 100 {
DL3LD 1:1556bcaaf759 101 {0x00, 0x00},
DL3LD 1:1556bcaaf759 102 {0x01, 0x80},
DL3LD 1:1556bcaaf759 103 {0x02, 0x80},
DL3LD 1:1556bcaaf759 104 {0xb5, 0x00},
DL3LD 1:1556bcaaf759 105 {0x35, 0x00},
DL3LD 1:1556bcaaf759 106 {0xa8, 0xc1},
DL3LD 1:1556bcaaf759 107 {0x3a, 0xcc},
DL3LD 1:1556bcaaf759 108 {0x3d, 0x99},
DL3LD 1:1556bcaaf759 109 {0x77, 0x02},
DL3LD 1:1556bcaaf759 110 {0x13, 0xe7},
DL3LD 1:1556bcaaf759 111 {0x26, 0x72},
DL3LD 1:1556bcaaf759 112 {0x27, 0x08},
DL3LD 1:1556bcaaf759 113 {0x28, 0x08},
DL3LD 1:1556bcaaf759 114 {0x2c, 0x08},
DL3LD 1:1556bcaaf759 115 {0xab, 0x04},
DL3LD 1:1556bcaaf759 116 {0x6e, 0x00},
DL3LD 1:1556bcaaf759 117 {0x6d, 0x55},
DL3LD 1:1556bcaaf759 118 {0x00, 0x11},
DL3LD 1:1556bcaaf759 119 {0x10, 0x7b},
DL3LD 1:1556bcaaf759 120 {0xbb, 0xae},
DL3LD 1:1556bcaaf759 121 {0x11, 0x03},
DL3LD 1:1556bcaaf759 122 {0x72, 0x00},
DL3LD 1:1556bcaaf759 123 {0x3e, 0x0c},
DL3LD 1:1556bcaaf759 124 {0x74, 0x3a},
DL3LD 1:1556bcaaf759 125 {0x76, 0x01},
DL3LD 1:1556bcaaf759 126 {0x75, 0x35},
DL3LD 1:1556bcaaf759 127 {0x73, 0x00},
DL3LD 1:1556bcaaf759 128 {0xc7, 0x80},
DL3LD 1:1556bcaaf759 129 {0x62, 0x00},
DL3LD 1:1556bcaaf759 130 {0x63, 0x00},
DL3LD 1:1556bcaaf759 131 {0x64, 0x02},
DL3LD 1:1556bcaaf759 132 {0x65, 0x20},
DL3LD 1:1556bcaaf759 133 {0x66, 0x01},
DL3LD 1:1556bcaaf759 134 {0xc3, 0x4e},
DL3LD 1:1556bcaaf759 135 {0x33, 0x00},
DL3LD 1:1556bcaaf759 136 {0xa4, 0x50},
DL3LD 1:1556bcaaf759 137 {0xaa, 0x92},
DL3LD 1:1556bcaaf759 138 {0xc2, 0x01},
DL3LD 1:1556bcaaf759 139 {0xc1, 0xc8},
DL3LD 1:1556bcaaf759 140 {0x1e, 0x04},
DL3LD 1:1556bcaaf759 141 {0xa9, 0xef},
DL3LD 1:1556bcaaf759 142 {0x0e, 0x61},
DL3LD 1:1556bcaaf759 143 {0x39, 0x57},
DL3LD 1:1556bcaaf759 144 {0x0f, 0x48},
DL3LD 1:1556bcaaf759 145 {0x24, 0x3c},
DL3LD 1:1556bcaaf759 146 {0x25, 0x36},
DL3LD 1:1556bcaaf759 147 {0x12, 0x63},
DL3LD 1:1556bcaaf759 148 {0x03, 0x12},
DL3LD 1:1556bcaaf759 149 {0x32, 0xff},
DL3LD 1:1556bcaaf759 150 {0x17, 0x16},
DL3LD 1:1556bcaaf759 151 {0x18, 0x02},
DL3LD 1:1556bcaaf759 152 {0x19, 0x01},
DL3LD 1:1556bcaaf759 153 {0x1a, 0x3d},
DL3LD 1:1556bcaaf759 154 {0x36, 0xfa},
DL3LD 1:1556bcaaf759 155 {0x69, 0x0a},
DL3LD 1:1556bcaaf759 156 {0x8c, 0x8d},
DL3LD 1:1556bcaaf759 157 {0xc0, 0xaa},
DL3LD 1:1556bcaaf759 158 {0x40, 0xd0},
DL3LD 1:1556bcaaf759 159 {0x43, 0x14},
DL3LD 1:1556bcaaf759 160 {0x44, 0xf0},
DL3LD 1:1556bcaaf759 161 {0x45, 0x46},
DL3LD 1:1556bcaaf759 162 {0x46, 0x62},
DL3LD 1:1556bcaaf759 163 {0x47, 0x2a},
DL3LD 1:1556bcaaf759 164 {0x48, 0x3c},
DL3LD 1:1556bcaaf759 165 {0x59, 0x85},
DL3LD 1:1556bcaaf759 166 {0x5a, 0xa9},
DL3LD 1:1556bcaaf759 167 {0x5b, 0x64},
DL3LD 1:1556bcaaf759 168 {0x5c, 0x84},
DL3LD 1:1556bcaaf759 169 {0x5d, 0x53},
DL3LD 1:1556bcaaf759 170 {0x5e, 0x0e},
DL3LD 1:1556bcaaf759 171 {0x6c, 0x0c},
DL3LD 1:1556bcaaf759 172 {0xc6, 0x85},
DL3LD 1:1556bcaaf759 173 {0xcb, 0xf0},
DL3LD 1:1556bcaaf759 174 {0xcc, 0xd8},
DL3LD 1:1556bcaaf759 175 {0x71, 0x78},
DL3LD 1:1556bcaaf759 176 {0xa5, 0x68},
DL3LD 1:1556bcaaf759 177 {0x6f, 0x9e},
DL3LD 1:1556bcaaf759 178 {0x42, 0xc0},
DL3LD 1:1556bcaaf759 179 {0x3f, 0x82},
DL3LD 1:1556bcaaf759 180 {0x8a, 0x23},
DL3LD 1:1556bcaaf759 181 {0x14, 0x3a},
DL3LD 1:1556bcaaf759 182 {0x3b, 0xcc},
DL3LD 1:1556bcaaf759 183 {0x34, 0x3d},
DL3LD 1:1556bcaaf759 184 {0x41, 0x40},
DL3LD 1:1556bcaaf759 185 {0xc9, 0xe0},
DL3LD 1:1556bcaaf759 186 {0xca, 0xe8},
DL3LD 1:1556bcaaf759 187 {0xcd, 0x93},
DL3LD 1:1556bcaaf759 188 {0x7a, 0x20},
DL3LD 1:1556bcaaf759 189 {0x7b, 0x1c},
DL3LD 1:1556bcaaf759 190 {0x7c, 0x28},
DL3LD 1:1556bcaaf759 191 {0x7d, 0x3c},
DL3LD 1:1556bcaaf759 192 {0x7e, 0x5a},
DL3LD 1:1556bcaaf759 193 {0x7f, 0x68},
DL3LD 1:1556bcaaf759 194 {0x80, 0x76},
DL3LD 1:1556bcaaf759 195 {0x81, 0x80},
DL3LD 1:1556bcaaf759 196 {0x82, 0x88},
DL3LD 1:1556bcaaf759 197 {0x83, 0x8f},
DL3LD 1:1556bcaaf759 198 {0x84, 0x96},
DL3LD 1:1556bcaaf759 199 {0x85, 0xa3},
DL3LD 1:1556bcaaf759 200 {0x86, 0xaf},
DL3LD 1:1556bcaaf759 201 {0x87, 0xc4},
DL3LD 1:1556bcaaf759 202 {0x88, 0xd7},
DL3LD 1:1556bcaaf759 203 {0x89, 0xe8},
DL3LD 1:1556bcaaf759 204 {0x4f, 0x98},
DL3LD 1:1556bcaaf759 205 {0x50, 0x98},
DL3LD 1:1556bcaaf759 206 {0x51, 0x00},
DL3LD 1:1556bcaaf759 207 {0x52, 0x28},
DL3LD 1:1556bcaaf759 208 {0x53, 0x70},
DL3LD 1:1556bcaaf759 209 {0x54, 0x98},
DL3LD 1:1556bcaaf759 210 {0x58, 0x1a},
DL3LD 1:1556bcaaf759 211 {0x6b, 0x5a},
DL3LD 1:1556bcaaf759 212 {0x90, 0x92},
DL3LD 1:1556bcaaf759 213 {0x91, 0x92},
DL3LD 1:1556bcaaf759 214 {0x9f, 0x90},
DL3LD 1:1556bcaaf759 215 {0xa0, 0x90},
DL3LD 1:1556bcaaf759 216 {0x16, 0x24},
DL3LD 1:1556bcaaf759 217 {0x2a, 0x00},
DL3LD 1:1556bcaaf759 218 {0x2b, 0x00},
DL3LD 1:1556bcaaf759 219 {0xac, 0x80},
DL3LD 1:1556bcaaf759 220 {0xad, 0x80},
DL3LD 1:1556bcaaf759 221 {0xae, 0x80},
DL3LD 1:1556bcaaf759 222 {0xaf, 0x80},
DL3LD 1:1556bcaaf759 223 {0xb2, 0xf2},
DL3LD 1:1556bcaaf759 224 {0xb3, 0x20},
DL3LD 1:1556bcaaf759 225 {0xb4, 0x20},
DL3LD 1:1556bcaaf759 226 {0xb6, 0xaf},
DL3LD 1:1556bcaaf759 227 {0x29, 0x15},
DL3LD 1:1556bcaaf759 228 {0x9d, 0x02},
DL3LD 1:1556bcaaf759 229 {0x9e, 0x02},
DL3LD 1:1556bcaaf759 230 {0x9e, 0x02},
DL3LD 1:1556bcaaf759 231 {0x04, 0x03},
DL3LD 1:1556bcaaf759 232 {0x05, 0x2e},
DL3LD 1:1556bcaaf759 233 {0x06, 0x2e},
DL3LD 1:1556bcaaf759 234 {0x07, 0x2e},
DL3LD 1:1556bcaaf759 235 {0x08, 0x2e},
DL3LD 1:1556bcaaf759 236 {0x2f, 0x2e},
DL3LD 1:1556bcaaf759 237 {0x4a, 0xe9},
DL3LD 1:1556bcaaf759 238 {0x4b, 0xdd},
DL3LD 1:1556bcaaf759 239 {0x4c, 0xdd},
DL3LD 1:1556bcaaf759 240 {0x4d, 0xdd},
DL3LD 1:1556bcaaf759 241 {0x4e, 0xdd},
DL3LD 1:1556bcaaf759 242 {0x70, 0x06},
DL3LD 1:1556bcaaf759 243 {0xa6, 0x40},
DL3LD 1:1556bcaaf759 244 {0xbc, 0x02},
DL3LD 1:1556bcaaf759 245 {0xbd, 0x01},
DL3LD 1:1556bcaaf759 246 {0xbe, 0x02},
DL3LD 1:1556bcaaf759 247 {0xbf, 0x01},
DL3LD 1:1556bcaaf759 248 };
DL3LD 1:1556bcaaf759 249
DL3LD 1:1556bcaaf759 250 /* Initialization sequence for QVGA resolution (320x240) */
DL3LD 1:1556bcaaf759 251 const unsigned char OV9655_QVGA[][2]=
DL3LD 1:1556bcaaf759 252 {
DL3LD 1:1556bcaaf759 253 {0x00, 0x00},
DL3LD 1:1556bcaaf759 254 {0x01, 0x80},
DL3LD 1:1556bcaaf759 255 {0x02, 0x80},
DL3LD 1:1556bcaaf759 256 {0x03, 0x02},
DL3LD 1:1556bcaaf759 257 {0x04, 0x03},
DL3LD 1:1556bcaaf759 258 {0x09, 0x01},
DL3LD 1:1556bcaaf759 259 {0x0b, 0x57},
DL3LD 1:1556bcaaf759 260 {0x0e, 0x61},
DL3LD 1:1556bcaaf759 261 {0x0f, 0x40},
DL3LD 1:1556bcaaf759 262 {0x11, 0x01},
DL3LD 1:1556bcaaf759 263 {0x12, 0x62},
DL3LD 1:1556bcaaf759 264 {0x13, 0xc7},
DL3LD 1:1556bcaaf759 265 {0x14, 0x3a},
DL3LD 1:1556bcaaf759 266 {0x16, 0x24},
DL3LD 1:1556bcaaf759 267 {0x17, 0x18},
DL3LD 1:1556bcaaf759 268 {0x18, 0x04},
DL3LD 1:1556bcaaf759 269 {0x19, 0x01},
DL3LD 1:1556bcaaf759 270 {0x1a, 0x81},
DL3LD 1:1556bcaaf759 271 {0x1e, 0x00},
DL3LD 1:1556bcaaf759 272 {0x24, 0x3c},
DL3LD 1:1556bcaaf759 273 {0x25, 0x36},
DL3LD 1:1556bcaaf759 274 {0x26, 0x72},
DL3LD 1:1556bcaaf759 275 {0x27, 0x08},
DL3LD 1:1556bcaaf759 276 {0x28, 0x08},
DL3LD 1:1556bcaaf759 277 {0x29, 0x15},
DL3LD 1:1556bcaaf759 278 {0x2a, 0x00},
DL3LD 1:1556bcaaf759 279 {0x2b, 0x00},
DL3LD 1:1556bcaaf759 280 {0x2c, 0x08},
DL3LD 1:1556bcaaf759 281 {0x32, 0x12},
DL3LD 1:1556bcaaf759 282 {0x33, 0x00},
DL3LD 1:1556bcaaf759 283 {0x34, 0x3f},
DL3LD 1:1556bcaaf759 284 {0x35, 0x00},
DL3LD 1:1556bcaaf759 285 {0x36, 0x3a},
DL3LD 1:1556bcaaf759 286 {0x38, 0x72},
DL3LD 1:1556bcaaf759 287 {0x39, 0x57},
DL3LD 1:1556bcaaf759 288 {0x3a, 0xcc},
DL3LD 1:1556bcaaf759 289 {0x3b, 0x04},
DL3LD 1:1556bcaaf759 290 {0x3d, 0x99},
DL3LD 1:1556bcaaf759 291 {0x3e, 0x02},
DL3LD 1:1556bcaaf759 292 {0x3f, 0xc1},
DL3LD 1:1556bcaaf759 293 {0x40, 0xc0},
DL3LD 1:1556bcaaf759 294 {0x41, 0x41},
DL3LD 1:1556bcaaf759 295 {0x42, 0xc0},
DL3LD 1:1556bcaaf759 296 {0x43, 0x0a},
DL3LD 1:1556bcaaf759 297 {0x44, 0xf0},
DL3LD 1:1556bcaaf759 298 {0x45, 0x46},
DL3LD 1:1556bcaaf759 299 {0x46, 0x62},
DL3LD 1:1556bcaaf759 300 {0x47, 0x2a},
DL3LD 1:1556bcaaf759 301 {0x48, 0x3c},
DL3LD 1:1556bcaaf759 302 {0x4a, 0xfc},
DL3LD 1:1556bcaaf759 303 {0x4b, 0xfc},
DL3LD 1:1556bcaaf759 304 {0x4c, 0x7f},
DL3LD 1:1556bcaaf759 305 {0x4d, 0x7f},
DL3LD 1:1556bcaaf759 306 {0x4e, 0x7f},
DL3LD 1:1556bcaaf759 307 {0x4f, 0x98},
DL3LD 1:1556bcaaf759 308 {0x50, 0x98},
DL3LD 1:1556bcaaf759 309 {0x51, 0x00},
DL3LD 1:1556bcaaf759 310 {0x52, 0x28},
DL3LD 1:1556bcaaf759 311 {0x53, 0x70},
DL3LD 1:1556bcaaf759 312 {0x54, 0x98},
DL3LD 1:1556bcaaf759 313 {0x58, 0x1a},
DL3LD 1:1556bcaaf759 314 {0x59, 0x85},
DL3LD 1:1556bcaaf759 315 {0x5a, 0xa9},
DL3LD 1:1556bcaaf759 316 {0x5b, 0x64},
DL3LD 1:1556bcaaf759 317 {0x5c, 0x84},
DL3LD 1:1556bcaaf759 318 {0x5d, 0x53},
DL3LD 1:1556bcaaf759 319 {0x5e, 0x0e},
DL3LD 1:1556bcaaf759 320 {0x5f, 0xf0},
DL3LD 1:1556bcaaf759 321 {0x60, 0xf0},
DL3LD 1:1556bcaaf759 322 {0x61, 0xf0},
DL3LD 1:1556bcaaf759 323 {0x62, 0x00},
DL3LD 1:1556bcaaf759 324 {0x63, 0x00},
DL3LD 1:1556bcaaf759 325 {0x64, 0x02},
DL3LD 1:1556bcaaf759 326 {0x65, 0x20},
DL3LD 1:1556bcaaf759 327 {0x66, 0x00},
DL3LD 1:1556bcaaf759 328 {0x69, 0x0a},
DL3LD 1:1556bcaaf759 329 {0x6b, 0x5a},
DL3LD 1:1556bcaaf759 330 {0x6c, 0x04},
DL3LD 1:1556bcaaf759 331 {0x6d, 0x55},
DL3LD 1:1556bcaaf759 332 {0x6e, 0x00},
DL3LD 1:1556bcaaf759 333 {0x6f, 0x9d},
DL3LD 1:1556bcaaf759 334 {0x70, 0x21},
DL3LD 1:1556bcaaf759 335 {0x71, 0x78},
DL3LD 1:1556bcaaf759 336 {0x72, 0x11},
DL3LD 1:1556bcaaf759 337 {0x73, 0x01},
DL3LD 1:1556bcaaf759 338 {0x74, 0x10},
DL3LD 1:1556bcaaf759 339 {0x75, 0x10},
DL3LD 1:1556bcaaf759 340 {0x76, 0x01},
DL3LD 1:1556bcaaf759 341 {0x77, 0x02},
DL3LD 1:1556bcaaf759 342 {0x7A, 0x12},
DL3LD 1:1556bcaaf759 343 {0x7B, 0x08},
DL3LD 1:1556bcaaf759 344 {0x7C, 0x16},
DL3LD 1:1556bcaaf759 345 {0x7D, 0x30},
DL3LD 1:1556bcaaf759 346 {0x7E, 0x5e},
DL3LD 1:1556bcaaf759 347 {0x7F, 0x72},
DL3LD 1:1556bcaaf759 348 {0x80, 0x82},
DL3LD 1:1556bcaaf759 349 {0x81, 0x8e},
DL3LD 1:1556bcaaf759 350 {0x82, 0x9a},
DL3LD 1:1556bcaaf759 351 {0x83, 0xa4},
DL3LD 1:1556bcaaf759 352 {0x84, 0xac},
DL3LD 1:1556bcaaf759 353 {0x85, 0xb8},
DL3LD 1:1556bcaaf759 354 {0x86, 0xc3},
DL3LD 1:1556bcaaf759 355 {0x87, 0xd6},
DL3LD 1:1556bcaaf759 356 {0x88, 0xe6},
DL3LD 1:1556bcaaf759 357 {0x89, 0xf2},
DL3LD 1:1556bcaaf759 358 {0x8a, 0x24},
DL3LD 1:1556bcaaf759 359 {0x8c, 0x80},
DL3LD 1:1556bcaaf759 360 {0x90, 0x7d},
DL3LD 1:1556bcaaf759 361 {0x91, 0x7b},
DL3LD 1:1556bcaaf759 362 {0x9d, 0x02},
DL3LD 1:1556bcaaf759 363 {0x9e, 0x02},
DL3LD 1:1556bcaaf759 364 {0x9f, 0x7a},
DL3LD 1:1556bcaaf759 365 {0xa0, 0x79},
DL3LD 1:1556bcaaf759 366 {0xa1, 0x40},
DL3LD 1:1556bcaaf759 367 {0xa4, 0x50},
DL3LD 1:1556bcaaf759 368 {0xa5, 0x68},
DL3LD 1:1556bcaaf759 369 {0xa6, 0x4a},
DL3LD 1:1556bcaaf759 370 {0xa8, 0xc1},
DL3LD 1:1556bcaaf759 371 {0xa9, 0xef},
DL3LD 1:1556bcaaf759 372 {0xaa, 0x92},
DL3LD 1:1556bcaaf759 373 {0xab, 0x04},
DL3LD 1:1556bcaaf759 374 {0xac, 0x80},
DL3LD 1:1556bcaaf759 375 {0xad, 0x80},
DL3LD 1:1556bcaaf759 376 {0xae, 0x80},
DL3LD 1:1556bcaaf759 377 {0xaf, 0x80},
DL3LD 1:1556bcaaf759 378 {0xb2, 0xf2},
DL3LD 1:1556bcaaf759 379 {0xb3, 0x20},
DL3LD 1:1556bcaaf759 380 {0xb4, 0x20},
DL3LD 1:1556bcaaf759 381 {0xb5, 0x00},
DL3LD 1:1556bcaaf759 382 {0xb6, 0xaf},
DL3LD 1:1556bcaaf759 383 {0xb6, 0xaf},
DL3LD 1:1556bcaaf759 384 {0xbb, 0xae},
DL3LD 1:1556bcaaf759 385 {0xbc, 0x7f},
DL3LD 1:1556bcaaf759 386 {0xbd, 0x7f},
DL3LD 1:1556bcaaf759 387 {0xbe, 0x7f},
DL3LD 1:1556bcaaf759 388 {0xbf, 0x7f},
DL3LD 1:1556bcaaf759 389 {0xbf, 0x7f},
DL3LD 1:1556bcaaf759 390 {0xc0, 0xaa},
DL3LD 1:1556bcaaf759 391 {0xc1, 0xc0},
DL3LD 1:1556bcaaf759 392 {0xc2, 0x01},
DL3LD 1:1556bcaaf759 393 {0xc3, 0x4e},
DL3LD 1:1556bcaaf759 394 {0xc6, 0x05},
DL3LD 1:1556bcaaf759 395 {0xc7, 0x81},
DL3LD 1:1556bcaaf759 396 {0xc9, 0xe0},
DL3LD 1:1556bcaaf759 397 {0xca, 0xe8},
DL3LD 1:1556bcaaf759 398 {0xcb, 0xf0},
DL3LD 1:1556bcaaf759 399 {0xcc, 0xd8},
DL3LD 1:1556bcaaf759 400 {0xcd, 0x93},
DL3LD 1:1556bcaaf759 401 {0x12, 0x63},
DL3LD 1:1556bcaaf759 402 {0x40, 0x10},
DL3LD 1:1556bcaaf759 403 };
DL3LD 1:1556bcaaf759 404
DL3LD 1:1556bcaaf759 405 /* Initialization sequence for QQVGA resolution (160x120) */
DL3LD 1:1556bcaaf759 406 const char OV9655_QQVGA[][2]=
DL3LD 1:1556bcaaf759 407 {
DL3LD 1:1556bcaaf759 408 {0x00, 0x00},
DL3LD 1:1556bcaaf759 409 {0x01, 0x80},
DL3LD 1:1556bcaaf759 410 {0x02, 0x80},
DL3LD 1:1556bcaaf759 411 {0x03, 0x02},
DL3LD 1:1556bcaaf759 412 {0x04, 0x03},
DL3LD 1:1556bcaaf759 413 {0x09, 0x01},
DL3LD 1:1556bcaaf759 414 {0x0b, 0x57},
DL3LD 1:1556bcaaf759 415 {0x0e, 0x61},
DL3LD 1:1556bcaaf759 416 {0x0f, 0x40},
DL3LD 1:1556bcaaf759 417 {0x11, 0x01},
DL3LD 1:1556bcaaf759 418 {0x12, 0x62},
DL3LD 1:1556bcaaf759 419 {0x13, 0xc7},
DL3LD 1:1556bcaaf759 420 {0x14, 0x3a},
DL3LD 1:1556bcaaf759 421 {0x16, 0x24},
DL3LD 1:1556bcaaf759 422 {0x17, 0x18},
DL3LD 1:1556bcaaf759 423 {0x18, 0x04},
DL3LD 1:1556bcaaf759 424 {0x19, 0x01},
DL3LD 1:1556bcaaf759 425 {0x1a, 0x81},
DL3LD 1:1556bcaaf759 426 {0x1e, 0x00},
DL3LD 1:1556bcaaf759 427 {0x24, 0x3c},
DL3LD 1:1556bcaaf759 428 {0x25, 0x36},
DL3LD 1:1556bcaaf759 429 {0x26, 0x72},
DL3LD 1:1556bcaaf759 430 {0x27, 0x08},
DL3LD 1:1556bcaaf759 431 {0x28, 0x08},
DL3LD 1:1556bcaaf759 432 {0x29, 0x15},
DL3LD 1:1556bcaaf759 433 {0x2a, 0x00},
DL3LD 1:1556bcaaf759 434 {0x2b, 0x00},
DL3LD 1:1556bcaaf759 435 {0x2c, 0x08},
DL3LD 1:1556bcaaf759 436 {0x32, 0xa4},
DL3LD 1:1556bcaaf759 437 {0x33, 0x00},
DL3LD 1:1556bcaaf759 438 {0x34, 0x3f},
DL3LD 1:1556bcaaf759 439 {0x35, 0x00},
DL3LD 1:1556bcaaf759 440 {0x36, 0x3a},
DL3LD 1:1556bcaaf759 441 {0x38, 0x72},
DL3LD 1:1556bcaaf759 442 {0x39, 0x57},
DL3LD 1:1556bcaaf759 443 {0x3a, 0xcc},
DL3LD 1:1556bcaaf759 444 {0x3b, 0x04},
DL3LD 1:1556bcaaf759 445 {0x3d, 0x99},
DL3LD 1:1556bcaaf759 446 {0x3e, 0x0e},
DL3LD 1:1556bcaaf759 447 {0x3f, 0xc1},
DL3LD 1:1556bcaaf759 448 {0x40, 0xc0},
DL3LD 1:1556bcaaf759 449 {0x41, 0x41},
DL3LD 1:1556bcaaf759 450 {0x42, 0xc0},
DL3LD 1:1556bcaaf759 451 {0x43, 0x0a},
DL3LD 1:1556bcaaf759 452 {0x44, 0xf0},
DL3LD 1:1556bcaaf759 453 {0x45, 0x46},
DL3LD 1:1556bcaaf759 454 {0x46, 0x62},
DL3LD 1:1556bcaaf759 455 {0x47, 0x2a},
DL3LD 1:1556bcaaf759 456 {0x48, 0x3c},
DL3LD 1:1556bcaaf759 457 {0x4a, 0xfc},
DL3LD 1:1556bcaaf759 458 {0x4b, 0xfc},
DL3LD 1:1556bcaaf759 459 {0x4c, 0x7f},
DL3LD 1:1556bcaaf759 460 {0x4d, 0x7f},
DL3LD 1:1556bcaaf759 461 {0x4e, 0x7f},
DL3LD 1:1556bcaaf759 462 {0x4f, 0x98},
DL3LD 1:1556bcaaf759 463 {0x50, 0x98},
DL3LD 1:1556bcaaf759 464 {0x51, 0x00},
DL3LD 1:1556bcaaf759 465 {0x52, 0x28},
DL3LD 1:1556bcaaf759 466 {0x53, 0x70},
DL3LD 1:1556bcaaf759 467 {0x54, 0x98},
DL3LD 1:1556bcaaf759 468 {0x58, 0x1a},
DL3LD 1:1556bcaaf759 469 {0x59, 0x85},
DL3LD 1:1556bcaaf759 470 {0x5a, 0xa9},
DL3LD 1:1556bcaaf759 471 {0x5b, 0x64},
DL3LD 1:1556bcaaf759 472 {0x5c, 0x84},
DL3LD 1:1556bcaaf759 473 {0x5d, 0x53},
DL3LD 1:1556bcaaf759 474 {0x5e, 0x0e},
DL3LD 1:1556bcaaf759 475 {0x5f, 0xf0},
DL3LD 1:1556bcaaf759 476 {0x60, 0xf0},
DL3LD 1:1556bcaaf759 477 {0x61, 0xf0},
DL3LD 1:1556bcaaf759 478 {0x62, 0x00},
DL3LD 1:1556bcaaf759 479 {0x63, 0x00},
DL3LD 1:1556bcaaf759 480 {0x64, 0x02},
DL3LD 1:1556bcaaf759 481 {0x65, 0x20},
DL3LD 1:1556bcaaf759 482 {0x66, 0x00},
DL3LD 1:1556bcaaf759 483 {0x69, 0x0a},
DL3LD 1:1556bcaaf759 484 {0x6b, 0x5a},
DL3LD 1:1556bcaaf759 485 {0x6c, 0x04},
DL3LD 1:1556bcaaf759 486 {0x6d, 0x55},
DL3LD 1:1556bcaaf759 487 {0x6e, 0x00},
DL3LD 1:1556bcaaf759 488 {0x6f, 0x9d},
DL3LD 1:1556bcaaf759 489 {0x70, 0x21},
DL3LD 1:1556bcaaf759 490 {0x71, 0x78},
DL3LD 1:1556bcaaf759 491 {0x72, 0x22},
DL3LD 1:1556bcaaf759 492 {0x73, 0x02},
DL3LD 1:1556bcaaf759 493 {0x74, 0x10},
DL3LD 1:1556bcaaf759 494 {0x75, 0x10},
DL3LD 1:1556bcaaf759 495 {0x76, 0x01},
DL3LD 1:1556bcaaf759 496 {0x77, 0x02},
DL3LD 1:1556bcaaf759 497 {0x7A, 0x12},
DL3LD 1:1556bcaaf759 498 {0x7B, 0x08},
DL3LD 1:1556bcaaf759 499 {0x7C, 0x16},
DL3LD 1:1556bcaaf759 500 {0x7D, 0x30},
DL3LD 1:1556bcaaf759 501 {0x7E, 0x5e},
DL3LD 1:1556bcaaf759 502 {0x7F, 0x72},
DL3LD 1:1556bcaaf759 503 {0x80, 0x82},
DL3LD 1:1556bcaaf759 504 {0x81, 0x8e},
DL3LD 1:1556bcaaf759 505 {0x82, 0x9a},
DL3LD 1:1556bcaaf759 506 {0x83, 0xa4},
DL3LD 1:1556bcaaf759 507 {0x84, 0xac},
DL3LD 1:1556bcaaf759 508 {0x85, 0xb8},
DL3LD 1:1556bcaaf759 509 {0x86, 0xc3},
DL3LD 1:1556bcaaf759 510 {0x87, 0xd6},
DL3LD 1:1556bcaaf759 511 {0x88, 0xe6},
DL3LD 1:1556bcaaf759 512 {0x89, 0xf2},
DL3LD 1:1556bcaaf759 513 {0x8a, 0x24},
DL3LD 1:1556bcaaf759 514 {0x8c, 0x80},
DL3LD 1:1556bcaaf759 515 {0x90, 0x7d},
DL3LD 1:1556bcaaf759 516 {0x91, 0x7b},
DL3LD 1:1556bcaaf759 517 {0x9d, 0x02},
DL3LD 1:1556bcaaf759 518 {0x9e, 0x02},
DL3LD 1:1556bcaaf759 519 {0x9f, 0x7a},
DL3LD 1:1556bcaaf759 520 {0xa0, 0x79},
DL3LD 1:1556bcaaf759 521 {0xa1, 0x40},
DL3LD 1:1556bcaaf759 522 {0xa4, 0x50},
DL3LD 1:1556bcaaf759 523 {0xa5, 0x68},
DL3LD 1:1556bcaaf759 524 {0xa6, 0x4a},
DL3LD 1:1556bcaaf759 525 {0xa8, 0xc1},
DL3LD 1:1556bcaaf759 526 {0xa9, 0xef},
DL3LD 1:1556bcaaf759 527 {0xaa, 0x92},
DL3LD 1:1556bcaaf759 528 {0xab, 0x04},
DL3LD 1:1556bcaaf759 529 {0xac, 0x80},
DL3LD 1:1556bcaaf759 530 {0xad, 0x80},
DL3LD 1:1556bcaaf759 531 {0xae, 0x80},
DL3LD 1:1556bcaaf759 532 {0xaf, 0x80},
DL3LD 1:1556bcaaf759 533 {0xb2, 0xf2},
DL3LD 1:1556bcaaf759 534 {0xb3, 0x20},
DL3LD 1:1556bcaaf759 535 {0xb4, 0x20},
DL3LD 1:1556bcaaf759 536 {0xb5, 0x00},
DL3LD 1:1556bcaaf759 537 {0xb6, 0xaf},
DL3LD 1:1556bcaaf759 538 {0xb6, 0xaf},
DL3LD 1:1556bcaaf759 539 {0xbb, 0xae},
DL3LD 1:1556bcaaf759 540 {0xbc, 0x7f},
DL3LD 1:1556bcaaf759 541 {0xbd, 0x7f},
DL3LD 1:1556bcaaf759 542 {0xbe, 0x7f},
DL3LD 1:1556bcaaf759 543 {0xbf, 0x7f},
DL3LD 1:1556bcaaf759 544 {0xbf, 0x7f},
DL3LD 1:1556bcaaf759 545 {0xc0, 0xaa},
DL3LD 1:1556bcaaf759 546 {0xc1, 0xc0},
DL3LD 1:1556bcaaf759 547 {0xc2, 0x01},
DL3LD 1:1556bcaaf759 548 {0xc3, 0x4e},
DL3LD 1:1556bcaaf759 549 {0xc6, 0x05},
DL3LD 1:1556bcaaf759 550 {0xc7, 0x82},
DL3LD 1:1556bcaaf759 551 {0xc9, 0xe0},
DL3LD 1:1556bcaaf759 552 {0xca, 0xe8},
DL3LD 1:1556bcaaf759 553 {0xcb, 0xf0},
DL3LD 1:1556bcaaf759 554 {0xcc, 0xd8},
DL3LD 1:1556bcaaf759 555 {0xcd, 0x93},
DL3LD 1:1556bcaaf759 556 {0x12, 0x63},
DL3LD 1:1556bcaaf759 557 {0x40, 0x10},
DL3LD 1:1556bcaaf759 558 };
DL3LD 1:1556bcaaf759 559
DL3LD 1:1556bcaaf759 560 /**
DL3LD 1:1556bcaaf759 561 * @}
DL3LD 1:1556bcaaf759 562 */
DL3LD 1:1556bcaaf759 563
DL3LD 1:1556bcaaf759 564 /** @defgroup OV9655_Private_Functions
DL3LD 1:1556bcaaf759 565 * @{
DL3LD 1:1556bcaaf759 566 */
DL3LD 1:1556bcaaf759 567
DL3LD 1:1556bcaaf759 568 /**
DL3LD 1:1556bcaaf759 569 * @brief Initializes the OV9655 CAMERA component.
DL3LD 1:1556bcaaf759 570 * @param DeviceAddr: Device address on communication Bus.
DL3LD 1:1556bcaaf759 571 * @param resolution: Camera resolution
DL3LD 1:1556bcaaf759 572 * @retval None
DL3LD 1:1556bcaaf759 573 */
DL3LD 1:1556bcaaf759 574 void ov9655_Init(uint16_t DeviceAddr, uint32_t resolution)
DL3LD 1:1556bcaaf759 575 {
DL3LD 1:1556bcaaf759 576 uint32_t index;
DL3LD 1:1556bcaaf759 577
DL3LD 1:1556bcaaf759 578 /* Initialize I2C */
DL3LD 1:1556bcaaf759 579 CAMERA_IO_Init();
DL3LD 1:1556bcaaf759 580
DL3LD 1:1556bcaaf759 581 /* Prepare the camera to be configured by resetting all its registers */
DL3LD 1:1556bcaaf759 582 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_COM7, 0x80);
DL3LD 1:1556bcaaf759 583 CAMERA_Delay(200);
DL3LD 1:1556bcaaf759 584
DL3LD 1:1556bcaaf759 585 /* Initialize OV9655 */
DL3LD 1:1556bcaaf759 586 switch (resolution)
DL3LD 1:1556bcaaf759 587 {
DL3LD 1:1556bcaaf759 588 case CAMERA_R160x120:
DL3LD 1:1556bcaaf759 589 {
DL3LD 1:1556bcaaf759 590 for(index=0; index<(sizeof(OV9655_QQVGA)/2); index++)
DL3LD 1:1556bcaaf759 591 {
DL3LD 1:1556bcaaf759 592 CAMERA_IO_Write(DeviceAddr, OV9655_QQVGA[index][0], OV9655_QQVGA[index][1]);
DL3LD 1:1556bcaaf759 593 CAMERA_Delay(2);
DL3LD 1:1556bcaaf759 594 }
DL3LD 1:1556bcaaf759 595 break;
DL3LD 1:1556bcaaf759 596 }
DL3LD 1:1556bcaaf759 597 case CAMERA_R320x240:
DL3LD 1:1556bcaaf759 598 {
DL3LD 1:1556bcaaf759 599 for(index=0; index<(sizeof(OV9655_QVGA)/2); index++)
DL3LD 1:1556bcaaf759 600 {
DL3LD 1:1556bcaaf759 601 CAMERA_IO_Write(DeviceAddr, OV9655_QVGA[index][0], OV9655_QVGA[index][1]);
DL3LD 1:1556bcaaf759 602 CAMERA_Delay(2);
DL3LD 1:1556bcaaf759 603 }
DL3LD 1:1556bcaaf759 604 break;
DL3LD 1:1556bcaaf759 605 }
DL3LD 1:1556bcaaf759 606 case CAMERA_R480x272:
DL3LD 1:1556bcaaf759 607 {
DL3LD 1:1556bcaaf759 608 /* Not supported resolution */
DL3LD 1:1556bcaaf759 609 break;
DL3LD 1:1556bcaaf759 610 }
DL3LD 1:1556bcaaf759 611 case CAMERA_R640x480:
DL3LD 1:1556bcaaf759 612 {
DL3LD 1:1556bcaaf759 613 for(index=0; index<(sizeof(OV9655_VGA)/2); index++)
DL3LD 1:1556bcaaf759 614 {
DL3LD 1:1556bcaaf759 615 CAMERA_IO_Write(DeviceAddr, OV9655_VGA[index][0], OV9655_VGA[index][1]);
DL3LD 1:1556bcaaf759 616 CAMERA_Delay(2);
DL3LD 1:1556bcaaf759 617 }
DL3LD 1:1556bcaaf759 618 break;
DL3LD 1:1556bcaaf759 619 }
DL3LD 1:1556bcaaf759 620 default:
DL3LD 1:1556bcaaf759 621 {
DL3LD 1:1556bcaaf759 622 break;
DL3LD 1:1556bcaaf759 623 }
DL3LD 1:1556bcaaf759 624 }
DL3LD 1:1556bcaaf759 625 }
DL3LD 1:1556bcaaf759 626
DL3LD 1:1556bcaaf759 627 /**
DL3LD 1:1556bcaaf759 628 * @brief Configures the OV9655 camera feature.
DL3LD 1:1556bcaaf759 629 * @param DeviceAddr: Device address on communication Bus.
DL3LD 1:1556bcaaf759 630 * @param feature: Camera feature to be configured
DL3LD 1:1556bcaaf759 631 * @param value: Value to be configured
DL3LD 1:1556bcaaf759 632 * @param brightness_value: Brightness value to be configured
DL3LD 1:1556bcaaf759 633 * @retval None
DL3LD 1:1556bcaaf759 634 */
DL3LD 1:1556bcaaf759 635 void ov9655_Config(uint16_t DeviceAddr, uint32_t feature, uint32_t value, uint32_t brightness_value)
DL3LD 1:1556bcaaf759 636 {
DL3LD 1:1556bcaaf759 637 uint8_t tslb, mtx1, mtx2, mtx3, mtx4, mtx5, mtx6;
DL3LD 1:1556bcaaf759 638 uint64_t value_tmp;
DL3LD 1:1556bcaaf759 639 uint32_t br_value;
DL3LD 1:1556bcaaf759 640
DL3LD 1:1556bcaaf759 641 /* Convert the input value into ov9655 parameters */
DL3LD 1:1556bcaaf759 642 value_tmp = ov9655_ConvertValue(feature, value);
DL3LD 1:1556bcaaf759 643 br_value = (uint32_t)ov9655_ConvertValue(CAMERA_CONTRAST_BRIGHTNESS, brightness_value);
DL3LD 1:1556bcaaf759 644
DL3LD 1:1556bcaaf759 645 switch(feature)
DL3LD 1:1556bcaaf759 646 {
DL3LD 1:1556bcaaf759 647 case CAMERA_CONTRAST_BRIGHTNESS:
DL3LD 1:1556bcaaf759 648 {
DL3LD 1:1556bcaaf759 649 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_BRTN, br_value);
DL3LD 1:1556bcaaf759 650 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_CNST1, value_tmp);
DL3LD 1:1556bcaaf759 651 break;
DL3LD 1:1556bcaaf759 652 }
DL3LD 1:1556bcaaf759 653 case CAMERA_BLACK_WHITE:
DL3LD 1:1556bcaaf759 654 case CAMERA_COLOR_EFFECT:
DL3LD 1:1556bcaaf759 655 {
DL3LD 1:1556bcaaf759 656 tslb = (uint8_t)(value_tmp >> 48);
DL3LD 1:1556bcaaf759 657 mtx1 = (uint8_t)(value_tmp >> 40);
DL3LD 1:1556bcaaf759 658 mtx2 = (uint8_t)(value_tmp >> 32);
DL3LD 1:1556bcaaf759 659 mtx3 = (uint8_t)(value_tmp >> 24);
DL3LD 1:1556bcaaf759 660 mtx4 = (uint8_t)(value_tmp >> 16);
DL3LD 1:1556bcaaf759 661 mtx5 = (uint8_t)(value_tmp >> 8);
DL3LD 1:1556bcaaf759 662 mtx6 = (uint8_t)(value_tmp);
DL3LD 1:1556bcaaf759 663 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_TSLB, tslb);
DL3LD 1:1556bcaaf759 664 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_MTX1, mtx1);
DL3LD 1:1556bcaaf759 665 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_MTX2, mtx2);
DL3LD 1:1556bcaaf759 666 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_MTX3, mtx3);
DL3LD 1:1556bcaaf759 667 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_MTX4, mtx4);
DL3LD 1:1556bcaaf759 668 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_MTX5, mtx5);
DL3LD 1:1556bcaaf759 669 CAMERA_IO_Write(DeviceAddr, OV9655_SENSOR_MTX6, mtx6);
DL3LD 1:1556bcaaf759 670 break;
DL3LD 1:1556bcaaf759 671 }
DL3LD 1:1556bcaaf759 672 default:
DL3LD 1:1556bcaaf759 673 {
DL3LD 1:1556bcaaf759 674 break;
DL3LD 1:1556bcaaf759 675 }
DL3LD 1:1556bcaaf759 676 }
DL3LD 1:1556bcaaf759 677 }
DL3LD 1:1556bcaaf759 678
DL3LD 1:1556bcaaf759 679 /**
DL3LD 1:1556bcaaf759 680 * @brief Read the OV9655 Camera identity.
DL3LD 1:1556bcaaf759 681 * @param DeviceAddr: Device address on communication Bus.
DL3LD 1:1556bcaaf759 682 * @retval the OV9655 ID
DL3LD 1:1556bcaaf759 683 */
DL3LD 1:1556bcaaf759 684 uint16_t ov9655_ReadID(uint16_t DeviceAddr)
DL3LD 1:1556bcaaf759 685 {
DL3LD 1:1556bcaaf759 686 /* Initialize I2C */
DL3LD 1:1556bcaaf759 687 CAMERA_IO_Init();
DL3LD 1:1556bcaaf759 688
DL3LD 1:1556bcaaf759 689 /* Get the camera ID */
DL3LD 1:1556bcaaf759 690 return (CAMERA_IO_Read(DeviceAddr, OV9655_SENSOR_PIDH));
DL3LD 1:1556bcaaf759 691 }
DL3LD 1:1556bcaaf759 692
DL3LD 1:1556bcaaf759 693 /******************************************************************************
DL3LD 1:1556bcaaf759 694 Static Functions
DL3LD 1:1556bcaaf759 695 *******************************************************************************/
DL3LD 1:1556bcaaf759 696 /**
DL3LD 1:1556bcaaf759 697 * @brief Convert input values into ov9655 parameters.
DL3LD 1:1556bcaaf759 698 * @param feature: Camera feature to be configured
DL3LD 1:1556bcaaf759 699 * @param value: Value to be configured
DL3LD 1:1556bcaaf759 700 * @retval The converted value
DL3LD 1:1556bcaaf759 701 */
DL3LD 1:1556bcaaf759 702 static uint64_t ov9655_ConvertValue(uint32_t feature, uint32_t value)
DL3LD 1:1556bcaaf759 703 {
DL3LD 1:1556bcaaf759 704 uint64_t ret = 0;
DL3LD 1:1556bcaaf759 705
DL3LD 1:1556bcaaf759 706 switch(feature)
DL3LD 1:1556bcaaf759 707 {
DL3LD 1:1556bcaaf759 708 case CAMERA_BLACK_WHITE:
DL3LD 1:1556bcaaf759 709 {
DL3LD 1:1556bcaaf759 710 switch(value)
DL3LD 1:1556bcaaf759 711 {
DL3LD 1:1556bcaaf759 712 case CAMERA_BLACK_WHITE_BW:
DL3LD 1:1556bcaaf759 713 {
DL3LD 1:1556bcaaf759 714 ret = OV9655_BLACK_WHITE_BW;
DL3LD 1:1556bcaaf759 715 break;
DL3LD 1:1556bcaaf759 716 }
DL3LD 1:1556bcaaf759 717 case CAMERA_BLACK_WHITE_NEGATIVE:
DL3LD 1:1556bcaaf759 718 {
DL3LD 1:1556bcaaf759 719 ret = OV9655_BLACK_WHITE_NEGATIVE;
DL3LD 1:1556bcaaf759 720 break;
DL3LD 1:1556bcaaf759 721 }
DL3LD 1:1556bcaaf759 722 case CAMERA_BLACK_WHITE_BW_NEGATIVE:
DL3LD 1:1556bcaaf759 723 {
DL3LD 1:1556bcaaf759 724 ret = OV9655_BLACK_WHITE_BW_NEGATIVE;
DL3LD 1:1556bcaaf759 725 break;
DL3LD 1:1556bcaaf759 726 }
DL3LD 1:1556bcaaf759 727 case CAMERA_BLACK_WHITE_NORMAL:
DL3LD 1:1556bcaaf759 728 {
DL3LD 1:1556bcaaf759 729 ret = OV9655_BLACK_WHITE_NORMAL;
DL3LD 1:1556bcaaf759 730 break;
DL3LD 1:1556bcaaf759 731 }
DL3LD 1:1556bcaaf759 732 default:
DL3LD 1:1556bcaaf759 733 {
DL3LD 1:1556bcaaf759 734 ret = OV9655_BLACK_WHITE_NORMAL;
DL3LD 1:1556bcaaf759 735 break;
DL3LD 1:1556bcaaf759 736 }
DL3LD 1:1556bcaaf759 737 }
DL3LD 1:1556bcaaf759 738 break;
DL3LD 1:1556bcaaf759 739 }
DL3LD 1:1556bcaaf759 740 case CAMERA_CONTRAST_BRIGHTNESS:
DL3LD 1:1556bcaaf759 741 {
DL3LD 1:1556bcaaf759 742 switch(value)
DL3LD 1:1556bcaaf759 743 {
DL3LD 1:1556bcaaf759 744 case CAMERA_BRIGHTNESS_LEVEL0:
DL3LD 1:1556bcaaf759 745 {
DL3LD 1:1556bcaaf759 746 ret = OV9655_BRIGHTNESS_LEVEL0;
DL3LD 1:1556bcaaf759 747 break;
DL3LD 1:1556bcaaf759 748 }
DL3LD 1:1556bcaaf759 749 case CAMERA_BRIGHTNESS_LEVEL1:
DL3LD 1:1556bcaaf759 750 {
DL3LD 1:1556bcaaf759 751 ret = OV9655_BRIGHTNESS_LEVEL1;
DL3LD 1:1556bcaaf759 752 break;
DL3LD 1:1556bcaaf759 753 }
DL3LD 1:1556bcaaf759 754 case CAMERA_BRIGHTNESS_LEVEL2:
DL3LD 1:1556bcaaf759 755 {
DL3LD 1:1556bcaaf759 756 ret = OV9655_BRIGHTNESS_LEVEL2;
DL3LD 1:1556bcaaf759 757 break;
DL3LD 1:1556bcaaf759 758 }
DL3LD 1:1556bcaaf759 759 case CAMERA_BRIGHTNESS_LEVEL3:
DL3LD 1:1556bcaaf759 760 {
DL3LD 1:1556bcaaf759 761 ret = OV9655_BRIGHTNESS_LEVEL3;
DL3LD 1:1556bcaaf759 762 break;
DL3LD 1:1556bcaaf759 763 }
DL3LD 1:1556bcaaf759 764 case CAMERA_BRIGHTNESS_LEVEL4:
DL3LD 1:1556bcaaf759 765 {
DL3LD 1:1556bcaaf759 766 ret = OV9655_BRIGHTNESS_LEVEL4;
DL3LD 1:1556bcaaf759 767 break;
DL3LD 1:1556bcaaf759 768 }
DL3LD 1:1556bcaaf759 769 case CAMERA_CONTRAST_LEVEL0:
DL3LD 1:1556bcaaf759 770 {
DL3LD 1:1556bcaaf759 771 ret = OV9655_CONTRAST_LEVEL0;
DL3LD 1:1556bcaaf759 772 break;
DL3LD 1:1556bcaaf759 773 }
DL3LD 1:1556bcaaf759 774 case CAMERA_CONTRAST_LEVEL1:
DL3LD 1:1556bcaaf759 775 {
DL3LD 1:1556bcaaf759 776 ret = OV9655_CONTRAST_LEVEL1;
DL3LD 1:1556bcaaf759 777 break;
DL3LD 1:1556bcaaf759 778 }
DL3LD 1:1556bcaaf759 779 case CAMERA_CONTRAST_LEVEL2:
DL3LD 1:1556bcaaf759 780 {
DL3LD 1:1556bcaaf759 781 ret = OV9655_CONTRAST_LEVEL2;
DL3LD 1:1556bcaaf759 782 break;
DL3LD 1:1556bcaaf759 783 }
DL3LD 1:1556bcaaf759 784 case CAMERA_CONTRAST_LEVEL3:
DL3LD 1:1556bcaaf759 785 {
DL3LD 1:1556bcaaf759 786 ret = OV9655_CONTRAST_LEVEL3;
DL3LD 1:1556bcaaf759 787 break;
DL3LD 1:1556bcaaf759 788 }
DL3LD 1:1556bcaaf759 789 case CAMERA_CONTRAST_LEVEL4:
DL3LD 1:1556bcaaf759 790 {
DL3LD 1:1556bcaaf759 791 ret = OV9655_CONTRAST_LEVEL4;
DL3LD 1:1556bcaaf759 792 break;
DL3LD 1:1556bcaaf759 793 }
DL3LD 1:1556bcaaf759 794 default:
DL3LD 1:1556bcaaf759 795 {
DL3LD 1:1556bcaaf759 796 ret = OV9655_CONTRAST_LEVEL0;
DL3LD 1:1556bcaaf759 797 break;
DL3LD 1:1556bcaaf759 798 }
DL3LD 1:1556bcaaf759 799 }
DL3LD 1:1556bcaaf759 800 break;
DL3LD 1:1556bcaaf759 801 }
DL3LD 1:1556bcaaf759 802 case CAMERA_COLOR_EFFECT:
DL3LD 1:1556bcaaf759 803 {
DL3LD 1:1556bcaaf759 804 switch(value)
DL3LD 1:1556bcaaf759 805 {
DL3LD 1:1556bcaaf759 806 case CAMERA_COLOR_EFFECT_ANTIQUE:
DL3LD 1:1556bcaaf759 807 {
DL3LD 1:1556bcaaf759 808 ret = OV9655_COLOR_EFFECT_ANTIQUE;
DL3LD 1:1556bcaaf759 809 break;
DL3LD 1:1556bcaaf759 810 }
DL3LD 1:1556bcaaf759 811 case CAMERA_COLOR_EFFECT_BLUE:
DL3LD 1:1556bcaaf759 812 {
DL3LD 1:1556bcaaf759 813 ret = OV9655_COLOR_EFFECT_BLUE;
DL3LD 1:1556bcaaf759 814 break;
DL3LD 1:1556bcaaf759 815 }
DL3LD 1:1556bcaaf759 816 case CAMERA_COLOR_EFFECT_GREEN:
DL3LD 1:1556bcaaf759 817 {
DL3LD 1:1556bcaaf759 818 ret = OV9655_COLOR_EFFECT_GREEN;
DL3LD 1:1556bcaaf759 819 break;
DL3LD 1:1556bcaaf759 820 }
DL3LD 1:1556bcaaf759 821 case CAMERA_COLOR_EFFECT_RED:
DL3LD 1:1556bcaaf759 822 {
DL3LD 1:1556bcaaf759 823 ret = OV9655_COLOR_EFFECT_RED;
DL3LD 1:1556bcaaf759 824 break;
DL3LD 1:1556bcaaf759 825 }
DL3LD 1:1556bcaaf759 826 case CAMERA_COLOR_EFFECT_NONE:
DL3LD 1:1556bcaaf759 827 default:
DL3LD 1:1556bcaaf759 828 {
DL3LD 1:1556bcaaf759 829 ret = OV9655_COLOR_EFFECT_NONE;
DL3LD 1:1556bcaaf759 830 break;
DL3LD 1:1556bcaaf759 831 }
DL3LD 1:1556bcaaf759 832 }
DL3LD 1:1556bcaaf759 833 break;
DL3LD 1:1556bcaaf759 834 default:
DL3LD 1:1556bcaaf759 835 {
DL3LD 1:1556bcaaf759 836 ret = 0;
DL3LD 1:1556bcaaf759 837 break;
DL3LD 1:1556bcaaf759 838 }
DL3LD 1:1556bcaaf759 839 }
DL3LD 1:1556bcaaf759 840 }
DL3LD 1:1556bcaaf759 841
DL3LD 1:1556bcaaf759 842 return ret;
DL3LD 1:1556bcaaf759 843 }
DL3LD 1:1556bcaaf759 844
DL3LD 1:1556bcaaf759 845 /**
DL3LD 1:1556bcaaf759 846 * @}
DL3LD 1:1556bcaaf759 847 */
DL3LD 1:1556bcaaf759 848
DL3LD 1:1556bcaaf759 849 /**
DL3LD 1:1556bcaaf759 850 * @}
DL3LD 1:1556bcaaf759 851 */
DL3LD 1:1556bcaaf759 852
DL3LD 1:1556bcaaf759 853 /**
DL3LD 1:1556bcaaf759 854 * @}
DL3LD 1:1556bcaaf759 855 */
DL3LD 1:1556bcaaf759 856
DL3LD 1:1556bcaaf759 857 /**
DL3LD 1:1556bcaaf759 858 * @}
DL3LD 1:1556bcaaf759 859 */
DL3LD 1:1556bcaaf759 860
DL3LD 1:1556bcaaf759 861 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
DL3LD 1:1556bcaaf759 862