📄 ov3640.c
字号:
/* * OV3640 CMOS Camera Sensor Initialization */#if CAMERATYPE == 2#define GPIO_CAM_RST (32*3+20) //camera reset: GPD20 s800+#define GPIO_CAM_PWD (32*2+27) //camera power down:GPC27 s800+#include "camera.h"#include <jz4740.h>static char save_reg[10];void init_ov3640_vga(void) { sensor_write_reg16(0x304d, 0x45); sensor_write_reg16(0x3087, 0x16); sensor_write_reg16(0x30aa, 0x45); sensor_write_reg16(0x30b0, 0xff); sensor_write_reg16(0x30b1, 0xff); sensor_write_reg16(0x30b2, 0x10); sensor_write_reg16(0x300e, 0x32); sensor_write_reg16(0x300f, 0x21); sensor_write_reg16(0x3010, 0x20); sensor_write_reg16(0x3011, 0x00); sensor_write_reg16(0x304c, 0x82); sensor_write_reg16(0x3018, 0x38); sensor_write_reg16(0x3019, 0x30); sensor_write_reg16(0x301a, 0x61); sensor_write_reg16(0x307d, 0x00); sensor_write_reg16(0x3087, 0x02); sensor_write_reg16(0x3082, 0x20); sensor_write_reg16(0x3015, 0x12); sensor_write_reg16(0x3014, 0x04); sensor_write_reg16(0x3013, 0xf7); sensor_write_reg16(0x303c, 0x08); sensor_write_reg16(0x303d, 0x18); sensor_write_reg16(0x303e, 0x06); sensor_write_reg16(0x303f, 0x0c); sensor_write_reg16(0x3030, 0x62); sensor_write_reg16(0x3031, 0x26); sensor_write_reg16(0x3032, 0xe6); sensor_write_reg16(0x3033, 0x6e); sensor_write_reg16(0x3034, 0xea); sensor_write_reg16(0x3035, 0xae); sensor_write_reg16(0x3036, 0xa6); sensor_write_reg16(0x3037, 0x6a); sensor_write_reg16(0x3104, 0x02); sensor_write_reg16(0x3105, 0xfd); sensor_write_reg16(0x3106, 0x00); sensor_write_reg16(0x3107, 0xff); sensor_write_reg16(0x3300, 0x12); sensor_write_reg16(0x3301, 0xde); sensor_write_reg16(0x3302, 0xef); sensor_write_reg16(0x3316, 0xff); sensor_write_reg16(0x3317, 0x00); sensor_write_reg16(0x3308, 0xa5); sensor_write_reg16(0x3312, 0x26); sensor_write_reg16(0x3314, 0x42); sensor_write_reg16(0x3313, 0x2b); sensor_write_reg16(0x3315, 0x42); sensor_write_reg16(0x3310, 0xd0); sensor_write_reg16(0x3311, 0xbd); sensor_write_reg16(0x330c, 0x18); sensor_write_reg16(0x330d, 0x18); sensor_write_reg16(0x330e, 0x56); sensor_write_reg16(0x330f, 0x5c); sensor_write_reg16(0x330b, 0x1c); sensor_write_reg16(0x3306, 0x5c); sensor_write_reg16(0x3307, 0x11); sensor_write_reg16(0x336a, 0x52); sensor_write_reg16(0x3370, 0x46); sensor_write_reg16(0x3376, 0x38); sensor_write_reg16(0x30b8, 0x20); sensor_write_reg16(0x30b9, 0x17); sensor_write_reg16(0x30ba, 0x04); sensor_write_reg16(0x30bb, 0x08); sensor_write_reg16(0x3507, 0x06); sensor_write_reg16(0x350a, 0x4f); sensor_write_reg16(0x3100, 0x02); sensor_write_reg16(0x3301, 0xde); sensor_write_reg16(0x3304, 0xfc); sensor_write_reg16(0x3400, 0x00); sensor_write_reg16(0x3404, 0x00);// sensor_write_reg16(0x3404, 0x02); sensor_write_reg16(0x3012, 0x10); sensor_write_reg16(0x3023, 0x06); sensor_write_reg16(0x3026, 0x03); sensor_write_reg16(0x3027, 0x04); sensor_write_reg16(0x302a, 0x03); sensor_write_reg16(0x302b, 0x10); sensor_write_reg16(0x3075, 0x24); sensor_write_reg16(0x300d, 0x01); sensor_write_reg16(0x30d7, 0x90); sensor_write_reg16(0x3069, 0x04); sensor_write_reg16(0x303e, 0x00); sensor_write_reg16(0x303f, 0xc0); sensor_write_reg16(0x335f, 0x34); sensor_write_reg16(0x3360, 0x0c); sensor_write_reg16(0x3361, 0x04); sensor_write_reg16(0x3362, 0x34); sensor_write_reg16(0x3363, 0x08); sensor_write_reg16(0x3364, 0x04); sensor_write_reg16(0x3403, 0x42); sensor_write_reg16(0x3088, 0x04); sensor_write_reg16(0x3089, 0x00); sensor_write_reg16(0x308a, 0x03); sensor_write_reg16(0x308b, 0x00); sensor_write_reg16(0x308d, 0x04); sensor_write_reg16(0x3086, 0x03); sensor_write_reg16(0x3086, 0x00); sensor_write_reg16(0x3600, 0xc0); sensor_write_reg16(0x3302, 0xef); sensor_write_reg16(0x335f, 0x34); sensor_write_reg16(0x3360, 0x0c); sensor_write_reg16(0x3361, 0x04); sensor_write_reg16(0x3362, 0x12); sensor_write_reg16(0x3363, 0x88); sensor_write_reg16(0x3364, 0xe4); sensor_write_reg16(0x3403, 0x42); sensor_write_reg16(0x3088, 0x12); sensor_write_reg16(0x3089, 0x80); sensor_write_reg16(0x308a, 0x01); sensor_write_reg16(0x308b, 0xe0); sensor_write_reg16(0x304c, 0x83);} void init_ov3640_qvga(void) { sensor_write_reg16(0x3012, 0x80);//qvga -yuv mdelay(50); sensor_write_reg16(0x304d, 0x45);//qvga -yuv sensor_write_reg16(0x3087, 0x16); sensor_write_reg16(0x30aa, 0x45); sensor_write_reg16(0x30b0, 0xff); sensor_write_reg16(0x30b1, 0xff); sensor_write_reg16(0x30b2, 0x10); sensor_write_reg16(0x300e, 0x32); sensor_write_reg16(0x300f, 0x21); sensor_write_reg16(0x3010, 0x20); sensor_write_reg16(0x3011, 0x00); sensor_write_reg16(0x304c, 0x85); sensor_write_reg16(0x3018, 0x38); sensor_write_reg16(0x3019, 0x30); sensor_write_reg16(0x301a, 0x61); sensor_write_reg16(0x307d, 0x00); sensor_write_reg16(0x3087, 0x02); sensor_write_reg16(0x3082, 0x20); sensor_write_reg16(0x3015, 0x12); sensor_write_reg16(0x3014, 0x04); sensor_write_reg16(0x3013, 0xf7); sensor_write_reg16(0x303c, 0x08); sensor_write_reg16(0x303d, 0x18); sensor_write_reg16(0x303e, 0x06); sensor_write_reg16(0x303F, 0x0c); sensor_write_reg16(0x3030, 0x62); sensor_write_reg16(0x3031, 0x26); sensor_write_reg16(0x3032, 0xe6); sensor_write_reg16(0x3033, 0x6e); sensor_write_reg16(0x3034, 0xea); sensor_write_reg16(0x3035, 0xae); sensor_write_reg16(0x3036, 0xa6); sensor_write_reg16(0x3037, 0x6a); sensor_write_reg16(0x3104, 0x02); sensor_write_reg16(0x3105, 0xfd); sensor_write_reg16(0x3106, 0x00); sensor_write_reg16(0x3107, 0xff); sensor_write_reg16(0x3300, 0x12); sensor_write_reg16(0x3301, 0xde); sensor_write_reg16(0x3302, 0xef); sensor_write_reg16(0x3316, 0xff); sensor_write_reg16(0x3317, 0x00); sensor_write_reg16(0x3308, 0xa5); sensor_write_reg16(0x3312, 0x26); sensor_write_reg16(0x3314, 0x42); sensor_write_reg16(0x3313, 0x2b); sensor_write_reg16(0x3315, 0x42); sensor_write_reg16(0x3310, 0xd0); sensor_write_reg16(0x3311, 0xbd); sensor_write_reg16(0x330c, 0x18); sensor_write_reg16(0x330d, 0x18); sensor_write_reg16(0x330e, 0x56); sensor_write_reg16(0x330f, 0x5c); sensor_write_reg16(0x330b, 0x1c); sensor_write_reg16(0x3306, 0x5c); sensor_write_reg16(0x3307, 0x11); sensor_write_reg16(0x336a, 0x52); sensor_write_reg16(0x3370, 0x46); sensor_write_reg16(0x3376, 0x38); sensor_write_reg16(0x30b8, 0x20); sensor_write_reg16(0x30b9, 0x17); sensor_write_reg16(0x30ba, 0x04); sensor_write_reg16(0x30bb, 0x08); sensor_write_reg16(0x3100, 0x02); sensor_write_reg16(0x3301, 0xde); sensor_write_reg16(0x3304, 0xfc); sensor_write_reg16(0x3400, 0x00); sensor_write_reg16(0x3404, 0x00); sensor_write_reg16(0x3012, 0x10); sensor_write_reg16(0x3023, 0x06); sensor_write_reg16(0x3026, 0x03); sensor_write_reg16(0x3027, 0x04); sensor_write_reg16(0x302a, 0x03); sensor_write_reg16(0x302b, 0x10); sensor_write_reg16(0x3075, 0x24); sensor_write_reg16(0x300d, 0x01); sensor_write_reg16(0x30d7, 0x90); sensor_write_reg16(0x3069, 0x04); sensor_write_reg16(0x303e, 0x00); sensor_write_reg16(0x303f, 0xc0); sensor_write_reg16(0x335f, 0x34); sensor_write_reg16(0x3360, 0x0c); sensor_write_reg16(0x3361, 0x04); sensor_write_reg16(0x3362, 0x01); sensor_write_reg16(0x3363, 0x48); sensor_write_reg16(0x3364, 0xf4); sensor_write_reg16(0x3403, 0x42); sensor_write_reg16(0x3088, 0x01); sensor_write_reg16(0x3089, 0x40); sensor_write_reg16(0x308a, 0x00); sensor_write_reg16(0x308b, 0xf0); sensor_write_reg16(0x3600, 0xc0);#if 0 sensor_write_reg16(0x3100, 0x02);//transform to rgb565 sensor_write_reg16(0x3301, 0xde); sensor_write_reg16(0x3304, 0xfc); sensor_write_reg16(0x3400, 0x01); sensor_write_reg16(0x3404, 0x11); sensor_write_reg16(0x3600, 0xc0);#endif}/* QVGA when SVGA mode */void convert_to_jpeg(void) {// sensor_write_reg16(0x3404, 0x00); sensor_write_reg16(0x3100, 0x32); sensor_write_reg16(0x3304, 0xfc); sensor_write_reg16(0x3400, 0x02); sensor_write_reg16(0x3404, 0x22); sensor_write_reg16(0x3500, 0x00); sensor_write_reg16(0x3600, 0x42);//Vsync mode2 select sensor_write_reg16(0x3610, 0x00); sensor_write_reg16(0x3611, 0x20);//fixed width 1024 pclk sensor_write_reg16(0x3507, 0x04);// QScale sensor_write_reg16(0x350a, 0x4f); sensor_write_reg16(0x304c, 0x82);}void convert_to_qxga(void) { sensor_write_reg16(0x3012, 0x00); sensor_write_reg16(0x3020, 0x01); sensor_write_reg16(0x3021, 0x1d); sensor_write_reg16(0x3022, 0x00); sensor_write_reg16(0x3023, 0x0a); sensor_write_reg16(0x3024, 0x08); sensor_write_reg16(0x3025, 0x18); sensor_write_reg16(0x3026, 0x06); sensor_write_reg16(0x3027, 0x0c); sensor_write_reg16(0x302a, 0x06); sensor_write_reg16(0x302b, 0x20); sensor_write_reg16(0x3075, 0x44); sensor_write_reg16(0x300d, 0x00); sensor_write_reg16(0x30d7, 0x10); sensor_write_reg16(0x3069, 0x40); sensor_write_reg16(0x303e, 0x01); sensor_write_reg16(0x303f, 0x80); sensor_write_reg16(0x3302, 0xcf);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -