nt99141_settings.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825
  1. #ifndef _NT99141_SETTINGS_H_
  2. #define _NT99141_SETTINGS_H_
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include "esp_attr.h"
  6. #include "nt99141_regs.h"
  7. static const ratio_settings_t ratio_table[] = {
  8. // mw, mh, sx, sy, ex, ey, ox, oy, tx, ty
  9. { 1280, 720, 0, 4, 1283, 723, 0, 4, 1660, 963 },
  10. };
  11. #define REG_DLY 0xffff
  12. #define REGLIST_TAIL 0x0000
  13. static const DRAM_ATTR uint16_t sensor_default_regs[][2] = {
  14. //initial
  15. {0x3021, 0x00},
  16. {REG_DLY, 100}, // delay 100ms
  17. {0x3109, 0x04},
  18. {0x3040, 0x04},
  19. {0x3041, 0x02},
  20. {0x3042, 0xFF},
  21. {0x3043, 0x08},
  22. {0x3052, 0xE0},
  23. {0x305F, 0x33},
  24. {0x3100, 0x07},
  25. {0x3106, 0x03},
  26. {0x3105, 0x01},
  27. {0x3108, 0x05},
  28. {0x3110, 0x22},
  29. {0x3111, 0x57},
  30. {0x3112, 0x22},
  31. {0x3113, 0x55},
  32. {0x3114, 0x05},
  33. {0x3135, 0x00},
  34. {0x32F0, 0x01},
  35. {0x3290, 0x01},
  36. {0x3291, 0x80},
  37. {0x3296, 0x01},
  38. {0x3297, 0x73},
  39. {0x3250, 0x80},
  40. {0x3251, 0x03},
  41. {0x3252, 0xFF},
  42. {0x3253, 0x00},
  43. {0x3254, 0x03},
  44. {0x3255, 0xFF},
  45. {0x3256, 0x00},
  46. {0x3257, 0x50},
  47. {0x3270, 0x00},
  48. {0x3271, 0x0C},
  49. {0x3272, 0x18},
  50. {0x3273, 0x32},
  51. {0x3274, 0x44},
  52. {0x3275, 0x54},
  53. {0x3276, 0x70},
  54. {0x3277, 0x88},
  55. {0x3278, 0x9D},
  56. {0x3279, 0xB0},
  57. {0x327A, 0xCF},
  58. {0x327B, 0xE2},
  59. {0x327C, 0xEF},
  60. {0x327D, 0xF7},
  61. {0x327E, 0xFF},
  62. {0x3302, 0x00},
  63. {0x3303, 0x40},
  64. {0x3304, 0x00},
  65. {0x3305, 0x96},
  66. {0x3306, 0x00},
  67. {0x3307, 0x29},
  68. {0x3308, 0x07},
  69. {0x3309, 0xBA},
  70. {0x330A, 0x06},
  71. {0x330B, 0xF5},
  72. {0x330C, 0x01},
  73. {0x330D, 0x51},
  74. {0x330E, 0x01},
  75. {0x330F, 0x30},
  76. {0x3310, 0x07},
  77. {0x3311, 0x16},
  78. {0x3312, 0x07},
  79. {0x3313, 0xBA},
  80. {0x3326, 0x02},
  81. {0x32F6, 0x0F},
  82. {0x32F9, 0x42},
  83. {0x32FA, 0x24},
  84. {0x3325, 0x4A},
  85. {0x3330, 0x00},
  86. {0x3331, 0x0A},
  87. {0x3332, 0xFF},
  88. {0x3338, 0x30},
  89. {0x3339, 0x84},
  90. {0x333A, 0x48},
  91. {0x333F, 0x07},
  92. {0x3360, 0x10},
  93. {0x3361, 0x18},
  94. {0x3362, 0x1f},
  95. {0x3363, 0x37},
  96. {0x3364, 0x80},
  97. {0x3365, 0x80},
  98. {0x3366, 0x68},
  99. {0x3367, 0x60},
  100. {0x3368, 0x30},
  101. {0x3369, 0x28},
  102. {0x336A, 0x20},
  103. {0x336B, 0x10},
  104. {0x336C, 0x00},
  105. {0x336D, 0x20},
  106. {0x336E, 0x1C},
  107. {0x336F, 0x18},
  108. {0x3370, 0x10},
  109. {0x3371, 0x38},
  110. {0x3372, 0x3C},
  111. {0x3373, 0x3F},
  112. {0x3374, 0x3F},
  113. {0x338A, 0x34},
  114. {0x338B, 0x7F},
  115. {0x338C, 0x10},
  116. {0x338D, 0x23},
  117. {0x338E, 0x7F},
  118. {0x338F, 0x14},
  119. {0x3375, 0x08},
  120. {0x3376, 0x0C},
  121. {0x3377, 0x18},
  122. {0x3378, 0x20},
  123. {0x3012, 0x02},
  124. {0x3013, 0xD0},
  125. {0x3025, 0x02}, //colorbar
  126. {REGLIST_TAIL, 0x00}, // tail
  127. };
  128. static const DRAM_ATTR uint16_t sensor_fmt_jpeg[][2] = {
  129. {0x32F0, 0x70}, // YUV422
  130. {REGLIST_TAIL, 0x00}, // tail
  131. };
  132. static const DRAM_ATTR uint16_t sensor_fmt_raw[][2] = {
  133. {0x32F0, 0x50}, // RAW
  134. {REGLIST_TAIL, 0x00}, // tail
  135. };
  136. static const DRAM_ATTR uint16_t sensor_fmt_grayscale[][2] = {
  137. {0x32F1, 0x01},
  138. {REGLIST_TAIL, 0x00}, // tail
  139. };
  140. static const DRAM_ATTR uint16_t sensor_fmt_yuv422[][2] = {
  141. {0x32F0, 0x00}, // YUV422
  142. {REGLIST_TAIL, 0x00}, // tail
  143. };
  144. static const DRAM_ATTR uint16_t sensor_fmt_rgb565[][2] = {
  145. {0x32F0, 0x01}, // RGB
  146. {REGLIST_TAIL, 0x00}, // tail
  147. };
  148. static const DRAM_ATTR uint8_t sensor_saturation_levels[9][1] = {
  149. {0x60},//-4
  150. {0x68},//-3
  151. {0x70},//-2
  152. {0x78},//-1
  153. {0x80},//0
  154. {0x88},//+1
  155. {0x90},//+2
  156. {0x98},//+3
  157. {0xA0},//+4
  158. };
  159. static const DRAM_ATTR uint8_t sensor_special_effects[7][4] = {
  160. {0x00, 0x80, 0x80, 0x01},//Normal
  161. {0x03, 0x80, 0x80, 0x01},//Negative
  162. {0x01, 0x80, 0x80, 0x01},//Grayscale
  163. {0x05, 0x2A, 0xF0, 0x01},//Red Tint
  164. {0x05, 0x60, 0x20, 0x01},//Green Tint
  165. {0x05, 0xF0, 0x80, 0x01},//Blue Tint
  166. {0x02, 0x80, 0x80, 0x01},//Sepia
  167. };
  168. // AE LEVEL
  169. static const DRAM_ATTR uint16_t sensor_ae_level[][2] = {
  170. // 1. [AE_Target : 0x24]
  171. // Set_Device_Format = FORMAT_16_8
  172. // SET_Device_Addr = 0x54
  173. {0x32B8, 0x29 },
  174. {0x32B9, 0x1F },
  175. {0x32BC, 0x24 },
  176. {0x32BD, 0x27 },
  177. {0x32BE, 0x21 },
  178. //------------------------------------------------------------------------
  179. // 2. [AE_Target : 0x28]
  180. // Set_Device_Format = FORMAT_16_8
  181. // SET_Device_Addr = 0x54
  182. {0x32B8, 0x2D },
  183. {0x32B9, 0x23 },
  184. {0x32BC, 0x28 },
  185. {0x32BD, 0x2B },
  186. {0x32BE, 0x25 },
  187. //------------------------------------------------------------------------
  188. // 3. [AE_Target : 0x2C]
  189. // Set_Device_Format = FORMAT_16_8
  190. // SET_Device_Addr = 0x54
  191. {0x32B8, 0x32 },
  192. {0x32B9, 0x26 },
  193. {0x32BC, 0x2C },
  194. {0x32BD, 0x2F },
  195. {0x32BE, 0x29 },
  196. //------------------------------------------------------------------------
  197. // 4, [AE_Target : 0x30]
  198. // Set_Device_Format = FORMAT_16_8
  199. // SET_Device_Addr = 0x54
  200. {0x32B8, 0x36 },
  201. {0x32B9, 0x2A },
  202. {0x32BC, 0x30 },
  203. {0x32BD, 0x33 },
  204. {0x32BE, 0x2D },
  205. //------------------------------------------------------------------------
  206. // 5. [AE_Target : 0x34]
  207. // Set_Device_Format = FORMAT_16_8
  208. // SET_Device_Addr = 0x54
  209. {0x32B8, 0x3B },
  210. {0x32B9, 0x2D },
  211. {0x32BC, 0x34 },
  212. {0x32BD, 0x38 },
  213. {0x32BE, 0x30 },
  214. //------------------------------------------------------------------------
  215. // 6. [AE_Target : 0x38]
  216. // Set_Device_Format = FORMAT_16_8
  217. // SET_Device_Addr = 0x54
  218. {0x32B8, 0x3F },
  219. {0x32B9, 0x31 },
  220. {0x32BC, 0x38 },
  221. {0x32BD, 0x3C },
  222. {0x32BE, 0x34 },
  223. //------------------------------------------------------------------------
  224. // 7. [AE_Target : 0x3D]
  225. // Set_Device_Format = FORMAT_16_8
  226. // SET_Device_Addr = 0x54
  227. {0x32B8, 0x44 },
  228. {0x32B9, 0x34 },
  229. {0x32BC, 0x3C },
  230. {0x32BD, 0x40 },
  231. {0x32BE, 0x38 },
  232. //------------------------------------------------------------------------
  233. // 8. [AE_Target : 0x40]
  234. // Set_Device_Format = FORMAT_16_8
  235. // SET_Device_Addr = 0x54
  236. {0x32B8, 0x48 },
  237. {0x32B9, 0x38 },
  238. {0x32BC, 0x40 },
  239. {0x32BD, 0x44 },
  240. {0x32BE, 0x3C },
  241. //------------------------------------------------------------------------
  242. // 9. [AE_Target : 0x44]
  243. // Set_Device_Format = FORMAT_16_8
  244. // SET_Device_Addr = 0x54
  245. {0x32B8, 0x4D },
  246. {0x32B9, 0x3B },
  247. {0x32BC, 0x44 },
  248. {0x32BD, 0x49 },
  249. {0x32BE, 0x3F },
  250. };
  251. static const DRAM_ATTR uint16_t sensor_framesize_HD[][2] = {
  252. //[JPEG_1280x720_8.18_8.18_Fps]
  253. {0x3021, 0x00},
  254. {REG_DLY, 100}, // delay 100ms
  255. {0x32BF, 0x60},
  256. {0x32C0, 0x5A},
  257. {0x32C1, 0x5A},
  258. {0x32C2, 0x5A},
  259. {0x32C3, 0x00},
  260. {0x32C4, 0x20},
  261. {0x32C5, 0x20},
  262. {0x32C6, 0x20},
  263. {0x32C7, 0x00},
  264. {0x32C8, 0x3C},
  265. {0x32C9, 0x5A},
  266. {0x32CA, 0x7A},
  267. {0x32CB, 0x7A},
  268. {0x32CC, 0x7A},
  269. {0x32CD, 0x7A},
  270. {0x32DB, 0x5E},
  271. {0x32F0, 0x70},
  272. {0x3400, 0x08},
  273. {0x3400, 0x00},
  274. {0x3401, 0x4E},
  275. {0x3404, 0x00},
  276. {0x3405, 0x00},
  277. {0x3410, 0x00},
  278. {0x3200, 0x3E},
  279. {0x3201, 0x0F},
  280. {0x3028, 0x0F},
  281. {0x3029, 0x00},
  282. {0x302A, 0x08},
  283. {0x3022, 0x24},
  284. {0x3023, 0x24},
  285. {0x3002, 0x00},
  286. {0x3003, 0x04},
  287. {0x3004, 0x00},
  288. {0x3005, 0x04},
  289. {0x3006, 0x05},
  290. {0x3007, 0x03},
  291. {0x3008, 0x02},
  292. {0x3009, 0xD3},
  293. {0x300A, 0x06},
  294. {0x300B, 0x7C},
  295. {0x300C, 0x02},
  296. {0x300D, 0xE0},
  297. {0x300E, 0x05},
  298. {0x300F, 0x00},
  299. {0x3010, 0x02},
  300. {0x3011, 0xD0},
  301. {0x32B8, 0x3F},
  302. {0x32B9, 0x31},
  303. {0x32BB, 0x87},
  304. {0x32BC, 0x38},
  305. {0x32BD, 0x3C},
  306. {0x32BE, 0x34},
  307. {0x3201, 0x3F},
  308. {0x3021, 0x06},
  309. {0x3025, 0x00}, //normal
  310. {0x3400, 0x01},
  311. {0x3060, 0x01},
  312. {REGLIST_TAIL, 0x00}, // tail
  313. };
  314. static const DRAM_ATTR uint16_t sensor_framesize_VGA[][2] = {
  315. //[JPEG_640x480_10.14_10.14_Fps]
  316. {0x3021, 0x00},
  317. {REG_DLY, 100}, // delay 100ms
  318. {0x32BF, 0x60},
  319. {0x32C0, 0x5A},
  320. {0x32C1, 0x5A},
  321. {0x32C2, 0x5A},
  322. {0x32C3, 0x00},
  323. {0x32C4, 0x20},
  324. {0x32C5, 0x20},
  325. {0x32C6, 0x20},
  326. {0x32C7, 0x00},
  327. {0x32C8, 0x4B},
  328. {0x32C9, 0x5A},
  329. {0x32CA, 0x7A},
  330. {0x32CB, 0x7A},
  331. {0x32CC, 0x7A},
  332. {0x32CD, 0x7A},
  333. {0x32DB, 0x62},
  334. {0x32F0, 0x70},
  335. {0x3400, 0x08},
  336. {0x3400, 0x00},
  337. {0x3401, 0x4E},
  338. {0x3404, 0x00},
  339. {0x3405, 0x00},
  340. {0x3410, 0x00},
  341. {0x32E0, 0x02},
  342. {0x32E1, 0x80},
  343. {0x32E2, 0x01},
  344. {0x32E3, 0xE0},
  345. {0x32E4, 0x00},
  346. {0x32E5, 0x80},
  347. {0x32E6, 0x00},
  348. {0x32E7, 0x80},
  349. {0x3200, 0x3E},
  350. {0x3201, 0x0F},
  351. {0x3028, 0x0F},
  352. {0x3029, 0x00},
  353. {0x302A, 0x08},
  354. {0x3022, 0x24},
  355. {0x3023, 0x24},
  356. {0x3002, 0x00},
  357. {0x3003, 0xA4},
  358. {0x3004, 0x00},
  359. {0x3005, 0x04},
  360. {0x3006, 0x04},
  361. {0x3007, 0x63},
  362. {0x3008, 0x02},
  363. {0x3009, 0xD3},
  364. {0x300A, 0x05},
  365. {0x300B, 0x3C},
  366. {0x300C, 0x02},
  367. {0x300D, 0xE0},
  368. {0x300E, 0x03},
  369. {0x300F, 0xC0},
  370. {0x3010, 0x02},
  371. {0x3011, 0xD0},
  372. {0x32B8, 0x3F},
  373. {0x32B9, 0x31},
  374. {0x32BB, 0x87},
  375. {0x32BC, 0x38},
  376. {0x32BD, 0x3C},
  377. {0x32BE, 0x34},
  378. {0x3201, 0x7F},
  379. {0x3021, 0x06},
  380. {0x3025, 0x00}, //normal
  381. {0x3400, 0x01},
  382. {0x3060, 0x01},
  383. {REGLIST_TAIL, 0x00}, // tail
  384. };
  385. static const DRAM_ATTR uint16_t sensor_framesize_QVGA[][2] = {
  386. //[JPEG_320x240_10.14_10.14_Fps]
  387. {0x3021, 0x00},
  388. {REG_DLY, 100}, // delay 100ms
  389. {0x32BF, 0x60},
  390. {0x32C0, 0x5A},
  391. {0x32C1, 0x5A},
  392. {0x32C2, 0x5A},
  393. {0x32C3, 0x00},
  394. {0x32C4, 0x20},
  395. {0x32C5, 0x20},
  396. {0x32C6, 0x20},
  397. {0x32C7, 0x00},
  398. {0x32C8, 0x4B},
  399. {0x32C9, 0x5A},
  400. {0x32CA, 0x7A},
  401. {0x32CB, 0x7A},
  402. {0x32CC, 0x7A},
  403. {0x32CD, 0x7A},
  404. {0x32DB, 0x62},
  405. {0x32F0, 0x70},
  406. {0x3400, 0x08},
  407. {0x3400, 0x00},
  408. {0x3401, 0x4E},
  409. {0x3404, 0x00},
  410. {0x3405, 0x00},
  411. {0x3410, 0x00},
  412. {0x32E0, 0x01},
  413. {0x32E1, 0x40},
  414. {0x32E2, 0x00},
  415. {0x32E3, 0xF0},
  416. {0x32E4, 0x02},
  417. {0x32E5, 0x02},
  418. {0x32E6, 0x02},
  419. {0x32E7, 0x03},
  420. {0x3200, 0x3E},
  421. {0x3201, 0x0F},
  422. {0x3028, 0x0F},
  423. {0x3029, 0x00},
  424. {0x302A, 0x08},
  425. {0x3022, 0x24},
  426. {0x3023, 0x24},
  427. {0x3002, 0x00},
  428. {0x3003, 0xA4},
  429. {0x3004, 0x00},
  430. {0x3005, 0x04},
  431. {0x3006, 0x04},
  432. {0x3007, 0x63},
  433. {0x3008, 0x02},
  434. {0x3009, 0xD3},
  435. {0x300A, 0x05},
  436. {0x300B, 0x3C},
  437. {0x300C, 0x02},
  438. {0x300D, 0xE0},
  439. {0x300E, 0x03},
  440. {0x300F, 0xC0},
  441. {0x3010, 0x02},
  442. {0x3011, 0xD0},
  443. {0x32B8, 0x3F},
  444. {0x32B9, 0x31},
  445. {0x32BB, 0x87},
  446. {0x32BC, 0x38},
  447. {0x32BD, 0x3C},
  448. {0x32BE, 0x34},
  449. {0x3201, 0x7F},
  450. {0x3021, 0x06},
  451. {0x3025, 0x00}, //normal
  452. {0x3400, 0x01},
  453. {0x3060, 0x01},
  454. {REGLIST_TAIL, 0x00}, // tail
  455. };
  456. static const DRAM_ATTR uint16_t sensor_framesize_VGA_xyskip[][2] = {
  457. // [JPEG_640x360_20.00_25.01_Fps_XY_Skip]
  458. // Set_Device_Format = FORMAT_16_8
  459. // SET_Device_Addr = 0x54
  460. {0x3021, 0x00},
  461. {REG_DLY, 100}, // delay 100ms
  462. {0x32BF, 0x60 },
  463. {0x320A, 0xB2 },
  464. {0x32C0, 0x64 },
  465. {0x32C1, 0x64 },
  466. {0x32C2, 0x64 },
  467. {0x32C3, 0x00 },
  468. {0x32C4, 0x20 },
  469. {0x32C5, 0x20 },
  470. {0x32C6, 0x20 },
  471. {0x32C7, 0x00 },
  472. {0x32C8, 0x62 },
  473. {0x32C9, 0x64 },
  474. {0x32CA, 0x84 },
  475. {0x32CB, 0x84 },
  476. {0x32CC, 0x84 },
  477. {0x32CD, 0x84 },
  478. {0x32DB, 0x68 },
  479. {0x32F0, 0x70 },
  480. {0x3400, 0x08 },
  481. {0x3400, 0x00 },
  482. {0x3401, 0x4E },
  483. {0x3404, 0x00 },
  484. {0x3405, 0x00 },
  485. {0x3410, 0x00 },
  486. {0x3200, 0x3E },
  487. {0x3201, 0x0F },
  488. {0x3028, 0x0F },
  489. {0x3029, 0x00 },
  490. {0x302A, 0x08 },
  491. {0x3022, 0x24 },
  492. {0x3023, 0x6C },
  493. {0x3002, 0x00 },
  494. {0x3003, 0x04 },
  495. {0x3004, 0x00 },
  496. {0x3005, 0x04 },
  497. {0x3006, 0x05 },
  498. {0x3007, 0x03 },
  499. {0x3008, 0x02 },
  500. {0x3009, 0xD3 },
  501. {0x300A, 0x03 },
  502. {0x300B, 0xFC },
  503. {0x300C, 0x01 },
  504. {0x300D, 0x88 },
  505. {0x300E, 0x02 },
  506. {0x300F, 0x80 },
  507. {0x3010, 0x01 },
  508. {0x3011, 0x68 },
  509. {0x32B8, 0x3F },
  510. {0x32B9, 0x31 },
  511. {0x32BB, 0x87 },
  512. {0x32BC, 0x38 },
  513. {0x32BD, 0x3C },
  514. {0x32BE, 0x34 },
  515. {0x3201, 0x3F },
  516. {0x3025, 0x00 }, //normal
  517. {0x3021, 0x06 },
  518. {0x3400, 0x01 },
  519. {0x3060, 0x01 },
  520. {REGLIST_TAIL, 0x00}, // tail
  521. };
  522. static const DRAM_ATTR uint16_t sensor_framesize_VGA_xskip[][2] = {
  523. //[JPEG_640x480_Xskip_13.32_13.32_Fps]
  524. {0x3021, 0x00},
  525. {REG_DLY, 100}, // delay 100ms
  526. {0x32BF, 0x60},
  527. {0x32C0, 0x5A},
  528. {0x32C1, 0x5A},
  529. {0x32C2, 0x5A},
  530. {0x32C3, 0x00},
  531. {0x32C4, 0x20},
  532. {0x32C5, 0x20},
  533. {0x32C6, 0x20},
  534. {0x32C7, 0x00},
  535. {0x32C8, 0x62},
  536. {0x32C9, 0x5A},
  537. {0x32CA, 0x7A},
  538. {0x32CB, 0x7A},
  539. {0x32CC, 0x7A},
  540. {0x32CD, 0x7A},
  541. {0x32DB, 0x68},
  542. {0x32F0, 0x70},
  543. {0x3400, 0x08},
  544. {0x3400, 0x00},
  545. {0x3401, 0x4E},
  546. {0x3404, 0x00},
  547. {0x3405, 0x00},
  548. {0x3410, 0x00},
  549. {0x32E0, 0x02},
  550. {0x32E1, 0x80},
  551. {0x32E2, 0x01},
  552. {0x32E3, 0xE0},
  553. {0x32E4, 0x00},
  554. {0x32E5, 0x00},
  555. {0x32E6, 0x00},
  556. {0x32E7, 0x80},
  557. {0x3200, 0x3E},
  558. {0x3201, 0x0F},
  559. {0x3028, 0x0F},
  560. {0x3029, 0x00},
  561. {0x302A, 0x08},
  562. {0x3022, 0x24},
  563. {0x3023, 0x2C},
  564. {0x3002, 0x00},
  565. {0x3003, 0x04},
  566. {0x3004, 0x00},
  567. {0x3005, 0x04},
  568. {0x3006, 0x05},
  569. {0x3007, 0x03},
  570. {0x3008, 0x02},
  571. {0x3009, 0xD3},
  572. {0x300A, 0x03},
  573. {0x300B, 0xFC},
  574. {0x300C, 0x02},
  575. {0x300D, 0xE0},
  576. {0x300E, 0x02},
  577. {0x300F, 0x80},
  578. {0x3010, 0x02},
  579. {0x3011, 0xD0},
  580. {0x32B8, 0x3F},
  581. {0x32B9, 0x31},
  582. {0x32BB, 0x87},
  583. {0x32BC, 0x38},
  584. {0x32BD, 0x3C},
  585. {0x32BE, 0x34},
  586. {0x3201, 0x7F},
  587. {0x3021, 0x06},
  588. {0x3025, 0x00}, //normal
  589. {0x3400, 0x01},
  590. {0x3060, 0x01},
  591. {REGLIST_TAIL, 0x00}, // tail
  592. };
  593. static const DRAM_ATTR uint16_t sensor_framesize_QVGA_xskip[][2] = {
  594. {0x3021, 0x00},
  595. {REG_DLY, 100}, // delay 100ms
  596. //[JPEG_320x240_Xskip_13.32_13.32_Fps]
  597. {0x32BF, 0x60},
  598. {0x32C0, 0x5A},
  599. {0x32C1, 0x5A},
  600. {0x32C2, 0x5A},
  601. {0x32C3, 0x00},
  602. {0x32C4, 0x20},
  603. {0x32C5, 0x20},
  604. {0x32C6, 0x20},
  605. {0x32C7, 0x00},
  606. {0x32C8, 0x62},
  607. {0x32C9, 0x5A},
  608. {0x32CA, 0x7A},
  609. {0x32CB, 0x7A},
  610. {0x32CC, 0x7A},
  611. {0x32CD, 0x7A},
  612. {0x32DB, 0x68},
  613. {0x32F0, 0x70},
  614. {0x3400, 0x08},
  615. {0x3400, 0x00},
  616. {0x3401, 0x4E},
  617. {0x3404, 0x00},
  618. {0x3405, 0x00},
  619. {0x3410, 0x00},
  620. {0x32E0, 0x01},
  621. {0x32E1, 0x40},
  622. {0x32E2, 0x00},
  623. {0x32E3, 0xF0},
  624. {0x32E4, 0x01},
  625. {0x32E5, 0x01},
  626. {0x32E6, 0x02},
  627. {0x32E7, 0x03},
  628. {0x3200, 0x3E},
  629. {0x3201, 0x0F},
  630. {0x3028, 0x0F},
  631. {0x3029, 0x00},
  632. {0x302A, 0x08},
  633. {0x3022, 0x24},
  634. {0x3023, 0x2C},
  635. {0x3002, 0x00},
  636. {0x3003, 0x04},
  637. {0x3004, 0x00},
  638. {0x3005, 0x04},
  639. {0x3006, 0x05},
  640. {0x3007, 0x03},
  641. {0x3008, 0x02},
  642. {0x3009, 0xD3},
  643. {0x300A, 0x03},
  644. {0x300B, 0xFC},
  645. {0x300C, 0x02},
  646. {0x300D, 0xE0},
  647. {0x300E, 0x02},
  648. {0x300F, 0x80},
  649. {0x3010, 0x02},
  650. {0x3011, 0xD0},
  651. {0x32B8, 0x3F},
  652. {0x32B9, 0x31},
  653. {0x32BB, 0x87},
  654. {0x32BC, 0x38},
  655. {0x32BD, 0x3C},
  656. {0x32BE, 0x34},
  657. {0x3201, 0x7F},
  658. {0x3021, 0x06},
  659. {0x3025, 0x00}, //normal
  660. {0x3400, 0x01},
  661. {0x3060, 0x01},
  662. {REGLIST_TAIL, 0x00}, // tail
  663. };
  664. static const DRAM_ATTR uint16_t sensor_framesize_VGA_crop[][2] = {
  665. //[JPEG_640x480_Crop_19.77_19.77_Fps]
  666. {0x3021, 0x00},
  667. {REG_DLY, 100}, // delay 100ms
  668. {0x32BF, 0x60},
  669. {0x32C0, 0x5A},
  670. {0x32C1, 0x5A},
  671. {0x32C2, 0x5A},
  672. {0x32C3, 0x00},
  673. {0x32C4, 0x20},
  674. {0x32C5, 0x20},
  675. {0x32C6, 0x20},
  676. {0x32C7, 0x00},
  677. {0x32C8, 0x62},
  678. {0x32C9, 0x5A},
  679. {0x32CA, 0x7A},
  680. {0x32CB, 0x7A},
  681. {0x32CC, 0x7A},
  682. {0x32CD, 0x7A},
  683. {0x32DB, 0x68},
  684. {0x32F0, 0x70},
  685. {0x3400, 0x08},
  686. {0x3400, 0x00},
  687. {0x3401, 0x4E},
  688. {0x3404, 0x00},
  689. {0x3405, 0x00},
  690. {0x3410, 0x00},
  691. {0x3200, 0x3E},
  692. {0x3201, 0x0F},
  693. {0x3028, 0x0F},
  694. {0x3029, 0x00},
  695. {0x302A, 0x08},
  696. {0x3022, 0x24},
  697. {0x3023, 0x24},
  698. {0x3002, 0x01},
  699. {0x3003, 0x44},
  700. {0x3004, 0x00},
  701. {0x3005, 0x7C},
  702. {0x3006, 0x03},
  703. {0x3007, 0xC3},
  704. {0x3008, 0x02},
  705. {0x3009, 0x5B},
  706. {0x300A, 0x03},
  707. {0x300B, 0xFC},
  708. {0x300C, 0x01},
  709. {0x300D, 0xF0},
  710. {0x300E, 0x02},
  711. {0x300F, 0x80},
  712. {0x3010, 0x01},
  713. {0x3011, 0xE0},
  714. {0x32B8, 0x3F},
  715. {0x32B9, 0x31},
  716. {0x32BB, 0x87},
  717. {0x32BC, 0x38},
  718. {0x32BD, 0x3C},
  719. {0x32BE, 0x34},
  720. {0x3201, 0x3F},
  721. {0x3021, 0x06},
  722. {0x3025, 0x00}, //normal
  723. {0x3400, 0x01},
  724. {0x3060, 0x01},
  725. {REGLIST_TAIL, 0x00}, // tail
  726. };
  727. static const DRAM_ATTR uint16_t sensor_framesize_QVGA_crop[][2] = {
  728. //[JPEG_320x240_Crop_19.77_19.77_Fps]
  729. {0x3021, 0x00},
  730. {REG_DLY, 100}, // delay 100ms
  731. {0x32BF, 0x60},
  732. {0x32C0, 0x5A},
  733. {0x32C1, 0x5A},
  734. {0x32C2, 0x5A},
  735. {0x32C3, 0x00},
  736. {0x32C4, 0x20},
  737. {0x32C5, 0x20},
  738. {0x32C6, 0x20},
  739. {0x32C7, 0x00},
  740. {0x32C8, 0x62},
  741. {0x32C9, 0x5A},
  742. {0x32CA, 0x7A},
  743. {0x32CB, 0x7A},
  744. {0x32CC, 0x7A},
  745. {0x32CD, 0x7A},
  746. {0x32DB, 0x68},
  747. {0x32F0, 0x70},
  748. {0x3400, 0x08},
  749. {0x3400, 0x00},
  750. {0x3401, 0x4E},
  751. {0x3404, 0x00},
  752. {0x3405, 0x00},
  753. {0x3410, 0x00},
  754. {0x32E0, 0x01},
  755. {0x32E1, 0x40},
  756. {0x32E2, 0x00},
  757. {0x32E3, 0xF0},
  758. {0x32E4, 0x01},
  759. {0x32E5, 0x01},
  760. {0x32E6, 0x01},
  761. {0x32E7, 0x02},
  762. {0x3200, 0x3E},
  763. {0x3201, 0x0F},
  764. {0x3028, 0x0F},
  765. {0x3029, 0x00},
  766. {0x302A, 0x08},
  767. {0x3022, 0x24},
  768. {0x3023, 0x24},
  769. {0x3002, 0x01},
  770. {0x3003, 0x44},
  771. {0x3004, 0x00},
  772. {0x3005, 0x7C},
  773. {0x3006, 0x03},
  774. {0x3007, 0xC3},
  775. {0x3008, 0x02},
  776. {0x3009, 0x5B},
  777. {0x300A, 0x03},
  778. {0x300B, 0xFC},
  779. {0x300C, 0x01},
  780. {0x300D, 0xF0},
  781. {0x300E, 0x02},
  782. {0x300F, 0x80},
  783. {0x3010, 0x01},
  784. {0x3011, 0xE0},
  785. {0x32B8, 0x3F},
  786. {0x32B9, 0x31},
  787. {0x32BB, 0x87},
  788. {0x32BC, 0x38},
  789. {0x32BD, 0x3C},
  790. {0x32BE, 0x34},
  791. {0x3201, 0x7F},
  792. {0x3021, 0x06},
  793. {0x3025, 0x00}, //normal
  794. {0x3400, 0x01},
  795. {0x3060, 0x01},
  796. {REGLIST_TAIL, 0x00}, // tail
  797. };
  798. #endif