📄 hal_config.c
字号:
//===============================================================================
// HAL_STRUCT information generated by 13716CFG.EXE (Build 47)
// Copyright (c) 2002 Epson Research and Development, Inc.
// All rights reserved.
//
// DISPLAYS WxHxBPP FREQ SUBTYPE
// ------------- ----------- ------- -------------------------------------------
// *LCD1=None
// LCD2=Parallel 128x160x16 NA 5.6.5 (16-bit)
// LCD3=None
//
// DIMENSIONS WxHxBPP @ STRIDE START SADDR ADDITIONAL
// ------------- ------------------ ------- --------- --------------------------
// Main/Resizer 128x160x16 @ 256 0,0 00000000h Swivel=0 Scaling=OFF
// Overlay 128x160x8 @ 128 NA 0000A000h Swivel=OFF Scaling=OFF
//
// CLOCKS FREQ SOURCE
// ------------- ----------- ---------------------------------------------------
// INCLK 54.001 MHz PLL (via CLKI)
// SYSCLK 54.001 MHz INCLK/1
// LCDPCLK 2.250 MHz SYSCLK/24
// CMCLKOUT 13.500 MHz SYSCLK/4
// I2CCLK 9.000 MHz INCLK/6
//
// This file INSTANTIATES the HalInfo structure, and should
// only be included, one time, by the mini-HAL.
//===============================================================================
#include "hal_private.h"
#ifndef HAL_STRUCT_NAME
#define HAL_STRUCT_NAME HalInfo
#endif
#ifdef EPSON_ORIGINAL
#define S1D10251
//#define S1D10253
//#define S1D10237
//#define S1D50173
#else
#define INNOVATION_M288
#endif
//#ifdef INNOVATION_M288 /* Robert.Chen added, 2004-06-05 */
#if( MODEL == 5 ) //M288S
HAL_STRUCT HAL_STRUCT_NAME =
{
50000000, //PllClk 50M
32768, //internal OSC frequency
0x02200000, //dwBaseAddress
0x00000000, //dwRegisterOffset
0x00000000, //dwMemoryOffset
640, 480, //wCam1Width, wCam1Height
0, //dwRequiredVRAM
0, //dwFlags
/* LCD register initialization sequence (LCD1) */
{
HAL_LCD_ENDOFTABLE
},
/* LCD register initialization sequence (LCD2) */
{
HAL_LCD_COMMAND + 0x01, //main_lcd_sendcommand(0x0001);
HAL_LCD_DELAY + 100, //wait_ARM_cycles(convert_nanosec_to_cycles(100000000));
//enable factory default
HAL_LCD_COMMAND + 0xee, //main_lcd_sendcommand(0x00ee);
//set multiplication factor
HAL_LCD_COMMAND + 0xc2, //main_lcd_sendcommand(0x00c2);
HAL_LCD_PARAM + 0x03, //main_lcd_senddata(0x0003);
//set Vop
HAL_LCD_COMMAND + 0xb0, //main_lcd_sendcommand(0x00b0);
HAL_LCD_PARAM + 0x09, //main_lcd_senddata(0x0009);
HAL_LCD_PARAM + 0x0a, //main_lcd_senddata(0x0010);
//set contrast
HAL_LCD_COMMAND + 0x25, //main_lcd_sendcommand(0x0025);
HAL_LCD_PARAM + 0x0, //main_lcd_senddata(0x0000);
//set bias system
HAL_LCD_COMMAND + 0xc7, //main_lcd_sendcommand(0x00c7);
HAL_LCD_PARAM + 0x0b, //main_lcd_senddata(0x000b);
//set divider frequency
HAL_LCD_COMMAND + 0xc5, //main_lcd_sendcommand(0x00c5);
HAL_LCD_PARAM + 0x20, //main_lcd_senddata(0x0020);
HAL_LCD_PARAM + 0x20, //main_lcd_senddata(0x0020);
HAL_LCD_PARAM + 0x20, //main_lcd_senddata(0x0020);
HAL_LCD_PARAM + 0x20, //main_lcd_senddata(0x0020);
//set TCVOP slopes A and B
HAL_LCD_COMMAND + 0xc3, //main_lcd_sendcommand(0x00c3);
HAL_LCD_PARAM + 0x30, //main_lcd_senddata(0x0030);
//set TCVOP slopes C and D
HAL_LCD_COMMAND + 0xc4, //main_lcd_sendcommand(0x00c4);
HAL_LCD_PARAM + 0x65, //main_lcd_senddata(0x0065);
//sleepout
HAL_LCD_COMMAND + 0x11, //main_lcd_sendcommand(0x0011);
//colour interface pixel format
HAL_LCD_COMMAND + 0x3a, //main_lcd_sendcommand(0x003a);
HAL_LCD_PARAM + 0x05, //main_lcd_senddata(0x0005);
//booster voltage
HAL_LCD_COMMAND + 0x03, //main_lcd_sendcommand(0x0003);
HAL_LCD_DELAY + 500, //wait_ARM_cycles(convert_nanosec_to_cycles(500000000));
//display on
HAL_LCD_COMMAND + 0x29, //main_lcd_sendcommand(0x0029);
//normal display mode on
HAL_LCD_COMMAND + 0x13, //main_lcd_sendcommand(0x0013);
//display inversion on
HAL_LCD_COMMAND + 0x21, //main_lcd_sendcommand(0x0021);
//n-line inversion
HAL_LCD_COMMAND + 0xc9, //main_lcd_sendcommand(0x00c9);
HAL_LCD_PARAM + 0x25, //main_lcd_senddata(0x0025);
//super frame inversion
HAL_LCD_COMMAND + 0xb9, //main_lcd_sendcommand(0x00b9);
//memory data access control
HAL_LCD_COMMAND + 0x36, //main_lcd_sendcommand(0x0036);
HAL_LCD_PARAM + 0xc0, //main_lcd_senddata(0x00c0);
//bottom row swap
HAL_LCD_COMMAND + 0xb4, //main_lcd_sendcommand(0x00b4);
//top row swap
HAL_LCD_COMMAND + 0xb6, //main_lcd_sendcommand(0x00b6);
//column address set
HAL_LCD_COMMAND + 0x2a, //main_lcd_sendcommand(0x002a);
HAL_LCD_PARAM + 0x04, //main_lcd_senddata(0x0004);
HAL_LCD_PARAM + 0x83, //main_lcd_senddata(0x0083);
//page address set
HAL_LCD_COMMAND + 0x2b, //main_lcd_sendcommand(0x002b);
HAL_LCD_PARAM + 0x04, //main_lcd_senddata(0x0004);
HAL_LCD_PARAM + 0x83, //main_lcd_senddata(0x0083);
HAL_LCD_COMMAND + 0x2c,
HAL_LCD_DELAY + 500, //wait_ARM_cycles(convert_nanosec_to_cycles(500000000));
HAL_LCD_ENDOFTABLE
},
/* LCD register initialization sequence (LCD3) */
{
HAL_LCD_ENDOFTABLE
},
/* Initialization S1D13716 registers */
{
{ REG0018_POWERSAVE, 0x01 },//enable power save mode to set clock.
{ REG0014_CLKSRC, 0x00 },//select external CLKI for SYSCLK, PLL source
{ REG0010_PLL0, 0x19 },//0xdd },//this setting is 40M,50M is 0xDD 13M is 0x60
{ REG0011_PLL1, 0x1d }, //0x1c },//this setting is 40M,50M is 0x1C 13M is 0xF0
{ REG0012_PLL2, 0x20 },
{ REG0015_SERLCDCLK, 0x21 },//I2C Clock=sysclock/8
{ REG0014_CLKSRC, 0x31 },//LCDPCLK=sysclock/12
{ REG0016_LCDPCLKDIV, 0x00 },//lcdpclk predivider = 1/1
{ REG0018_POWERSAVE, 0x04 },//disable power save mode, internal pll and oscillator disable
{ REGFLAG_DELAY, 0xFF },//delay for pll lock
{ REG0070_PWMCTRL0, 0x05 },//
{ REG007F_PWMWHITECYCLE, 0x3F },
{ REG0072_PWMCTRL1, 0x01 },
{ REGFLAG_DELAY, 0x50 },
{ REG0108_CMCONTROL, 0x01 },//software reset camera mode
{ REG0108_CMCONTROL, 0x00 },
{ REG0202_RESIZE, 0x81 },//Reset resizer
{ REG0202_RESIZE, 0x01 },//Reset resizer
{ REG0040_LCD1SETTING, 0x03 },//Data bus width 8 bits format 565
{ REG0044_LCD2SETTING, 0x03 },//Data bus width 8 bits format 565
{ REG0048_LCD3SETTING, 0x00 },//Not set
{ REG004E_SCALEUP, 0x00 },//Encode Scale Overlay Disable
{ REG004C_DISPSETTING, 0x42 },//Overlay with Main and Overlay is 8 bits and select lcd2 62
{ REG0036_LCDTRIG, 0x00 },
{ REG003C_LCDXFER, 0x00 },//lcd auto transfer disable
{ REG0248_OIMAGE, 0x10 },//The host output image to overlay 00 to main
{ REG0216_RYC, 0x05 },//Ryc format is 565
{ REG0220_YUVRGBXLATE0, 0x05 },//YUV,565Default value
{ REG0222_YUVRGBXLATE1, 0x00 },//yuv/rgb converter is enabled.original UV,YUV format VYUV
{ REG0202_RESIZE, 0x00 },//Reset and enable resizer03
{ REG0204_RESIZESX0, 0x00 },
{ REG0205_RESIZESX1, 0x00 },
{ REG0206_RESIZESY0, 0x00 },
{ REG0207_RESIZESY1, 0x00 },
{ REG0208_RESIZEEX0, 0x7F },//127
{ REG0209_RESIZEEX1, 0x00 },
{ REG020A_RESIZEEY0, 0x7F },//128
{ REG020B_RESIZEEY1, 0x00 },
{ REG020C_RESIZEHSCALE, 0x01 },//H-scale 1:1
{ REG020E_RESIZEVSCALE, 0x01 },//V-scale 1:1
{ REG0210_RESIZEOP, 0x20 },//Scale mode is no scale
{ REG024A_SWIVELVIEW, 0x00 },//Not swivel, not rotated, not mirriored
{ REG0224_YUVWRSTART0, 0x00 },//Main window adress
{ REG0225_YUVWRSTART1, 0x20 },//0x2000 8K
{ REG0226_YUVWRSTART2, 0x00 },//
{ REG0240_OSADDR0, 0x00 },//Overlay adress
{ REG0241_OSADDR1, 0xA0 },//0xc000 so the main window size is 0xc000-0x2000
{ REG0242_OSADDR2, 0x00 },
{ REG0244_OHRES, 0x7F },//Overlay width
{ REG0246_OVRES, 0x7F },//Overlay height
{ REG0212_MEMHORZRES, 0x7F },//Actual Horizontal Resolution in Pixels -1. jpeg encode use
{ REG0214_MEMVERTRES, 0x7F },//159
{ REG0228_XOFFSET0, 0x00 },//Main window's position in overlay
{ REG0229_XOFFSET1, 0x00 },
{ REG022A_YOFFSET0, 0x10 },
{ REG022B_YOFFSET1, 0x00 },
{ REG0100_CMCLK, 0x02 },//camera clock setting.1 is 1/4 sysclock
{ REG0102_CMSIGNAL, 0x02 },
{ REG0104_CMMODE0, 0x08 },
{ REG0106_CMMODE1, 0x00 },
{ REGFLAG_ENDOFTABLE, 0x00 }
},
/* Initialization camera data */
{
// VGA MODE FOR OV7645FB
{ 0x12, 0x80 },
{ 0x03, 0xa4 }, //0x04----black & white//0xa4----normal
{ 0x04, 0x30 },
{ 0x05, 0x88 },
{ 0x06, 0x60 },
{ 0x11, 0x00 }, //{ 0x11, 0x00 }, //;value 01 for 15 fps
{ 0x12, 0x15 },
{ 0x13, 0xa3 },
{ 0x14, 0x14 },
{ 0x15, 0x14 },
{ 0x1f, 0x41 },
{ 0x20, 0xd0 },
{ 0x23, 0xde },
{ 0x24, 0xa0 },
{ 0x25, 0x80 },
{ 0x26, 0xb2 },
{ 0x27, 0xe0 }, //0xe2----black & white//0xe0----normal
{ 0x28, 0x20 },
{ 0x2a, 0x01 },
{ 0x2b, 0x00 },
{ 0x2d, 0x05 },
{ 0x2f, 0x9d },
{ 0x30, 0x00 },
{ 0x31, 0xc4 },
{ 0x60, 0x86 },
{ 0x61, 0xe0 },
{ 0x62, 0x88 },
{ 0x63, 0x11 },
{ 0x64, 0x89 },
{ 0x65, 0x00 },
{ 0x67, 0x94 },
{ 0x68, 0x7a },
{ 0x69, 0x08 },
{ 0x6c, 0x11 }, //0xFF----black & white//0x11----normal
{ 0x6d, 0x33 }, //0xFF----black & white//0x33----normal
{ 0x6e, 0x22 }, //0xFF----black & white//0x22----normal
{ 0x6f, 0x00 },
{ 0x74, 0x20 }, //{ 0x74, 0x60 }, low light use 0x60
{ 0x75, 0x0e }, //{ 0x75, 0x06 },
{ 0x77, 0xc4 }, //{ 0x77, 0xb5 },
//{ 0x79, 0x80 }, //set----black & white//remove----normal
//{ 0x7a, 0x80 }, //set----black & white//remove----normal
{ REGFLAG_ENDOFTABLE,0xFFFF} //for end
}
};
#elif( MODEL == 1 )
HAL_STRUCT HAL_STRUCT_NAME =
{
50000000, //PllClk 50M
32768, //internal OSC frequency
0x02200000, //dwBaseAddress
0x00000000, //dwRegisterOffset
0x00000000, //dwMemoryOffset
640, 480, //wCam1Width, wCam1Height
0, //dwRequiredVRAM
0, //dwFlags
/* LCD register initialization sequence (LCD1) */
{
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0x2C,
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0x02,
HAL_LCD_COMMAND + 0x01,
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0x2A,
HAL_LCD_COMMAND + 0xD5, //213
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0x2B,
HAL_LCD_COMMAND + 0xA0,
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0x26,
HAL_LCD_COMMAND + 0x0F,
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0x10,
HAL_LCD_COMMAND + 0x02,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x20,
HAL_LCD_COMMAND + 0x05,
//HAL_LCD_DELAY + 200,
// HAL_LCD_COMMAND + 0x01,
// HAL_LCD_COMMAND + 0x00,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x40,
HAL_LCD_COMMAND + 0x00,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x22,
HAL_LCD_COMMAND + 0x11,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x24,
HAL_LCD_COMMAND + 0x11,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x28,
HAL_LCD_COMMAND + 0x00,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x34,
HAL_LCD_COMMAND + 0x8d, //0xCF
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x2E,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x45,
HAL_LCD_COMMAND + 0x00,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x42,
HAL_LCD_COMMAND + 0x00,
HAL_LCD_COMMAND + 0x7f,
//HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x43,
HAL_LCD_COMMAND + 0x00,
HAL_LCD_COMMAND + 0x7F,
HAL_LCD_DELAY + 200,
HAL_LCD_COMMAND + 0x51,
HAL_LCD_ENDOFTABLE
},
/* LCD register initialization sequence (LCD2) */
{
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0xD1,
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0x81,
HAL_LCD_PARAM + 0x28,
HAL_LCD_PARAM + 0x06,
HAL_LCD_DELAY + 100,
HAL_LCD_COMMAND + 0x20,
HAL_LCD_PARAM + 0x0F,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -