Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EthernetInterface FATFileSystem GR-PEACH_video GraphicsFramework HttpServer_snapshot R_BSP mbed-rpc mbed-rtos mbed
Revision 15:ce8cc3b3f6cb, committed 2016-05-13
- Comitter:
- RyoheiHagimoto
- Date:
- Fri May 13 10:15:34 2016 +0000
- Parent:
- 14:212f66386982
- Commit message:
- for OV4652
Changed in this revision
diff -r 212f66386982 -r ce8cc3b3f6cb camera_config.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camera_config.h Fri May 13 10:15:34 2016 +0000
@@ -0,0 +1,334 @@
+// Setting of Input Camera
+#ifndef NATIVE_CAMERA_CONFIG_H
+#define NATIVE_CAMERA_CONFIG_H
+
+#define NTSC 0
+#define CMOS 1
+#define INPUT_CAM (CMOS) /*0:NTSC 1:CMOS(OV5642) */
+
+#if (INPUT_CAM == NTSC)
+#else
+#define OV5642_INIT_TBL_NUM 318
+
+static const char * cam_init_tbl[OV5642_INIT_TBL_NUM] = {
+"Wr:78,03,31,03,93",
+"Wr:78,03,30,08,82",
+"Wr:78,03,30,17,7f",
+"Wr:78,03,30,18,fc",
+"Wr:78,03,38,10,c2",
+"Wr:78,03,36,15,f0",
+"Wr:78,03,30,00,00",
+"Wr:78,03,30,01,00",
+"Wr:78,03,30,02,00",
+"Wr:78,03,30,03,00",
+"Wr:78,03,30,00,f8",
+"Wr:78,03,30,01,48",
+"Wr:78,03,30,02,5c",
+"Wr:78,03,30,03,02",
+"Wr:78,03,30,04,07",
+"Wr:78,03,30,05,b7",
+"Wr:78,03,30,06,43",
+"Wr:78,03,30,07,37",
+"Wr:78,03,30,11,10", // PLL 0x08->0x10 (24MHz clockで30fps)
+"Wr:78,03,30,10,10",
+"Wr:78,03,46,0c,22",
+"Wr:78,03,38,15,04"
+"Wr:78,03,37,0d,06",
+"Wr:78,03,37,0c,a0",
+"Wr:78,03,36,02,fc",
+"Wr:78,03,36,12,ff",
+"Wr:78,03,36,34,c0",
+"Wr:78,03,36,13,00",
+"Wr:78,03,36,05,7c",
+"Wr:78,03,36,21,09",
+"Wr:78,03,36,22,00",
+"Wr:78,03,36,04,40",
+"Wr:78,03,36,03,a7",
+"Wr:78,03,36,03,27",
+"Wr:78,03,40,00,21",
+"Wr:78,03,40,1d,02",
+"Wr:78,03,36,00,54",
+"Wr:78,03,36,05,04",
+"Wr:78,03,36,06,3f",
+"Wr:78,03,3c,01,00",
+"Wr:78,03,50,00,4f",
+"Wr:78,03,50,20,04",
+"Wr:78,03,51,81,79",
+"Wr:78,03,51,82,00",
+"Wr:78,03,51,85,22",
+"Wr:78,03,51,97,01",
+"Wr:78,03,50,01,ff",
+"Wr:78,03,55,00,0a",
+"Wr:78,03,55,04,00",
+"Wr:78,03,55,05,7f",
+"Wr:78,03,50,80,08",
+"Wr:78,03,30,0e,18",
+"Wr:78,03,46,10,00",
+"Wr:78,03,47,1d,05",
+"Wr:78,03,47,08,06",
+"Wr:78,03,37,10,10",
+"Wr:78,03,36,32,41",
+"Wr:78,03,37,02,40",
+"Wr:78,03,36,20,37",
+"Wr:78,03,36,31,01",
+"Wr:78,03,38,08,02",
+"Wr:78,03,38,09,90", // 320->320+16
+"Wr:78,03,38,0a,01",
+"Wr:78,03,38,0b,f0", // 480->480+16
+"Wr:78,03,38,0e,07",
+"Wr:78,03,38,0f,d0",
+"Wr:78,03,50,1f,00",
+"Wr:78,03,50,00,4f",
+"Wr:78,03,43,00,30",
+"Wr:78,03,35,03,07",
+"Wr:78,03,35,01,73",
+"Wr:78,03,35,02,80",
+"Wr:78,03,35,0b,00",
+"Wr:78,03,35,03,07",
+"Wr:78,03,38,24,11",
+"Wr:78,03,35,01,1e",
+"Wr:78,03,35,02,80",
+"Wr:78,03,35,0b,7f",
+"Wr:78,03,38,0c,0a", // H total pixels 3200->2630
+"Wr:78,03,38,0d,46", // H total pixels 3200->2630
+"Wr:78,03,38,0e,03",
+"Wr:78,03,38,0f,e8",
+"Wr:78,03,3a,0d,04",
+"Wr:78,03,3a,0e,03",
+"Wr:78,03,38,18,c1",
+"Wr:78,03,37,05,db",
+"Wr:78,03,37,0a,81",
+"Wr:78,03,38,01,80",
+"Wr:78,03,36,21,c7",
+"Wr:78,03,38,01,50",
+"Wr:78,03,38,03,08",
+"Wr:78,03,38,27,08",
+"Wr:78,03,38,10,c0",
+"Wr:78,03,38,04,05",
+"Wr:78,03,38,05,00",
+"Wr:78,03,56,82,05",
+"Wr:78,03,56,83,00",
+"Wr:78,03,38,06,03",
+"Wr:78,03,38,07,c0",
+"Wr:78,03,56,86,03",
+"Wr:78,03,56,87,c0",
+"Wr:78,03,3a,00,78",
+"Wr:78,03,3a,1a,04",
+"Wr:78,03,3a,13,30",
+"Wr:78,03,3a,18,00",
+"Wr:78,03,3a,19,7c",
+"Wr:78,03,3a,08,12",
+"Wr:78,03,3a,09,c0",
+"Wr:78,03,3a,0a,0f",
+"Wr:78,03,3a,0b,a0",
+"Wr:78,03,30,04,ff",
+"Wr:78,03,35,0c,07",
+"Wr:78,03,35,0d,d0",
+"Wr:78,03,35,00,00",
+"Wr:78,03,35,01,00",
+"Wr:78,03,35,02,00",
+"Wr:78,03,35,0a,00",
+"Wr:78,03,35,0b,00",
+"Wr:78,03,35,03,00",
+"Wr:78,03,52,8a,02",
+"Wr:78,03,52,8b,04",
+"Wr:78,03,52,8c,08",
+"Wr:78,03,52,8d,08",
+"Wr:78,03,52,8e,08",
+"Wr:78,03,52,8f,10",
+"Wr:78,03,52,90,10",
+"Wr:78,03,52,92,00",
+"Wr:78,03,52,93,02",
+"Wr:78,03,52,94,00",
+"Wr:78,03,52,95,02",
+"Wr:78,03,52,96,00",
+"Wr:78,03,52,97,02",
+"Wr:78,03,52,98,00",
+"Wr:78,03,52,99,02",
+"Wr:78,03,52,9a,00",
+"Wr:78,03,52,9b,02",
+"Wr:78,03,52,9c,00",
+"Wr:78,03,52,9d,02",
+"Wr:78,03,52,9e,00",
+"Wr:78,03,52,9f,02",
+"Wr:78,03,3a,0f,3c",
+"Wr:78,03,3a,10,30",
+"Wr:78,03,3a,1b,3c",
+"Wr:78,03,3a,1e,30",
+"Wr:78,03,3a,11,70",
+"Wr:78,03,3a,1f,10",
+"Wr:78,03,30,30,0b",
+"Wr:78,03,3a,02,00",
+"Wr:78,03,3a,03,7d",
+"Wr:78,03,3a,04,00",
+"Wr:78,03,3a,14,00",
+"Wr:78,03,3a,15,7d",
+"Wr:78,03,3a,16,00",
+"Wr:78,03,3a,08,09",
+"Wr:78,03,3a,09,60",
+"Wr:78,03,3a,0a,07",
+"Wr:78,03,3a,0b,d0",
+"Wr:78,03,3a,0d,08",
+"Wr:78,03,3a,0e,06",
+"Wr:78,03,51,93,70",
+"Wr:78,03,36,20,57",
+"Wr:78,03,37,03,98",
+"Wr:78,03,37,04,1c",
+"Wr:78,03,58,9b,04",
+"Wr:78,03,58,9a,c5",
+"Wr:78,03,52,8a,00",
+"Wr:78,03,52,8b,02",
+"Wr:78,03,52,8c,08",
+"Wr:78,03,52,8d,10",
+"Wr:78,03,52,8e,20",
+"Wr:78,03,52,8f,28",
+"Wr:78,03,52,90,30",
+"Wr:78,03,52,92,00",
+"Wr:78,03,52,93,00",
+"Wr:78,03,52,94,00",
+"Wr:78,03,52,95,02",
+"Wr:78,03,52,96,00",
+"Wr:78,03,52,97,08",
+"Wr:78,03,52,98,00",
+"Wr:78,03,52,99,10",
+"Wr:78,03,52,9a,00",
+"Wr:78,03,52,9b,20",
+"Wr:78,03,52,9c,00",
+"Wr:78,03,52,9d,28",
+"Wr:78,03,52,9e,00",
+"Wr:78,03,52,9f,30",
+"Wr:78,03,52,82,00",
+"Wr:78,03,53,00,00",
+"Wr:78,03,53,01,20",
+"Wr:78,03,53,02,00",
+"Wr:78,03,53,03,7c",
+"Wr:78,03,53,0c,00",
+"Wr:78,03,53,0d,0c",
+"Wr:78,03,53,0e,20",
+"Wr:78,03,53,0f,80",
+"Wr:78,03,53,10,20",
+"Wr:78,03,53,11,80",
+"Wr:78,03,53,08,20",
+"Wr:78,03,53,09,40",
+"Wr:78,03,53,04,00",
+"Wr:78,03,53,05,30",
+"Wr:78,03,53,06,00",
+"Wr:78,03,53,07,80",
+"Wr:78,03,53,14,08",
+"Wr:78,03,53,15,20",
+"Wr:78,03,53,19,30",
+"Wr:78,03,53,16,10",
+"Wr:78,03,53,17,08",
+"Wr:78,03,53,18,02",
+"Wr:78,03,53,80,01",
+"Wr:78,03,53,81,00",
+"Wr:78,03,53,82,00",
+"Wr:78,03,53,83,4e",
+"Wr:78,03,53,84,00",
+"Wr:78,03,53,85,0f",
+"Wr:78,03,53,86,00",
+"Wr:78,03,53,87,00",
+"Wr:78,03,53,88,01",
+"Wr:78,03,53,89,15",
+"Wr:78,03,53,8a,00",
+"Wr:78,03,53,8b,31",
+"Wr:78,03,53,8c,00",
+"Wr:78,03,53,8d,00",
+"Wr:78,03,53,8e,00",
+"Wr:78,03,53,8f,0f",
+"Wr:78,03,53,90,00",
+"Wr:78,03,53,91,ab",
+"Wr:78,03,53,92,00",
+"Wr:78,03,53,93,a2",
+"Wr:78,03,53,94,08",
+"Wr:78,03,54,80,14",
+"Wr:78,03,54,81,21",
+"Wr:78,03,54,82,36",
+"Wr:78,03,54,83,57",
+"Wr:78,03,54,84,65",
+"Wr:78,03,54,85,71",
+"Wr:78,03,54,86,7d",
+"Wr:78,03,54,87,87",
+"Wr:78,03,54,88,91",
+"Wr:78,03,54,89,9a",
+"Wr:78,03,54,8a,aa",
+"Wr:78,03,54,8b,b8",
+"Wr:78,03,54,8c,cd",
+"Wr:78,03,54,8d,dd",
+"Wr:78,03,54,8e,ea",
+"Wr:78,03,54,8f,10",
+"Wr:78,03,54,90,05",
+"Wr:78,03,54,91,00",
+"Wr:78,03,54,92,04",
+"Wr:78,03,54,93,20",
+"Wr:78,03,54,94,03",
+"Wr:78,03,54,95,60",
+"Wr:78,03,54,96,02",
+"Wr:78,03,54,97,b8",
+"Wr:78,03,54,98,02",
+"Wr:78,03,54,99,86",
+"Wr:78,03,54,9a,02",
+"Wr:78,03,54,9b,5b",
+"Wr:78,03,54,9c,02",
+"Wr:78,03,54,9d,3b",
+"Wr:78,03,54,9e,02",
+"Wr:78,03,54,9f,1c",
+"Wr:78,03,54,a0,02",
+"Wr:78,03,54,a1,04",
+"Wr:78,03,54,a2,01",
+"Wr:78,03,54,a3,ed",
+"Wr:78,03,54,a4,01",
+"Wr:78,03,54,a5,c5",
+"Wr:78,03,54,a6,01",
+"Wr:78,03,54,a7,a5",
+"Wr:78,03,54,a8,01",
+"Wr:78,03,54,a9,6c",
+"Wr:78,03,54,aa,01",
+"Wr:78,03,54,ab,41",
+"Wr:78,03,54,ac,01",
+"Wr:78,03,54,ad,20",
+"Wr:78,03,54,ae,00",
+"Wr:78,03,54,af,16",
+"Wr:78,03,34,06,00",
+"Wr:78,03,51,92,04",
+"Wr:78,03,51,91,f8",
+"Wr:78,03,51,93,70",
+"Wr:78,03,51,94,f0",
+"Wr:78,03,51,95,f0",
+"Wr:78,03,51,8d,3d",
+"Wr:78,03,51,8f,54",
+"Wr:78,03,51,8e,3d",
+"Wr:78,03,51,90,54",
+"Wr:78,03,51,8b,c0",
+"Wr:78,03,51,8c,bd",
+"Wr:78,03,51,87,18",
+"Wr:78,03,51,88,18",
+"Wr:78,03,51,89,6e",
+"Wr:78,03,51,8a,68",
+"Wr:78,03,51,86,1c",
+"Wr:78,03,51,81,50",
+"Wr:78,03,51,84,25",
+"Wr:78,03,51,82,11",
+"Wr:78,03,51,83,14",
+"Wr:78,03,51,84,25",
+"Wr:78,03,51,85,24",
+"Wr:78,03,50,25,82",
+"Wr:78,03,3a,0f,7e",
+"Wr:78,03,3a,10,72",
+"Wr:78,03,3a,1b,80",
+"Wr:78,03,3a,1e,70",
+"Wr:78,03,3a,11,d0",
+"Wr:78,03,3a,1f,40",
+"Wr:78,03,55,83,40",
+"Wr:78,03,55,84,40",
+"Wr:78,03,55,80,02",
+"Wr:78,03,36,33,07",
+"Wr:78,03,37,02,10",
+"Wr:78,03,37,03,b2",
+"Wr:78,03,37,04,18",
+"Wr:78,03,37,0b,40",
+"Wr:78,03,37,0d,02",
+"Wr:78,03,36,20,52",
+};
+#endif
+#endif /* NATIVE_CAMERA_CONFIG_H */
diff -r 212f66386982 -r ce8cc3b3f6cb i2c_setting.cpp
--- a/i2c_setting.cpp Tue Apr 19 02:22:08 2016 +0000
+++ b/i2c_setting.cpp Fri May 13 10:15:34 2016 +0000
@@ -207,6 +207,7 @@
return false;
}
+
#if(0) /* Please enable this line when performing the setting from the Terminal side. */
Serial terminal(USBTX, USBRX);
static char recv_term_buffer[I2C_SETTING_STR_BUF_SIZE];
diff -r 212f66386982 -r ce8cc3b3f6cb i2c_setting.h --- a/i2c_setting.h Tue Apr 19 02:22:08 2016 +0000 +++ b/i2c_setting.h Fri May 13 10:15:34 2016 +0000 @@ -25,4 +25,5 @@ extern bool i2c_setting_exe(char * buf); + #endif
diff -r 212f66386982 -r ce8cc3b3f6cb main.cpp
--- a/main.cpp Tue Apr 19 02:22:08 2016 +0000
+++ b/main.cpp Fri May 13 10:15:34 2016 +0000
@@ -8,6 +8,7 @@
#include "RomRamFileSystem.h"
#include "file_table.h" //Binary data of web pages
#include "i2c_setting.h"
+#include "camera_config.h"
#define VIDEO_CVBS (0) /* Analog Video Signal */
#define VIDEO_CMOS_CAMERA (1) /* Digital Video Signal */
@@ -17,7 +18,7 @@
/**** User Selection *********/
/** Network setting **/
-#define USE_DHCP (1) /* Select 0(static configuration) or 1(use DHCP) */
+#define USE_DHCP (0) /* Select 0(static configuration) or 1(use DHCP) */
#if (USE_DHCP == 0)
#define IP_ADDRESS ("192.168.0.2") /* IP address */
#define SUBNET_MASK ("255.255.255.0") /* Subnet mask */
@@ -46,12 +47,19 @@
/*! Frame buffer stride: Frame buffer stride should be set to a multiple of 32 or 128
in accordance with the frame buffer burst transfer mode. */
+#if (1) /* for OV4652 */
+#define PIXEL_HW (640u) /* VGA */
+#define PIXEL_VW (480u) /* VGA */
+#else
#define PIXEL_HW (320u) /* QVGA */
#define PIXEL_VW (240u) /* QVGA */
+#endif
#define VIDEO_BUFFER_STRIDE (((PIXEL_HW * DATA_SIZE_PER_PIC) + 31u) & ~31u)
#define VIDEO_BUFFER_HEIGHT (PIXEL_VW)
+#define OV5642_INIT_BUF_SIZE 17
+
EthernetInterface network;
RomRamFileSystem romramfs("romram");
@@ -64,6 +72,15 @@
#endif
static volatile int32_t vsync_count = 0;
static volatile int32_t vfield_count = 1;
+#if (1) /* for OV5642 */
+#if defined(__ICCARM__)
+#pragma data_alignment=8
+static uint8_t JpegBuffer[2][1024 * 100]@ ".mirrorram"; //8 bytes aligned!;
+#pragma data_alignment=4
+#else
+static uint8_t JpegBuffer[2][1024 * 100]__attribute((section("NC_BSS"),aligned(8))); //8 bytes aligned!;
+#endif
+#else /* for OV5642 */
#if defined(__ICCARM__)
#pragma data_alignment=8
static uint8_t JpegBuffer[2][1024 * 50]@ ".mirrorram"; //8 bytes aligned!;
@@ -71,6 +88,7 @@
#else
static uint8_t JpegBuffer[2][1024 * 50]__attribute((section("NC_BSS"),aligned(8))); //8 bytes aligned!;
#endif
+#endif /* for OV5642 */
static size_t jcu_encode_size[2];
static int image_change = 0;
JPEG_Converter Jcu;
@@ -80,6 +98,17 @@
static int jcu_encoding = 0;
static char i2c_setting_str_buf[I2C_SETTING_STR_BUF_SIZE];
+extern void analy_and_exe(char * buf);
+static void OV5642_Init(void) {
+ char camera_init_buffer[OV5642_INIT_BUF_SIZE];
+ int cnt;
+
+ for(cnt = 0; cnt < OV5642_INIT_TBL_NUM; cnt++) {
+ memcpy(&camera_init_buffer[0], cam_init_tbl[cnt], OV5642_INIT_BUF_SIZE);
+ i2c_setting_exe(&camera_init_buffer[0]);
+ }
+}
+
static void JcuEncodeCallBackFunc(JPEG_Converter::jpeg_conv_error_t err_code) {
jcu_buf_index_write_done = jcu_buf_index_write;
image_change = 1;
@@ -150,6 +179,9 @@
};
#endif
+ /* Initialize OV5642 */
+ OV5642_Init();
+
/* Create DisplayBase object */
DisplayBase Display;
@@ -176,14 +208,27 @@
ext_in_config.inp_endian_on = DisplayBase::OFF; /* External input bit endian change on/off */
ext_in_config.inp_swap_on = DisplayBase::OFF; /* External input B/R signal swap on/off */
ext_in_config.inp_vs_inv = DisplayBase::SIG_POL_NOT_INVERTED; /* External input DV_VSYNC inversion control */
+#if (1) /* for OV4652 */
+ ext_in_config.inp_hs_inv = DisplayBase::SIG_POL_NOT_INVERTED; /* External input DV_HSYNC inversion control */
+#else
ext_in_config.inp_hs_inv = DisplayBase::SIG_POL_INVERTED; /* External input DV_HSYNC inversion control */
- ext_in_config.inp_f525_625 = DisplayBase::EXTIN_LINE_525; /* Number of lines for BT.656 external input */
+#endif
+ ext_in_config.inp_f525_625 = DisplayBase::EXTIN_LINE_525; /* Number of lines for BT.656 external input */
+#if (1) /* for OV4652 */
+ ext_in_config.inp_h_pos = DisplayBase::EXTIN_H_POS_YCBYCR; /* Y/Cb/Y/Cr data string start timing to Hsync reference */
+ ext_in_config.cap_vs_pos = 5; /* Capture start position from Vsync */
+ ext_in_config.cap_hs_pos = 16; /* Capture start position form Hsync */
+ ext_in_config.cap_width = ((640u-16u)); /* Capture width */
+ ext_in_config.cap_height = 468u; /* Capture height Max 468[line]
+ Due to CMOS(MT9V111) output signal timing and VDC5 specification */
+#else
ext_in_config.inp_h_pos = DisplayBase::EXTIN_H_POS_CRYCBY; /* Y/Cb/Y/Cr data string start timing to Hsync reference */
ext_in_config.cap_vs_pos = 6; /* Capture start position from Vsync */
ext_in_config.cap_hs_pos = 150; /* Capture start position form Hsync */
ext_in_config.cap_width = 640; /* Capture width */
ext_in_config.cap_height = 468u; /* Capture height Max 468[line]
Due to CMOS(MT9V111) output signal timing and VDC5 specification */
+#endif
error = Display.Graphics_Video_init( DisplayBase::INPUT_SEL_EXT, &ext_in_config);
if( error != DisplayBase::GRAPHICS_OK ) {
printf("Line %d, error %d\n", __LINE__, error);