Port of TI's CC3100 Websock camera demo. Using FreeRTOS, mbedTLS, also parts of Arducam for cams ov5642 and 0v2640. Can also use MT9D111. Work in progress. Be warned some parts maybe a bit flacky. This is for Seeed Arch max only, for an M3, see the demo for CM3 using the 0v5642 aducam mini.
Revision 21:38c6b11aa348, committed 2015-09-15
- Comitter:
- dflet
- Date:
- Tue Sep 15 15:39:38 2015 +0000
- Parent:
- 20:409ebd125b9c
- Child:
- 22:f9b5e0b80bf2
- Commit message:
- Removed some debug. Did some more work on the MT9D111 camera, which now works in jpeg mode.
Changed in this revision
--- a/camera_app/camera_app.cpp Sat Sep 12 22:38:40 2015 +0000
+++ b/camera_app/camera_app.cpp Tue Sep 15 15:39:38 2015 +0000
@@ -74,7 +74,6 @@
// Macros
//*****************************************************************************
#define USER_FILE_NAME "www/images/cc3200_camera_capture.jpg"
-//#define TOTAL_DMA_ELEMENTS 64
#define AP_SSID_LEN_MAX (33)
#define ROLE_INVALID (-5)
//*****************************************************************************
@@ -108,8 +107,8 @@
#ifdef ENABLE_JPEG
char g_header[SMTP_BUF_LEN] /*= {'\0'}*/;
#endif
-// uint32_t g_image_buffer[NUM_OF_4B_CHUNKS];//60Kb 15360, 50Kb 12800
- uint32_t g_image_buffer[((IMAGE_BUF_SIZE)/(sizeof(unsigned int)))];//51Kb
+ uint32_t g_image_buffer[((IMAGE_BUF_SIZE)/(sizeof(unsigned int)))];//25Kb
+ uint8_t sec_image_buffer[26 * 1024];
};
ImageBuffer g_image;
@@ -347,7 +346,9 @@
{
uint32_t g_header_length = 0;
+ uint32_t image_size = 0;
uint32_t *pbuffer = &(g_image.g_image_buffer[0]);
+ uint8_t *sec_pbuffer = &(g_image.sec_image_buffer[0]);
// int32_t lRetVal= -1;
int32_t err = 0;
#ifdef MT9D111_CAM
@@ -356,10 +357,11 @@
picLoop++;
DMAConfig();
- wait(1);
+// wait(1);
#ifdef MT9D111_CAM
/* Send cam capture request, value in frames */
Start_still_capture(1);// Switch to context b
+ wait(1);
#endif
//
// DCMI Perform Image Capture
@@ -381,7 +383,7 @@
err = HAL_DMA_GetState(&phdma_dcmi);
HttpDebug("\r\nDMA error! 0x%x\r\n",err);
HttpDebug("\r\nDMA error! 0x%x\r\n",phdma_dcmi.ErrorCode);
- HttpDebug("g_frame_size_in_bytes = 0x%x\n\r",g_frame_size_in_bytes);
+ HttpDebug("g_frame_size_in_bytes = 0x%x\r\n",g_frame_size_in_bytes);
HttpDebug("\r\nFailed to capture data, check camera connections!\r\n");
HAL_DMA_Abort(&phdma_dcmi);
#ifdef MT9D111_CAM
@@ -399,29 +401,28 @@
#ifdef MT9D111_CAM
memcpy(Image + g_frame_size_in_bytes, jpeg_end, 2);
g_frame_size_in_bytes += 2;
-#endif
+#endif
+
//
// Create JPEG Header
//
#ifdef MT9D111_CAM
#ifdef ENABLE_JPEG
memset(g_image.g_header, '\0', sizeof(g_image.g_header));
- g_header_length = CreateJpegHeader((char *)&(g_image.g_header[0]), PIXELS_IN_X_AXIS, PIXELS_IN_Y_AXIS, 0, 0x0020, 9);
+ g_header_length = CreateJpegHeader((char *)&(g_image.g_header[0]), PIXELS_IN_X_AXIS, PIXELS_IN_Y_AXIS, 0, 0x0020, 8);
- // This pushes the header to the start of the array so that the entire picture can be contiguous in memory
- memcpy(Image + g_header_length, Image, g_frame_size_in_bytes);
- memcpy(Image, g_image.g_header, g_header_length);
-
- // This pushes the header to the end of the array so that the entire picture can be contiguous in memory
-// memcpy((Image + g_frame_size_in_bytes ), g_image.g_header, g_header_length);
- wait_ms(100);
- HttpDebug("Capture Image %d\n\r",picLoop);
+ // This pushes the header to the start of the array so that the entire picture can be contiguous in memory
+ memcpy(sec_pbuffer + g_header_length, Image, g_frame_size_in_bytes);
+ memcpy(sec_pbuffer, g_image.g_header, g_header_length);
+
+ image_size = g_header_length + g_frame_size_in_bytes;
+ HttpDebug("\r\nCapture Image %d size 0x%x\r\n",picLoop, image_size);
#endif//ENABLE_JPEG
- *WriteBuffer = (char*)Image;
+ *WriteBuffer = (char*)g_image.sec_image_buffer;
return(g_header_length += g_frame_size_in_bytes);
#endif//MT9D111_CAM
- HttpDebug("\r\nCapture Image %d\r\n",picLoop);
- *WriteBuffer = (char*)Image;
+ HttpDebug("\r\nCapture Image %d size 0x%x\r\n",picLoop, image_size);
+ *WriteBuffer = (char*)g_image.sec_image_buffer;
return(g_frame_size_in_bytes);
}
@@ -452,7 +453,7 @@
phdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING;//Data clocked out on rising edge
// phdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_FALLING;//Data clocked out on falling edge
phdcmi.Init.VSPolarity = DCMI_VSPOLARITY_LOW;//Active high
- phdcmi.Init.HSPolarity = DCMI_HSPOLARITY_HIGH;//Active high
+ phdcmi.Init.HSPolarity = DCMI_HSPOLARITY_LOW;//Active high
#endif
phdcmi.Init.CaptureRate = DCMI_CR_ALL_FRAME;
phdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;//8 bit data
--- a/camera_app/camera_app.h Sat Sep 12 22:38:40 2015 +0000 +++ b/camera_app/camera_app.h Tue Sep 15 15:39:38 2015 +0000 @@ -60,8 +60,8 @@ extern int PIXELS_IN_X_AXIS; extern int PIXELS_IN_X_AXIS; extern int FRAME_SIZE_IN_BYTES; -//#define NUM_OF_1KB_BUFFERS 50 -#define NUM_OF_1KB_BUFFERS 51//50 + +#define NUM_OF_1KB_BUFFERS 25 #define BYTES_PER_PIXEL (2) // RGB 565 @@ -69,7 +69,6 @@ #define ONE_KB (1024) #define IMAGE_BUF_SIZE (ONE_KB * NUM_OF_1KB_BUFFERS) -//#define NUM_OF_4B_CHUNKS ((IMAGE_BUF_SIZE)/(sizeof(unsigned int))) #define NUM_OF_4B_CHUNKS ((IMAGE_BUF_SIZE - ONE_KB)/(sizeof(unsigned int))) #define NUM_OF_1KB_CHUNKS (IMAGE_BUF_SIZE/ONE_KB) #define NUM_OF_4B_CHUNKS_IN_1KB (ONE_KB/(sizeof(unsigned int)))
--- a/camera_app/mt9d111/mt9d111.cpp Sat Sep 12 22:38:40 2015 +0000
+++ b/camera_app/mt9d111/mt9d111.cpp Tue Sep 15 15:39:38 2015 +0000
@@ -70,6 +70,7 @@
{0, 0x65, 0xA000 }, // Bypass the PLL
{1, 0xC3, 0x0501 }, // Perform MCU reset
{0, 0x0D, 0x0021 }, // Enable soft reset
+ {100, 0x00, 0x0032 }, // Delay = 50ms
{0, 0x0D, 0x0000 }, // Disable soft reset
{100, 0x00, 0x01f4 }, // Delay = 500ms
};
@@ -102,7 +103,7 @@
{1, 0xC8, 0x0005 }, // SEQ_CMD (Refresh)
// Set maximum integration time to get a minimum of 15 fps at 45MHz
{1, 0xC6, 0xA20E }, // AE_MAX_INDEX
- {1, 0xC8, 0x0004}, // AE_MAX_INDEX
+ {1, 0xC8, 0x0004 }, // AE_MAX_INDEX
{1, 0xC6, 0xA102 }, // SEQ_MODE
{1, 0xC8, 0x0001 }, // SEQ_MODE
{1, 0xC6, 0xA102 }, // SEQ_MODE
@@ -158,7 +159,7 @@
{1, 0xC6, 0x270B }, // MODE_CONFIG
{1, 0xC8, 0x0030 }, // MODE_CONFIG, JPEG disabled for A and B = 0x0030
{1, 0xC6, 0xA103 }, // SEQ_CMD
- {1, 0xC8, 0x0005 } // SEQ_CMD, refresh = 0x0005
+ {1, 0xC8, 0x0005 }, // SEQ_CMD, refresh = 0x0005
{100, 0x00, 0x01f4 }, // Delay = 500ms
};
#else
@@ -167,8 +168,8 @@
// {100, 0x00, 0x0064 }, // Delay =100ms
{0, 0x65, 0xE000 }, // Power DOWN PLL
{100, 0x00, 0x01F4 }, // Delay =500ms
-// {0, 0x66, 0x3003 }, // M = 48 N = 3 PLL fIN = 8MHz fOUT = 24MHz
- {0, 0x66, 0x7801 }, // M = 120 N = 1 PLL fIN = 8MHz fOUT = 60MHz
+ {0, 0x66, 0x3003 }, // M = 48 N = 3 PLL fIN = 8MHz fOUT = 24MHz
+// {0, 0x66, 0x7801 }, // M = 120 N = 1 PLL fIN = 8MHz fOUT = 60MHz
{0, 0x67, 0x0501 }, // P = 1
{0, 0x65, 0xA000 }, // Disable PLL
{100, 0x00, 0x01F4 }, // Delay =500ms
@@ -177,20 +178,9 @@
};
static const s_RegList capture_cmds_list[]= {
-// {0, 0x65, 0xA000 }, // Disable PLL
-// {100, 0x00, 0x0064 }, // Delay =500ms
-// {0, 0x65, 0xE000 }, // Power DOWN PLL
-// {100, 0x00, 0x0064 }, // Delay =500ms
-// {0, 0x66, 0x3003 }, // M = 48 N = 3 PLL fIN = 8MHz fOUT = 24MHz
-// {0, 0x67, 0x0201 }, // P = 1
-// {0, 0x65, 0xA000 }, // Disable PLL
-// {100, 0x00, 0x0064 }, // Delay =500ms
-// {0, 0x65, 0x2000 }, // Enable PLL
-// {100, 0x00, 0x01F4 }, // Delay =500ms
+
{0, 0x20, 0x0000 }, // READ_MODE_B (Image flip settings)
-// {100, 0x00, 0x01F4 }, // Delay =500ms
-// {100, 0x00, 0x01F4 }, // Delay =500ms
-// {100, 0x00, 0x01F4 }, // Delay =500ms
+ {100, 0x00, 0x00FA }, // Delay =250ms
{1, 0xC6, 0xA102 }, // SEQ_MODE
{1, 0xC8, 0x0001 }, // SEQ_MODE
{1, 0xC6, 0xA102 }, // SEQ_MODE
@@ -206,10 +196,10 @@
{1, 0xC6, 0xA906 }, // Format YCbCr422
{1, 0xC8, 0x0000 },
{1, 0xC6, 0xA90A }, // Set the qscale1
- {1, 0xC8, 0x0089 },
+ {1, 0xC8, 0x0088 },
{1, 0xC6, 0x2908 }, // Set the restartInt
{1, 0xC8, 0x0020 },
-// {100, 0x00, 0x01F4 }, // Delay =500ms
+ {100, 0x00, 0x00FA }, // Delay =250ms
{1, 0xC6, 0x2707 }, // MODE_OUTPUT_WIDTH_B
#ifdef XGA_FRAME
{1, 0xC8, 1024 },
@@ -218,7 +208,7 @@
{1, 0xC8, 640 },
#endif
#ifdef QVGA_FRAME
- {1, 0xC8, 240 },
+ {1, 0xC8, 320 },
#endif
{1, 0xC6, 0x2709 }, // MODE_OUTPUT_HEIGHT_B
#ifdef XGA_FRAME
@@ -228,61 +218,22 @@
{1, 0xC8, 480 },
#endif
#ifdef QVGA_FRAME
- {1, 0xC8, 320 },
+ {1, 0xC8, 240 },
#endif
{1, 0xC6, 0x2735 }, // MODE_CROP_X0_B
- {1, 0xC8, 0x0000 },
+ {1, 0xC8, 640 },
{1, 0xC6, 0x2737 }, // MODE_CROP_X1_B
{1, 0xC8, 1600 },
{1, 0xC6, 0x2739 }, // MODE_CROP_Y0_B
- {1, 0xC8, 0x0000 },
+ {1, 0xC8, 480 },
{1, 0xC6, 0x273B }, // MODE_CROP_Y1_B
{1, 0xC8, 1200 },
-// {1, 0xC6, 0xA103 }, //SEQ_CMD
-// {1, 0xC8, 0x0005 }, //SEQ_CMD, refresh
-// {1, 0xC6, 0xA103 }, // SEQ_CMD, Do capture
-// {1, 0xC8, 0x0002 },
-// {100, 0x00, 0x01f4 }, // Delay = 500ms
+ {1, 0xC6, 0xA103 }, //SEQ_CMD
+ {1, 0xC8, 0x0005 }, //SEQ_CMD, refresh
+ {100, 0x00, 0x00FA }, // Delay = 250ms
// {111, 0xC8,0x0002 }, //Wait for sequencer change
};
-/*
-static const s_RegList capture_cmds_list[]= {
-// {0, 0x65, 0xA000 }, // Disable PLL
-// {0, 0x65, 0xE000 }, // Power DOWN PLL
-// {100, 0x00, 0x01F4 }, // Delay =500ms
-// {0, 0x66, 0x500B },
-// {0, 0x67, 0x0500 },
-// {0, 0x65, 0xA000 }, // Disable PLL
-// {100, 0x00, 0x01F4 }, // Delay =500ms
-// {0, 0x65, 0x2000 }, // Enable PLL
-// {100, 0x00, 0x01F4 }, // Delay =500ms
- {0, 0x20, 0x0000 }, // READ_MODE_B (Image flip settings)
-// {100, 0x00, 0x01F4 }, // Delay =500ms
-// {100, 0x00, 0x01F4 }, // Delay =500ms
-// {100, 0x00, 0x01F4 }, // Delay =500ms
- {1, 0xC6, 0xA102 }, // SEQ_MODE
- {1, 0xC8, 0x0001 }, // SEQ_MODE
- {1, 0xC6, 0xA102 }, // SEQ_MODE
- {1, 0xC8, 0x0005 }, // SEQ_MODE
- {1, 0xC6, 0xA120 }, // Enable Capture video
- {1, 0xC8, 0x0002 },
- {1, 0xC6, 0x270B }, // Mode config, disable JPEG bypass
- {1, 0xC8, 0x0000 },
- {1, 0xC6, 0x2702 }, // FIFO_config0b, no spoof, adaptive clock
- {1, 0xC8, 0x001E },
- {1, 0xC6, 0xA907 }, // JPEG mode config, video
- {1, 0xC8, 0x0035 },
- {1, 0xC6, 0xA906 }, // Format YCbCr422
- {1, 0xC8, 0x0000 },
- {1, 0xC6, 0xA90A }, // Set the qscale1
- {1, 0xC8, 0x0089 },
- {1, 0xC6, 0x2908 }, // Set the restartInt
- {1, 0xC8, 0x0020 },
- {100, 0x00, 0x01f4 }, // Delay = 500ms
-};
-*/
-
static const s_RegList bypass_pll_list[]= {
{0, 0x65, 0xA000 }, // Disable PLL
{100, 0x00, 0x01F4 }, // Delay =500ms
@@ -398,555 +349,10 @@
{2, 0xAD, 0x0000 }, // GLOBAL_OFFSET_FXY_FUNCTION
{2, 0xAE, 0x0000 }, // K_FACTOR_IN_K_FX_FY
{1, 0x08, 0x01FC }, // COLOR_PIPELINE_CONTROL
- {100, 0x00, 0x0064 }, // Delay =100ms
+ {100, 0x00, 0x00C8 }, // Delay =200ms
{1, 0xBE, 0x0004 }, // YUV_YCBCR_CONTROL
-/**/ {0, 0x65, 0xA000 }, // PLL CLOCK_ENABLING
-/**/ {100, 0x00, 0x0064 }, // Delay =100ms
-/* {1, 0xC6, 0x104C }, // MCU_ADDRESS
- {1, 0xC8, 0x0000 }, // MCU_DATA_0
- {1, 0xC6, 0x0400 }, // MCU_ADDRESS
- {1, 0xC8, 0x3736 }, // MCU_DATA_0
- {1, 0xC9, 0x3C3C }, // MCU_DATA_1
- {1, 0xCA, 0x3C3C }, // MCU_DATA_2
- {1, 0xCB, 0x30EC }, // MCU_DATA_3
- {1, 0xCC, 0x08BD }, // MCU_DATA_4
- {1, 0xCD, 0xA1B6 }, // MCU_DATA_5
- {1, 0xCE, 0xD6A9 }, // MCU_DATA_6
- {1, 0xCF, 0xF102 }, // MCU_DATA_7
- {1, 0xC6, 0x0410 }, // MCU_ADDRESS
- {1, 0xC8, 0xBD22 }, // MCU_DATA_0
- {1, 0xC9, 0x6DF6 }, // MCU_DATA_1
- {1, 0xCA, 0x02BE }, // MCU_DATA_2
- {1, 0xCB, 0x4F30 }, // MCU_DATA_3
- {1, 0xCC, 0xED06 }, // MCU_DATA_4
- {1, 0xCD, 0xF602 }, // MCU_DATA_5
- {1, 0xCE, 0xC1ED }, // MCU_DATA_6
- {1, 0xCF, 0x04EC }, // MCU_DATA_7
- {1, 0xC6, 0x0420 }, // MCU_ADDRESS
- {1, 0xC8, 0x06A3 }, // MCU_DATA_0
- {1, 0xC9, 0x04ED }, // MCU_DATA_1
- {1, 0xCA, 0x02D6 }, // MCU_DATA_2
- {1, 0xCB, 0xA94F }, // MCU_DATA_3
- {1, 0xCC, 0xED00 }, // MCU_DATA_4
- {1, 0xCD, 0xF602 }, // MCU_DATA_5
- {1, 0xCE, 0xBDBD }, // MCU_DATA_6
- {1, 0xCF, 0xD268 }, // MCU_DATA_7
- {1, 0xC6, 0x0430 }, // MCU_ADDRESS
- {1, 0xC8, 0xF602 }, // MCU_DATA_0
- {1, 0xC9, 0xBE30 }, // MCU_DATA_1
- {1, 0xCA, 0xE003 }, // MCU_DATA_2
- {1, 0xCB, 0xF702 }, // MCU_DATA_3
- {1, 0xCC, 0xC7F6 }, // MCU_DATA_4
- {1, 0xCD, 0x02BF }, // MCU_DATA_5
- {1, 0xCE, 0x4FED }, // MCU_DATA_6
- {1, 0xCF, 0x06F6 }, // MCU_DATA_7
- {1, 0xC6, 0x0440 }, // MCU_ADDRESS
- {1, 0xC8, 0x02C2 }, // MCU_DATA_0
- {1, 0xC9, 0xED04 }, // MCU_DATA_1
- {1, 0xCA, 0xEC06 }, // MCU_DATA_2
- {1, 0xCB, 0xA304 }, // MCU_DATA_3
- {1, 0xCC, 0xED02 }, // MCU_DATA_4
- {1, 0xCD, 0xD6A9 }, // MCU_DATA_5
- {1, 0xCE, 0x4FED }, // MCU_DATA_6
- {1, 0xCF, 0x00F6 }, // MCU_DATA_7
- {1, 0xC6, 0x0450 }, // MCU_ADDRESS
- {1, 0xC8, 0x02BD }, // MCU_DATA_0
- {1, 0xC9, 0xBDD2 }, // MCU_DATA_1
- {1, 0xCA, 0x68F6 }, // MCU_DATA_2
- {1, 0xCB, 0x02BF }, // MCU_DATA_3
- {1, 0xCC, 0x30E0 }, // MCU_DATA_4
- {1, 0xCD, 0x03F7 }, // MCU_DATA_5
- {1, 0xCE, 0x02C8 }, // MCU_DATA_6
- {1, 0xCF, 0xF602 }, // MCU_DATA_7
- {1, 0xC6, 0x0460 }, // MCU_ADDRESS
- {1, 0xC8, 0xC04F }, // MCU_DATA_0
- {1, 0xC9, 0xED06 }, // MCU_DATA_1
- {1, 0xCA, 0xF602 }, // MCU_DATA_2
- {1, 0xCB, 0xC3ED }, // MCU_DATA_3
- {1, 0xCC, 0x04EC }, // MCU_DATA_4
- {1, 0xCD, 0x06A3 }, // MCU_DATA_5
- {1, 0xCE, 0x04ED }, // MCU_DATA_6
- {1, 0xCF, 0x02D6 }, // MCU_DATA_7
- {1, 0xC6, 0x0470 }, // MCU_ADDRESS
- {1, 0xC8, 0xA94F }, // MCU_DATA_0
- {1, 0xC9, 0xED00 }, // MCU_DATA_1
- {1, 0xCA, 0xF602 }, // MCU_DATA_2
- {1, 0xCB, 0xBDBD }, // MCU_DATA_3
- {1, 0xCC, 0xD268 }, // MCU_DATA_4
- {1, 0xCD, 0xF602 }, // MCU_DATA_5
- {1, 0xCE, 0xC07E }, // MCU_DATA_6
- {1, 0xCF, 0x050B }, // MCU_DATA_7
- {1, 0xC6, 0x0480 }, // MCU_ADDRESS
- {1, 0xC8, 0xF602 }, // MCU_DATA_0
- {1, 0xC9, 0xC44F }, // MCU_DATA_1
- {1, 0xCA, 0x30ED }, // MCU_DATA_2
- {1, 0xCB, 0x06F6 }, // MCU_DATA_3
- {1, 0xCC, 0x02C1 }, // MCU_DATA_4
- {1, 0xCD, 0xED04 }, // MCU_DATA_5
- {1, 0xCE, 0xEC06 }, // MCU_DATA_6
- {1, 0xCF, 0xA304 }, // MCU_DATA_7
- {1, 0xC6, 0x0490 }, // MCU_ADDRESS
- {1, 0xC8, 0xED02 }, // MCU_DATA_0
- {1, 0xC9, 0xD6A8 }, // MCU_DATA_1
- {1, 0xCA, 0x4FED }, // MCU_DATA_2
- {1, 0xCB, 0x06D6 }, // MCU_DATA_3
- {1, 0xCC, 0xA9ED }, // MCU_DATA_4
- {1, 0xCD, 0x04EC }, // MCU_DATA_5
- {1, 0xCE, 0x06A3 }, // MCU_DATA_6
- {1, 0xCF, 0x04ED }, // MCU_DATA_7
- {1, 0xC6, 0x04A0 }, // MCU_ADDRESS
- {1, 0xC8, 0x00F6 }, // MCU_DATA_0
- {1, 0xC9, 0x02BD }, // MCU_DATA_1
- {1, 0xCA, 0x4FBD }, // MCU_DATA_2
- {1, 0xCB, 0xD268 }, // MCU_DATA_3
- {1, 0xCC, 0xF602 }, // MCU_DATA_4
- {1, 0xCD, 0xC430 }, // MCU_DATA_5
- {1, 0xCE, 0xE003 }, // MCU_DATA_6
- {1, 0xCF, 0xF702 }, // MCU_DATA_7
- {1, 0xC6, 0x04B0 }, // MCU_ADDRESS
- {1, 0xC8, 0xC7F6 }, // MCU_DATA_0
- {1, 0xC9, 0x02C5 }, // MCU_DATA_1
- {1, 0xCA, 0x4FED }, // MCU_DATA_2
- {1, 0xCB, 0x06F6 }, // MCU_DATA_3
- {1, 0xCC, 0x02C2 }, // MCU_DATA_4
- {1, 0xCD, 0xED04 }, // MCU_DATA_5
- {1, 0xCE, 0xEC06 }, // MCU_DATA_6
- {1, 0xCF, 0xA304 }, // MCU_DATA_7
- {1, 0xC6, 0x04C0 }, // MCU_ADDRESS
- {1, 0xC8, 0xED02 }, // MCU_DATA_0
- {1, 0xC9, 0xD6A8 }, // MCU_DATA_1
- {1, 0xCA, 0x4FED }, // MCU_DATA_2
- {1, 0xCB, 0x06D6 }, // MCU_DATA_3
- {1, 0xCC, 0xA9ED }, // MCU_DATA_4
- {1, 0xCD, 0x04EC }, // MCU_DATA_5
- {1, 0xCE, 0x06A3 }, // MCU_DATA_6
- {1, 0xCF, 0x04ED }, // MCU_DATA_7
- {1, 0xC6, 0x04D0 }, // MCU_ADDRESS
- {1, 0xC8, 0x00F6 }, // MCU_DATA_0
- {1, 0xC9, 0x02BD }, // MCU_DATA_1
- {1, 0xCA, 0x4FBD }, // MCU_DATA_2
- {1, 0xCB, 0xD268 }, // MCU_DATA_3
- {1, 0xCC, 0xF602 }, // MCU_DATA_4
- {1, 0xCD, 0xC530 }, // MCU_DATA_5
- {1, 0xCE, 0xE003 }, // MCU_DATA_6
- {1, 0xCF, 0xF702 }, // MCU_DATA_7
- {1, 0xC6, 0x04E0 }, // MCU_ADDRESS
- {1, 0xC8, 0xC8F6 }, // MCU_DATA_0
- {1, 0xC9, 0x02C6 }, // MCU_DATA_1
- {1, 0xCA, 0x4FED }, // MCU_DATA_2
- {1, 0xCB, 0x06F6 }, // MCU_DATA_3
- {1, 0xCC, 0x02C3 }, // MCU_DATA_4
- {1, 0xCD, 0xED04 }, // MCU_DATA_5
- {1, 0xCE, 0xEC06 }, // MCU_DATA_6
- {1, 0xCF, 0xA304 }, // MCU_DATA_7
- {1, 0xC6, 0x04F0 }, // MCU_ADDRESS
- {1, 0xC8, 0xED02 }, // MCU_DATA_0
- {1, 0xC9, 0xD6A8 }, // MCU_DATA_1
- {1, 0xCA, 0x4FED }, // MCU_DATA_2
- {1, 0xCB, 0x06D6 }, // MCU_DATA_3
- {1, 0xCC, 0xA9ED }, // MCU_DATA_4
- {1, 0xCD, 0x04EC }, // MCU_DATA_5
- {1, 0xCE, 0x06A3 }, // MCU_DATA_6
- {1, 0xCF, 0x04ED }, // MCU_DATA_7
- {1, 0xC6, 0x0500 }, // MCU_ADDRESS
- {1, 0xC8, 0x00F6 }, // MCU_DATA_0
- {1, 0xC9, 0x02BD }, // MCU_DATA_1
- {1, 0xCA, 0x4FBD }, // MCU_DATA_2
- {1, 0xCB, 0xD268 }, // MCU_DATA_3
- {1, 0xCC, 0xF602 }, // MCU_DATA_4
- {1, 0xCD, 0xC630 }, // MCU_DATA_5
- {1, 0xCE, 0xE003 }, // MCU_DATA_6
- {1, 0xCF, 0xF702 }, // MCU_DATA_7
- {1, 0xC6, 0x0510 }, // MCU_ADDRESS
- {1, 0xC8, 0xC9EE }, // MCU_DATA_0
- {1, 0xC9, 0x08EC }, // MCU_DATA_1
- {1, 0xCA, 0x0030 }, // MCU_DATA_2
- {1, 0xCB, 0xED02 }, // MCU_DATA_3
- {1, 0xCC, 0xF602 }, // MCU_DATA_4
- {1, 0xCD, 0xC74F }, // MCU_DATA_5
- {1, 0xCE, 0xED00 }, // MCU_DATA_6
- {1, 0xCF, 0xCC00 }, // MCU_DATA_7
- {1, 0xC6, 0x0520 }, // MCU_ADDRESS
- {1, 0xC8, 0x80BD }, // MCU_DATA_0
- {1, 0xC9, 0xD268 }, // MCU_DATA_1
- {1, 0xCA, 0x301A }, // MCU_DATA_2
- {1, 0xCB, 0xEE08 }, // MCU_DATA_3
- {1, 0xCC, 0xEC02 }, // MCU_DATA_4
- {1, 0xCD, 0x18ED }, // MCU_DATA_5
- {1, 0xCE, 0x00EE }, // MCU_DATA_6
- {1, 0xCF, 0x08EC }, // MCU_DATA_7
- {1, 0xC6, 0x0530 }, // MCU_ADDRESS
- {1, 0xC8, 0x0230 }, // MCU_DATA_0
- {1, 0xC9, 0xED02 }, // MCU_DATA_1
- {1, 0xCA, 0xF602 }, // MCU_DATA_2
- {1, 0xCB, 0xC84F }, // MCU_DATA_3
- {1, 0xCC, 0xED00 }, // MCU_DATA_4
- {1, 0xCD, 0xCC00 }, // MCU_DATA_5
- {1, 0xCE, 0x80BD }, // MCU_DATA_6
- {1, 0xCF, 0xD268 }, // MCU_DATA_7
- {1, 0xC6, 0x0540 }, // MCU_ADDRESS
- {1, 0xC8, 0x301A }, // MCU_DATA_0
- {1, 0xC9, 0xEE08 }, // MCU_DATA_1
- {1, 0xCA, 0xEC02 }, // MCU_DATA_2
- {1, 0xCB, 0x18ED }, // MCU_DATA_3
- {1, 0xCC, 0x02EE }, // MCU_DATA_4
- {1, 0xCD, 0x08EC }, // MCU_DATA_5
- {1, 0xCE, 0x0430 }, // MCU_DATA_6
- {1, 0xCF, 0xED02 }, // MCU_DATA_7
- {1, 0xC6, 0x0550 }, // MCU_ADDRESS
- {1, 0xC8, 0xF602 }, // MCU_DATA_0
- {1, 0xC9, 0xC94F }, // MCU_DATA_1
- {1, 0xCA, 0xED00 }, // MCU_DATA_2
- {1, 0xCB, 0xCC00 }, // MCU_DATA_3
- {1, 0xCC, 0x80BD }, // MCU_DATA_4
- {1, 0xCD, 0xD268 }, // MCU_DATA_5
- {1, 0xCE, 0x301A }, // MCU_DATA_6
- {1, 0xCF, 0xEE08 }, // MCU_DATA_7
- {1, 0xC6, 0x0560 }, // MCU_ADDRESS
- {1, 0xC8, 0xEC02 }, // MCU_DATA_0
- {1, 0xC9, 0x18ED }, // MCU_DATA_1
- {1, 0xCA, 0x0430 }, // MCU_DATA_2
- {1, 0xCB, 0xC60A }, // MCU_DATA_3
- {1, 0xCC, 0x3A35 }, // MCU_DATA_4
- {1, 0xCD, 0x3930 }, // MCU_DATA_5
- {1, 0xCE, 0x8FC3 }, // MCU_DATA_6
- {1, 0xCF, 0xFFE5 }, // MCU_DATA_7
- {1, 0xC6, 0x0570 }, // MCU_ADDRESS
- {1, 0xC8, 0x8F35 }, // MCU_DATA_0
- {1, 0xC9, 0x6F1A }, // MCU_DATA_1
- {1, 0xCA, 0xDC8C }, // MCU_DATA_2
- {1, 0xCB, 0x2C02 }, // MCU_DATA_3
- {1, 0xCC, 0x6C1A }, // MCU_DATA_4
- {1, 0xCD, 0xDC8E }, // MCU_DATA_5
- {1, 0xCE, 0x2C06 }, // MCU_DATA_6
- {1, 0xCF, 0xE61A }, // MCU_DATA_7
- {1, 0xC6, 0x0580 }, // MCU_ADDRESS
- {1, 0xC8, 0xCB02 }, // MCU_DATA_0
- {1, 0xC9, 0xE71A }, // MCU_DATA_1
- {1, 0xCA, 0xDC90 }, // MCU_DATA_2
- {1, 0xCB, 0x2C06 }, // MCU_DATA_3
- {1, 0xCC, 0xE61A }, // MCU_DATA_4
- {1, 0xCD, 0xCB04 }, // MCU_DATA_5
- {1, 0xCE, 0xE71A }, // MCU_DATA_6
- {1, 0xCF, 0xDC94 }, // MCU_DATA_7
- {1, 0xC6, 0x0590 }, // MCU_ADDRESS
- {1, 0xC8, 0x2C06 }, // MCU_DATA_0
- {1, 0xC9, 0xE61A }, // MCU_DATA_1
- {1, 0xCA, 0xCB08 }, // MCU_DATA_2
- {1, 0xCB, 0xE71A }, // MCU_DATA_3
- {1, 0xCC, 0xDC96 }, // MCU_DATA_4
- {1, 0xCD, 0x2C06 }, // MCU_DATA_5
- {1, 0xCE, 0xE61A }, // MCU_DATA_6
- {1, 0xCF, 0xCB10 }, // MCU_DATA_7
- {1, 0xC6, 0x05A0 }, // MCU_ADDRESS
- {1, 0xC8, 0xE71A }, // MCU_DATA_0
- {1, 0xC9, 0xDC98 }, // MCU_DATA_1
- {1, 0xCA, 0x2C06 }, // MCU_DATA_2
- {1, 0xCB, 0xE61A }, // MCU_DATA_3
- {1, 0xCC, 0xCB20 }, // MCU_DATA_4
- {1, 0xCD, 0xE71A }, // MCU_DATA_5
- {1, 0xCE, 0x5F4F }, // MCU_DATA_6
- {1, 0xCF, 0xED0D }, // MCU_DATA_7
- {1, 0xC6, 0x05B0 }, // MCU_ADDRESS
- {1, 0xC8, 0xED0B }, // MCU_DATA_0
- {1, 0xC9, 0xC608 }, // MCU_DATA_1
- {1, 0xCA, 0xE709 }, // MCU_DATA_2
- {1, 0xCB, 0x4FE6 }, // MCU_DATA_3
- {1, 0xCC, 0x092A }, // MCU_DATA_4
- {1, 0xCD, 0x0143 }, // MCU_DATA_5
- {1, 0xCE, 0x058F }, // MCU_DATA_6
- {1, 0xCF, 0xEC8A }, // MCU_DATA_7
- {1, 0xC6, 0x05C0 }, // MCU_ADDRESS
- {1, 0xC8, 0x30ED }, // MCU_DATA_0
- {1, 0xC9, 0x0F2C }, // MCU_DATA_1
- {1, 0xCA, 0x065F }, // MCU_DATA_2
- {1, 0xCB, 0x4FA3 }, // MCU_DATA_3
- {1, 0xCC, 0x0FED }, // MCU_DATA_4
- {1, 0xCD, 0x0FC6 }, // MCU_DATA_5
- {1, 0xCE, 0x04E7 }, // MCU_DATA_6
- {1, 0xCF, 0x0A20 }, // MCU_DATA_7
- {1, 0xC6, 0x05D0 }, // MCU_ADDRESS
- {1, 0xC8, 0x07EC }, // MCU_DATA_0
- {1, 0xC9, 0x0F04 }, // MCU_DATA_1
- {1, 0xCA, 0xED0F }, // MCU_DATA_2
- {1, 0xCB, 0x6A0A }, // MCU_DATA_3
- {1, 0xCC, 0x6D0F }, // MCU_DATA_4
- {1, 0xCD, 0x2704 }, // MCU_DATA_5
- {1, 0xCE, 0x6D0A }, // MCU_DATA_6
- {1, 0xCF, 0x26F1 }, // MCU_DATA_7
- {1, 0xC6, 0x05E0 }, // MCU_ADDRESS
- {1, 0xC8, 0x4FE6 }, // MCU_DATA_0
- {1, 0xC9, 0x092A }, // MCU_DATA_1
- {1, 0xCA, 0x0143 }, // MCU_DATA_2
- {1, 0xCB, 0xED06 }, // MCU_DATA_3
- {1, 0xCC, 0x8FC3 }, // MCU_DATA_4
- {1, 0xCD, 0x0011 }, // MCU_DATA_5
- {1, 0xCE, 0x30E3 }, // MCU_DATA_6
- {1, 0xCF, 0x0618 }, // MCU_DATA_7
- {1, 0xC6, 0x05F0 }, // MCU_ADDRESS
- {1, 0xC8, 0x8FE6 }, // MCU_DATA_0
- {1, 0xC9, 0x1018 }, // MCU_DATA_1
- {1, 0xCA, 0xE700 }, // MCU_DATA_2
- {1, 0xCB, 0xE609 }, // MCU_DATA_3
- {1, 0xCC, 0xC104 }, // MCU_DATA_4
- {1, 0xCD, 0x2F10 }, // MCU_DATA_5
- {1, 0xCE, 0xEC0B }, // MCU_DATA_6
- {1, 0xCF, 0x0505 }, // MCU_DATA_7
- {1, 0xC6, 0x0600 }, // MCU_ADDRESS
- {1, 0xC8, 0x05ED }, // MCU_DATA_0
- {1, 0xC9, 0x0BE6 }, // MCU_DATA_1
- {1, 0xCA, 0x0A4F }, // MCU_DATA_2
- {1, 0xCB, 0xE30B }, // MCU_DATA_3
- {1, 0xCC, 0xED0B }, // MCU_DATA_4
- {1, 0xCD, 0x200E }, // MCU_DATA_5
- {1, 0xCE, 0xEC0D }, // MCU_DATA_6
- {1, 0xCF, 0x0505 }, // MCU_DATA_7
- {1, 0xC6, 0x0610 }, // MCU_ADDRESS
- {1, 0xC8, 0x05ED }, // MCU_DATA_0
- {1, 0xC9, 0x0DE6 }, // MCU_DATA_1
- {1, 0xCA, 0x0A4F }, // MCU_DATA_2
- {1, 0xCB, 0xE30D }, // MCU_DATA_3
- {1, 0xCC, 0xED0D }, // MCU_DATA_4
- {1, 0xCD, 0x6A09 }, // MCU_DATA_5
- {1, 0xCE, 0x6D09 }, // MCU_DATA_6
- {1, 0xCF, 0x2C96 }, // MCU_DATA_7
- {1, 0xC6, 0x0620 }, // MCU_ADDRESS
- {1, 0xC8, 0xCC01 }, // MCU_DATA_0
- {1, 0xC9, 0x60ED }, // MCU_DATA_1
- {1, 0xCA, 0x00EC }, // MCU_DATA_2
- {1, 0xCB, 0x0DBD }, // MCU_DATA_3
- {1, 0xCC, 0xD350 }, // MCU_DATA_4
- {1, 0xCD, 0xCC01 }, // MCU_DATA_5
- {1, 0xCE, 0x6130 }, // MCU_DATA_6
- {1, 0xCF, 0xED00 }, // MCU_DATA_7
- {1, 0xC6, 0x0630 }, // MCU_ADDRESS
- {1, 0xC8, 0xEC0B }, // MCU_DATA_0
- {1, 0xC9, 0xBDD3 }, // MCU_DATA_1
- {1, 0xCA, 0x5030 }, // MCU_DATA_2
- {1, 0xCB, 0xE612 }, // MCU_DATA_3
- {1, 0xCC, 0x4F17 }, // MCU_DATA_4
- {1, 0xCD, 0x5FED }, // MCU_DATA_5
- {1, 0xCE, 0x0FE6 }, // MCU_DATA_6
- {1, 0xCF, 0x114F }, // MCU_DATA_7
- {1, 0xC6, 0x0640 }, // MCU_ADDRESS
- {1, 0xC8, 0xE30F }, // MCU_DATA_0
- {1, 0xC9, 0xED0F }, // MCU_DATA_1
- {1, 0xCA, 0xCC01 }, // MCU_DATA_2
- {1, 0xCB, 0x62ED }, // MCU_DATA_3
- {1, 0xCC, 0x00EC }, // MCU_DATA_4
- {1, 0xCD, 0x0FBD }, // MCU_DATA_5
- {1, 0xCE, 0xD350 }, // MCU_DATA_6
- {1, 0xCF, 0x30E6 }, // MCU_DATA_7
- {1, 0xC6, 0x0650 }, // MCU_ADDRESS
- {1, 0xC8, 0x144F }, // MCU_DATA_0
- {1, 0xC9, 0x175F }, // MCU_DATA_1
- {1, 0xCA, 0xED0F }, // MCU_DATA_2
- {1, 0xCB, 0xE613 }, // MCU_DATA_3
- {1, 0xCC, 0x4FE3 }, // MCU_DATA_4
- {1, 0xCD, 0x0FED }, // MCU_DATA_5
- {1, 0xCE, 0x0FCC }, // MCU_DATA_6
- {1, 0xCF, 0x0163 }, // MCU_DATA_7
- {1, 0xC6, 0x0660 }, // MCU_ADDRESS
- {1, 0xC8, 0xED00 }, // MCU_DATA_0
- {1, 0xC9, 0xEC0F }, // MCU_DATA_1
- {1, 0xCA, 0xBDD3 }, // MCU_DATA_2
- {1, 0xCB, 0x5030 }, // MCU_DATA_3
- {1, 0xCC, 0xE616 }, // MCU_DATA_4
- {1, 0xCD, 0x4F17 }, // MCU_DATA_5
- {1, 0xCE, 0x5FED }, // MCU_DATA_6
- {1, 0xCF, 0x0FE6 }, // MCU_DATA_7
- {1, 0xC6, 0x0670 }, // MCU_ADDRESS
- {1, 0xC8, 0x154F }, // MCU_DATA_0
- {1, 0xC9, 0xE30F }, // MCU_DATA_1
- {1, 0xCA, 0xED0F }, // MCU_DATA_2
- {1, 0xCB, 0xCC01 }, // MCU_DATA_3
- {1, 0xCC, 0x64ED }, // MCU_DATA_4
- {1, 0xCD, 0x00EC }, // MCU_DATA_5
- {1, 0xCE, 0x0FBD }, // MCU_DATA_6
- {1, 0xCF, 0xD350 }, // MCU_DATA_7
- {1, 0xC6, 0x0680 }, // MCU_ADDRESS
- {1, 0xC8, 0x30E6 }, // MCU_DATA_0
- {1, 0xC9, 0x184F }, // MCU_DATA_1
- {1, 0xCA, 0x175F }, // MCU_DATA_2
- {1, 0xCB, 0xED0F }, // MCU_DATA_3
- {1, 0xCC, 0xE617 }, // MCU_DATA_4
- {1, 0xCD, 0x4FE3 }, // MCU_DATA_5
- {1, 0xCE, 0x0FED }, // MCU_DATA_6
- {1, 0xCF, 0x0FCC }, // MCU_DATA_7
- {1, 0xC6, 0x0690 }, // MCU_ADDRESS
- {1, 0xC8, 0x0165 }, // MCU_DATA_0
- {1, 0xC9, 0xED00 }, // MCU_DATA_1
- {1, 0xCA, 0xEC0F }, // MCU_DATA_2
- {1, 0xCB, 0xBDD3 }, // MCU_DATA_3
- {1, 0xCC, 0x5030 }, // MCU_DATA_4
- {1, 0xCD, 0xE61A }, // MCU_DATA_5
- {1, 0xCE, 0x4F17 }, // MCU_DATA_6
- {1, 0xCF, 0x5FED }, // MCU_DATA_7
- {1, 0xC6, 0x06A0 }, // MCU_ADDRESS
- {1, 0xC8, 0x0FE6 }, // MCU_DATA_0
- {1, 0xC9, 0x194F }, // MCU_DATA_1
- {1, 0xCA, 0xE30F }, // MCU_DATA_2
- {1, 0xCB, 0xED0F }, // MCU_DATA_3
- {1, 0xCC, 0xCC01 }, // MCU_DATA_4
- {1, 0xCD, 0x66ED }, // MCU_DATA_5
- {1, 0xCE, 0x00EC }, // MCU_DATA_6
- {1, 0xCF, 0x0FBD }, // MCU_DATA_7
- {1, 0xC6, 0x06B0 }, // MCU_ADDRESS
- {1, 0xC8, 0xD350 }, // MCU_DATA_0
- {1, 0xC9, 0x13AB }, // MCU_DATA_1
- {1, 0xCA, 0x0406 }, // MCU_DATA_2
- {1, 0xCB, 0xCC7F }, // MCU_DATA_3
- {1, 0xCC, 0x8030 }, // MCU_DATA_4
- {1, 0xCD, 0x207A }, // MCU_DATA_5
- {1, 0xCE, 0xDC9C }, // MCU_DATA_6
- {1, 0xCF, 0x30ED }, // MCU_DATA_7
- {1, 0xC6, 0x06C0 }, // MCU_ADDRESS
- {1, 0xC8, 0x02D6 }, // MCU_DATA_0
- {1, 0xC9, 0xA44F }, // MCU_DATA_1
- {1, 0xCA, 0xED00 }, // MCU_DATA_2
- {1, 0xCB, 0xCC00 }, // MCU_DATA_3
- {1, 0xCC, 0x80BD }, // MCU_DATA_4
- {1, 0xCD, 0xD268 }, // MCU_DATA_5
- {1, 0xCE, 0x30E6 }, // MCU_DATA_6
- {1, 0xCF, 0x03E7 }, // MCU_DATA_7
- {1, 0xC6, 0x06D0 }, // MCU_ADDRESS
- {1, 0xC8, 0x11DC }, // MCU_DATA_0
- {1, 0xC9, 0x9EED }, // MCU_DATA_1
- {1, 0xCA, 0x02D6 }, // MCU_DATA_2
- {1, 0xCB, 0xA64F }, // MCU_DATA_3
- {1, 0xCC, 0xED00 }, // MCU_DATA_4
- {1, 0xCD, 0xCC00 }, // MCU_DATA_5
- {1, 0xCE, 0x80BD }, // MCU_DATA_6
- {1, 0xCF, 0xD268 }, // MCU_DATA_7
- {1, 0xC6, 0x06E0 }, // MCU_ADDRESS
- {1, 0xC8, 0x30E6 }, // MCU_DATA_0
- {1, 0xC9, 0x03E7 }, // MCU_DATA_1
- {1, 0xCA, 0x12E6 }, // MCU_DATA_2
- {1, 0xCB, 0x11A6 }, // MCU_DATA_3
- {1, 0xCC, 0x123D }, // MCU_DATA_4
- {1, 0xCD, 0xED0F }, // MCU_DATA_5
- {1, 0xCE, 0x6F0A }, // MCU_DATA_6
- {1, 0xCF, 0x2007 }, // MCU_DATA_7
- {1, 0xC6, 0x06F0 }, // MCU_ADDRESS
- {1, 0xC8, 0xEC0F }, // MCU_DATA_0
- {1, 0xC9, 0x04ED }, // MCU_DATA_1
- {1, 0xCA, 0x0F6C }, // MCU_DATA_2
- {1, 0xCB, 0x0AEC }, // MCU_DATA_3
- {1, 0xCC, 0x0F1A }, // MCU_DATA_4
- {1, 0xCD, 0x8300 }, // MCU_DATA_5
- {1, 0xCE, 0x2024 }, // MCU_DATA_6
- {1, 0xCF, 0xF183 }, // MCU_DATA_7
- {1, 0xC6, 0x0700 }, // MCU_ADDRESS
- {1, 0xC8, 0x0010 }, // MCU_DATA_0
- {1, 0xC9, 0xED0F }, // MCU_DATA_1
- {1, 0xCA, 0xC3E8 }, // MCU_DATA_2
- {1, 0xCB, 0xFB8F }, // MCU_DATA_3
- {1, 0xCC, 0xE600 }, // MCU_DATA_4
- {1, 0xCD, 0x30E7 }, // MCU_DATA_5
- {1, 0xCE, 0x08E6 }, // MCU_DATA_6
- {1, 0xCF, 0x0A86 }, // MCU_DATA_7
- {1, 0xC6, 0x0710 }, // MCU_ADDRESS
- {1, 0xC8, 0x203D }, // MCU_DATA_0
- {1, 0xC9, 0xEB08 }, // MCU_DATA_1
- {1, 0xCA, 0xC040 }, // MCU_DATA_2
- {1, 0xCB, 0xE708 }, // MCU_DATA_3
- {1, 0xCC, 0xD6BA }, // MCU_DATA_4
- {1, 0xCD, 0x4FED }, // MCU_DATA_5
- {1, 0xCE, 0x06E6 }, // MCU_DATA_6
- {1, 0xCF, 0x08ED }, // MCU_DATA_7
- {1, 0xC6, 0x0720 }, // MCU_ADDRESS
- {1, 0xC8, 0x04E3 }, // MCU_DATA_0
- {1, 0xC9, 0x06ED }, // MCU_DATA_1
- {1, 0xCA, 0x0F17 }, // MCU_DATA_2
- {1, 0xCB, 0x5FED }, // MCU_DATA_3
- {1, 0xCC, 0x0FD6 }, // MCU_DATA_4
- {1, 0xCD, 0xB94F }, // MCU_DATA_5
- {1, 0xCE, 0xED06 }, // MCU_DATA_6
- {1, 0xCF, 0xE608 }, // MCU_DATA_7
- {1, 0xC6, 0x0730 }, // MCU_ADDRESS
- {1, 0xC8, 0xED04 }, // MCU_DATA_0
- {1, 0xC9, 0xE306 }, // MCU_DATA_1
- {1, 0xCA, 0xE30F }, // MCU_DATA_2
- {1, 0xCB, 0xED0F }, // MCU_DATA_3
- {1, 0xCC, 0xCC01 }, // MCU_DATA_4
- {1, 0xCD, 0x52ED }, // MCU_DATA_5
- {1, 0xCE, 0x00EC }, // MCU_DATA_6
- {1, 0xCF, 0x0FBD }, // MCU_DATA_7
- {1, 0xC6, 0x0740 }, // MCU_ADDRESS
- {1, 0xC8, 0xD350 }, // MCU_DATA_0
- {1, 0xC9, 0x30C6 }, // MCU_DATA_1
- {1, 0xCA, 0x1B3A }, // MCU_DATA_2
- {1, 0xCB, 0x3539 }, // MCU_DATA_3
- {1, 0xCC, 0x3C3C }, // MCU_DATA_4
- {1, 0xCD, 0x34C6 }, // MCU_DATA_5
- {1, 0xCE, 0x18F7 }, // MCU_DATA_6
- {1, 0xCF, 0x02BD }, // MCU_DATA_7
- {1, 0xC6, 0x0750 }, // MCU_ADDRESS
- {1, 0xC8, 0xC6B4 }, // MCU_DATA_0
- {1, 0xC9, 0xF702 }, // MCU_DATA_1
- {1, 0xCA, 0xBEC6 }, // MCU_DATA_2
- {1, 0xCB, 0x96F7 }, // MCU_DATA_3
- {1, 0xCC, 0x02BF }, // MCU_DATA_4
- {1, 0xCD, 0xC680 }, // MCU_DATA_5
- {1, 0xCE, 0xF702 }, // MCU_DATA_6
- {1, 0xCF, 0xC0F7 }, // MCU_DATA_7
- {1, 0xC6, 0x0760 }, // MCU_ADDRESS
- {1, 0xC8, 0x02C1 }, // MCU_DATA_0
- {1, 0xC9, 0xF702 }, // MCU_DATA_1
- {1, 0xCA, 0xC2F7 }, // MCU_DATA_2
- {1, 0xCB, 0x02C3 }, // MCU_DATA_3
- {1, 0xCC, 0xF702 }, // MCU_DATA_4
- {1, 0xCD, 0xC4F7 }, // MCU_DATA_5
- {1, 0xCE, 0x02C5 }, // MCU_DATA_6
- {1, 0xCF, 0xF702 }, // MCU_DATA_7
- {1, 0xC6, 0x0770 }, // MCU_ADDRESS
- {1, 0xC8, 0xC6CC }, // MCU_DATA_0
- {1, 0xC9, 0x02AB }, // MCU_DATA_1
- {1, 0xCA, 0x30ED }, // MCU_DATA_2
- {1, 0xCB, 0x02FE }, // MCU_DATA_3
- {1, 0xCC, 0x1050 }, // MCU_DATA_4
- {1, 0xCD, 0xEC06 }, // MCU_DATA_5
- {1, 0xCE, 0xFD02 }, // MCU_DATA_6
- {1, 0xCF, 0xA7FE }, // MCU_DATA_7
- {1, 0xC6, 0x0780 }, // MCU_ADDRESS
- {1, 0xC8, 0x02A7 }, // MCU_DATA_0
- {1, 0xC9, 0xEC00 }, // MCU_DATA_1
- {1, 0xCA, 0xFD02 }, // MCU_DATA_2
- {1, 0xCB, 0xA930 }, // MCU_DATA_3
- {1, 0xCC, 0x6F04 }, // MCU_DATA_4
- {1, 0xCD, 0xE604 }, // MCU_DATA_5
- {1, 0xCE, 0x4F05 }, // MCU_DATA_6
- {1, 0xCF, 0xF302 }, // MCU_DATA_7
- {1, 0xC6, 0x0790 }, // MCU_ADDRESS
- {1, 0xC8, 0xA98F }, // MCU_DATA_0
- {1, 0xC9, 0xEC00 }, // MCU_DATA_1
- {1, 0xCA, 0x30ED }, // MCU_DATA_2
- {1, 0xCB, 0x00E6 }, // MCU_DATA_3
- {1, 0xCC, 0x044F }, // MCU_DATA_4
- {1, 0xCD, 0x05E3 }, // MCU_DATA_5
- {1, 0xCE, 0x0218 }, // MCU_DATA_6
- {1, 0xCF, 0x8FEC }, // MCU_DATA_7
- {1, 0xC6, 0x07A0 }, // MCU_ADDRESS
- {1, 0xC8, 0x0018 }, // MCU_DATA_0
- {1, 0xC9, 0xED00 }, // MCU_DATA_1
- {1, 0xCA, 0x6C04 }, // MCU_DATA_2
- {1, 0xCB, 0xE604 }, // MCU_DATA_3
- {1, 0xCC, 0xC109 }, // MCU_DATA_4
- {1, 0xCD, 0x25DE }, // MCU_DATA_5
- {1, 0xCE, 0xEE02 }, // MCU_DATA_6
- {1, 0xCF, 0xCC05 }, // MCU_DATA_7
- {1, 0xC6, 0x07B0 }, // MCU_ADDRESS
- {1, 0xC8, 0x6BED }, // MCU_DATA_0
- {1, 0xC9, 0x0830 }, // MCU_DATA_1
- {1, 0xCA, 0xEE02 }, // MCU_DATA_2
- {1, 0xCB, 0xCC04 }, // MCU_DATA_3
- {1, 0xCC, 0x00ED }, // MCU_DATA_4
- {1, 0xCD, 0x0ECC }, // MCU_DATA_5
- {1, 0xCE, 0x02AB }, // MCU_DATA_6
- {1, 0xCF, 0xDD58 }, // MCU_DATA_7
- {1, 0xC6, 0x07C0 }, // MCU_ADDRESS
- {1, 0xC8, 0x3838 }, // MCU_DATA_0
- {1, 0xC9, 0x3139 }, // MCU_DATA_1 */
+ {0, 0x65, 0xA000 }, // PLL CLOCK_ENABLING
+ {100, 0x00, 0x00C8 }, // Delay =200ms
{1, 0xC6, 0x2003 }, //MON_ARG1
{1, 0xC8, 0x0748 }, //MON_ARG1
{1, 0xC6, 0xA002 }, //MON_CMD
@@ -956,7 +362,7 @@
{1, 0xC8, 0x00E2 }, //AWB_TG_MIN0
{1, 0x1F, 0x0018 }, // RESERVED_SOC1_1F
{1, 0x51, 0x7F40 }, // RESERVED_SOC1_51
- {100, 0x00, 0x01F4 }, //Delay = 1000ms
+ {100, 0x00, 0x01F4 }, //Delay = 500ms
{0, 0x33, 0x0343 }, // RESERVED_CORE_33
{0, 0x38, 0x0868 }, // RESERVED_CORE_38
{1, 0xC6, 0xA10F }, //SEQ_RESET_LEVEL_TH
@@ -1050,94 +456,7 @@
{100, 0x00, 0x01f4 }, // Delay =500ms
};
-/*
-static const s_RegList init_cmds_list[]= {
-// {100,0x00,0x01F4 },
- {0, 0x33, 0x0343 }, // RESERVED_CORE_33
- {1, 0xC6, 0xA115 }, // SEQ_LLMODE
- {1, 0xC8, 0x0020 }, // SEQ_LLMODE
- {0, 0x38, 0x0866 }, // RESERVED_CORE_38
- {100, 0x00, 0x0064 }, // Delay = 100ms
- {2, 0x80, 0x0168 }, // LENS_CORRECTION_CONTROL
- {2, 0x81, 0x6432 }, // ZONE_BOUNDS_X1_X2
- {2, 0x82, 0x3296 }, // ZONE_BOUNDS_X0_X3
- {2, 0x83, 0x9664 }, // ZONE_BOUNDS_X4_X5
- {2, 0x84, 0x5028 }, // ZONE_BOUNDS_Y1_Y2
- {2, 0x85, 0x2878 }, // ZONE_BOUNDS_Y0_Y3
- {2, 0x86, 0x7850 }, // ZONE_BOUNDS_Y4_Y5
- {2, 0x87, 0x0000 }, // CENTER_OFFSET
- {2, 0x88, 0x0152 }, // FX_RED
- {2, 0x89, 0x015C }, // FX_GREEN
- {2, 0x8A, 0x00F4 }, // FX_BLUE
- {2, 0x8B, 0x0108 }, // FY_RED
- {2, 0x8C, 0x00FA }, // FY_GREEN
- {2, 0x8D, 0x00CF }, // FY_BLUE
- {2, 0x8E, 0x09AD }, // DF_DX_RED
- {2, 0x8F, 0x091E }, // DF_DX_GREEN
- {2, 0x90, 0x0B3F }, // DF_DX_BLUE
- {2, 0x91, 0x0C85 }, // DF_DY_RED
- {2, 0x92, 0x0CFF }, // DF_DY_GREEN
- {2, 0x93, 0x0D86 }, // DF_DY_BLUE
- {2, 0x94, 0x163A }, // SECOND_DERIV_ZONE_0_RED
- {2, 0x95, 0x0E47 }, // SECOND_DERIV_ZONE_0_GREEN
- {2, 0x96, 0x103C }, // SECOND_DERIV_ZONE_0_BLUE
- {2, 0x97, 0x1D35 }, // SECOND_DERIV_ZONE_1_RED
- {2, 0x98, 0x173E }, // SECOND_DERIV_ZONE_1_GREEN
- {2, 0x99, 0x1119 }, // SECOND_DERIV_ZONE_1_BLUE
- {2, 0x9A, 0x1663 }, // SECOND_DERIV_ZONE_2_RED
- {2, 0x9B, 0x1569 }, // SECOND_DERIV_ZONE_2_GREEN
- {2, 0x9C, 0x104C }, // SECOND_DERIV_ZONE_2_BLUE
- {2, 0x9D, 0x1015 }, // SECOND_DERIV_ZONE_3_RED
- {2, 0x9E, 0x1010 }, // SECOND_DERIV_ZONE_3_GREEN
- {2, 0x9F, 0x0B0A }, // SECOND_DERIV_ZONE_3_BLUE
- {2, 0xA0, 0x0D53 }, // SECOND_DERIV_ZONE_4_RED
- {2, 0xA1, 0x0D51 }, // SECOND_DERIV_ZONE_4_GREEN
- {2, 0xA2, 0x0A44 }, // SECOND_DERIV_ZONE_4_BLUE
- {2, 0xA3, 0x1545 }, // SECOND_DERIV_ZONE_5_RED
- {2, 0xA4, 0x1643 }, // SECOND_DERIV_ZONE_5_GREEN
- {2, 0xA5, 0x1231 }, // SECOND_DERIV_ZONE_5_BLUE
- {2, 0xA6, 0x0047 }, // SECOND_DERIV_ZONE_6_RED
- {2, 0xA7, 0x035C }, // SECOND_DERIV_ZONE_6_GREEN
- {2, 0xA8, 0xFE30 }, // SECOND_DERIV_ZONE_6_BLUE
- {2, 0xA9, 0x4625 }, // SECOND_DERIV_ZONE_7_RED
- {2, 0xAA, 0x47F3 }, // SECOND_DERIV_ZONE_7_GREEN
- {2, 0xAB, 0x5859 }, // SECOND_DERIV_ZONE_7_BLUE
- {2, 0xAC, 0x0000 }, // X2_FACTORS
- {2, 0xAD, 0x0000 }, // GLOBAL_OFFSET_FXY_FUNCTION
- {2, 0xAE, 0x0000 }, // K_FACTOR_IN_K_FX_FY
- {1, 0x08, 0x01FC }, // COLOR_PIPELINE_CONTROL
- {1, 0xC6, 0x2003 }, // MON_ARG1
- {1, 0xC8, 0x0748 }, // MON_ARG1
- {1, 0xC6, 0xA002 }, // MON_CMD
- {1, 0xC8, 0x0001 }, // MON_CMD
- {100, 0x00, 0x01f4 }, // Delay = 500ms
- {111, 0xC8,0x0000 },
- {1, 0xC6, 0xA361 }, // AWB_TG_MIN0
- {1, 0xC8, 0x00E2 }, // AWB_TG_MIN0
- {1, 0x1F, 0x0018 }, // RESERVED_SOC1_1F
- {1, 0x51, 0x7F40 }, // RESERVED_SOC1_51
- {100, 0x00, 0x03e8 }, // Delay = 1000ms
- {0, 0x33, 0x0343 }, // RESERVED_CORE_33
- {0, 0x38, 0x0868 }, // RESERVED_CORE_38
- {1, 0xC6, 0xA10F }, // SEQ_RESET_LEVEL_TH
- {1, 0xC8, 0x0042 }, // SEQ_RESET_LEVEL_TH
- {1, 0x1F, 0x0020 }, // RESERVED_SOC1_1F
- {1, 0xC6, 0xAB04 }, // HG_MAX_DLEVEL
- {1, 0xC8, 0x0008 }, // HG_MAX_DLEVEL
- {1, 0xC6, 0xA103 }, // SEQ_CMD
- {1, 0xC8, 0x0005 }, // SEQ_CMD
- {1, 0xC6, 0xA104 }, // SEQ_CMD
- {100, 0x00, 0x03e8 }, // Delay = 1000ms
- {111, 0xC8,0x0003 },
- {1, 0x08, 0x01FC }, // COLOR_PIPELINE_CONTROL
- {1, 0x08, 0x01EC }, // COLOR_PIPELINE_CONTROL
- {1, 0x08, 0x01FC }, // COLOR_PIPELINE_CONTROL
- {1, 0x36, 0x0F08 }, // APERTURE_PARAMETERS
- {1, 0xC6, 0xA103 }, // SEQ_CMD
- {1, 0xC8, 0x0005 }, // SEQ_CMD
- {100, 0x00, 0x01f4 }, // Delay = 500ms
-};
-*/
+
void getCamId()
{
@@ -1150,7 +469,7 @@
int lRetVal = -1;
lRetVal = RegLstWrite((s_RegList *)soft_reset_cmd_list, sizeof(soft_reset_cmd_list)/sizeof(s_RegList));
- wait(1);
+ wait_ms(1);
I2CBufferWrite(CAM_I2C_SLAVE_WRITE,ucBuffer,1,I2C_SEND_STOP);
I2CBufferRead(CAM_I2C_SLAVE_READ,ucBuffer,2,I2C_SEND_STOP);
@@ -1230,18 +549,6 @@
lRetVal = RegLstWrite((s_RegList *)capture_cmds_list,
sizeof(capture_cmds_list)/sizeof(s_RegList));
ASSERT_ON_ERROR(lRetVal);
-
-// resolution_cmds_list[INDEX_SIZE_WIDTH].usValue = width;
-// resolution_cmds_list[INDEX_SIZE_HEIGHT].usValue = height;
-// lRetVal = RegLstWrite((s_RegList *)resolution_cmds_list,
-// sizeof(resolution_cmds_list)/sizeof(s_RegList));
-// ASSERT_ON_ERROR(lRetVal);
-
-// CameraSensorResolution(width, height);
-
-// lRetVal = RegLstWrite((s_RegList *)start_jpeg_capture_cmd_list,
-// sizeof(start_jpeg_capture_cmd_list)/sizeof(s_RegList));
-// ASSERT_ON_ERROR(lRetVal);
#endif
return 0;
}
@@ -1322,7 +629,7 @@
//*****************************************************************************
static int RegLstWrite(s_RegList *pRegLst, unsigned int ulNofItems)
{
-// Uart_Write((uint8_t*)"\n\rRegLstWrite \n\r");
+
unsigned int ulNdx;
unsigned short usTemp;
unsigned char i;
@@ -1459,7 +766,6 @@
int err = 1;
// HttpDebug("Context B comamnd sequence ...");
-// err = StartCaptureCmd();
err = RegLstWrite((s_RegList *)context_b_list, sizeof(context_b_list)/sizeof(s_RegList));
if (err){
return err;
@@ -1479,7 +785,6 @@
int err = 1;
// HttpDebug("Context A comamnd sequence ...");
-// err = StopCaptureCmd();
err = RegLstWrite((s_RegList *)context_a_list, sizeof(context_a_list)/sizeof(s_RegList));
if (err){
--- a/utils/app_config.h Sat Sep 12 22:38:40 2015 +0000 +++ b/utils/app_config.h Tue Sep 15 15:39:38 2015 +0000 @@ -14,9 +14,9 @@ #endif #define ENABLE_JPEG -//#define MT9D111_CAM +#define MT9D111_CAM //#define OV5642_CAM -#define OV2640_CAM +//#define OV2640_CAM //#define XGA_FRAME //#define VGA_FRAME
--- a/utils/i2cconfig.cpp Sat Sep 12 22:38:40 2015 +0000
+++ b/utils/i2cconfig.cpp Tue Sep 15 15:39:38 2015 +0000
@@ -120,7 +120,7 @@
// RTOS_MUTEX_RELEASE(&g_i2cLock);
return -1;
}
-// wait_ms(1);
+ wait_ms(1);
// RTOS_MUTEX_RELEASE(&g_i2cLock);
return 0;
}
@@ -170,7 +170,7 @@
// RTOS_MUTEX_RELEASE(&g_i2cLock);
return -1;
}
-// wait_ms(1);
+ wait_ms(1);
// RTOS_MUTEX_RELEASE(&g_i2cLock);
return 0;
}