www.pudn.com > Bit1611_demo_code.rar > EEPROM.H
/* **********************************************************************
Copyright (c) 2002-2006 Beyond Innovation Technology Co., Ltd
All rights are reserved. Reproduction in whole or in parts is
prohibited without the prior written consent of the copyright owner.
----------------------------------------------------------------------
Module: EEPROM.H
Purpose: Interface of EEPROM.
Version: 0.01 07:25PM 2005/05/13
Compiler: Keil 8051 C Compiler v8.01
Reference:
----------------------------------------------------------------------
Modification:
R0.01 07:24PM 2005/05/13 Jeffrey Chang
Reason:
1. Original.
Solution:
********************************************************************** */
#ifndef _EEPROM_H_
#define _EEPROM_H_
/* ------------------------------------
Header Files
------------------------------------ */
#include "osd.h"
#include "platform.h"
#include "vp.h"
#include "yuv.h"
/* ------------------------------------
Macro Definitions
------------------------------------ */
#undef EXTERN
#ifdef _EEPROM_C_
#define EXTERN
#else
#define EXTERN extern
#endif
/* ::::::::::::::::::::::::::::::::::::
EEPROM Configuration
:::::::::::::::::::::::::::::::::::: */
#if (EEPROM_CFG == EEPROM_PCF85116)
#define EEPROM_BLOCK 256 /* 256 bytes/block x 8 blocks */
#define EEPROM_MAX_BLOCK 8
#define EEPROM_PAGE 32 /* 32 bytes/page x 64 pages */
#define EEPROM_WRITE_CYCLE_TIME 100 // 10 ms
#elif (EEPROM_CFG == EEPROM_24LC04B)
#define EEPROM_BLOCK 256 /* 256 bytes/block x 2 blocks */
#define EEPROM_MAX_BLOCK 2
#define EEPROM_PAGE 16 /* 16 bytes/page x 32 pages */
#define EEPROM_WRITE_CYCLE_TIME 100 // 10 ms
#elif (EEPROM_CFG == EEPROM_AT24C04) // Atmel AT24C04
// 4096 = 2 x 256 x 8 bits
#define EEPROM_BLOCK 256 /* 256 bytes/block x 2 blocks */
#define EEPROM_MAX_BLOCK 2
#define EEPROM_PAGE 16 /* 16 bytes/page x 32 pages */
#define EEPROM_WRITE_CYCLE_TIME 100 // 10 ms
#elif (EEPROM_CFG == EEPROM_AT24C08) // AT24C08
// 8192 = 4 x 256 x 8 bits
#define EEPROM_BLOCK 256 /* Block Size: 256 bytes/block */
#define EEPROM_MAX_BLOCK 4 // Total Blocks: 4 blocks
#define EEPROM_PAGE 16 /* Page Size: 16 bytes/page */
//#define EEPROM_WRITE_CYCLE_TIME 10 // 10 ms
#define EEPROM_WRITE_CYCLE_TIME 20 // 10 ms
#elif (EEPROM_CFG == EEPROM_AT24C16) // AT24C16
// 16384 = 8 x 256 x 8 bits
#define EEPROM_BLOCK 256 /* [12]2-39 Block Size: 256 bytes/block */
#define EEPROM_MAX_BLOCK 8 // [12]2-39 Total Blocks: 8 blocks
#define EEPROM_PAGE 16 /* [12]2-43 Page Size: 16 bytes/page */
#define EEPROM_WRITE_CYCLE_TIME 10 // [12]2-40 Twr: 10 ms
#elif (EEPROM_CFG == EEPROM_AT24C32) // AT24C32
// 32768 = 16 x 256 x 8 bits
#define EEPROM_BLOCK 256 /* [12]2-39 Block Size: 256 bytes/block */
#define EEPROM_MAX_BLOCK 16 // [12]2-39 Total Blocks: 16 blocks
#define EEPROM_PAGE 32 /* [12]2-85 Page Size: 32 bytes/page */
#define EEPROM_WRITE_CYCLE_TIME 20 // [12]2-82 Twr: 10 ms
#elif (EEPROM_CFG == EEPROM_AT24C64) // AT24C64
// 65536 = 32 x 256 x 8 bits
#define EEPROM_BLOCK 256 /* [12]2-39 Block Size: 256 bytes/block */
#define EEPROM_MAX_BLOCK 32 // [12]2-39 Total Blocks: 16 blocks
#define EEPROM_PAGE 32 /* [12]2-85 Page Size: 32 bytes/page */
#define EEPROM_WRITE_CYCLE_TIME 20 // [12]2-82 Twr: 10 ms
#elif (EEPROM_CFG == EEPROM_AM24LC02) // AM24LC02
// 2048 = 256 x 8 bits
#define EEPROM_BLOCK 256 /* [12]2-39 Block Size: 256 bytes/block */
#define EEPROM_MAX_BLOCK 1 // [12]2-39 Total Blocks: 1 blocks
#define EEPROM_PAGE 8 /* [12]2-85 Page Size: 8 bytes/page */
#define EEPROM_WRITE_CYCLE_TIME 20 // [14]3 Twr: 10 ms
#elif (EEPROM_CFG == EEPROM_IS24C02) // [16]
// 2048 = 256 x 8 bits
#define EEPROM_BLOCK 256 /* [16]1 Block Size: 256 bytes/block */
#define EEPROM_MAX_BLOCK 1 // [16]1 Total Blocks: 1 blocks
#define EEPROM_PAGE 8 /* [16]5 Page Size: 8 bytes/page */
#define EEPROM_WRITE_CYCLE_TIME 20 // [16]12 Twr: 10 ms
#elif (EEPROM_CFG == EEPROM_IS24C04) // [16]
// 4096 = 512 x 8 bits
#define EEPROM_BLOCK 256 /* [16]1 Block Size: 256 bytes/block */
#define EEPROM_MAX_BLOCK 2 // [16]1 Total Blocks: 2 blocks
#define EEPROM_PAGE 16 /* [16]5 Page Size: 16 bytes/page */
#define EEPROM_WRITE_CYCLE_TIME 20 // [16]12 Twr: 10 ms
#elif (EEPROM_CFG == EEPROM_TU24C02) // [8]
// 2048 bits = 256 x 8 bits = 32 pages
#define EEPROM_BLOCK 256 // [8]1 Block Size: 256 bytes/block
#define EEPROM_MAX_BLOCK 1 // [8]1 Total Blocks: 1 blocks
#define EEPROM_PAGE 8 // [8]5 Page Size: 8 bytes/page
#define EEPROM_WRITE_CYCLE_TIME 20 // [8]12 Twr: 10 ms
#else
#error EEPROM.H - Invalid EEPROM_CFG !
#endif // EEPROM_CFG
/* ::::::::::::::::::::::::::::::::::::
tEGD: EEPROM General Descriptor Default Values
:::::::::::::::::::::::::::::::::::: */
#define EGD_PROJECT_CODE PROJECT_CODE // Project Code for EEPROM update
#define EGD_COLOR_STD_MODE YUV_CS_AUTO // Color Standard Detection Mode
/* ::::::::::::::::::::::::::::::::::::
[1]18 Audio Volume
:::::::::::::::::::::::::::::::::::: */
#define EGD_AUDIO_VOLUME 25 // PWM2 Duty for Audio Volume control !
/* ::::::::::::::::::::::::::::::::::::
[1]23 VP Background and Test Pattern
:::::::::::::::::::::::::::::::::::: */
// Normal Pattern
#define PATTERN_NORMAL_R 0x3F // [1]23 Color R Intensity 0x00..0x3F
#define PATTERN_NORMAL_G 0x00 // [1]23 Color G Intensity 0x00..0x3F
#define PATTERN_NORMAL_B 0x00 // [1]23 Color B Intensity 0x00..0x3F
// No Signal Pattern
#define PATTERN_NOSIGNAL_R 0x00 // [1]23 Color R Intensity 0x00..0x3F
#define PATTERN_NOSIGNAL_G 0x00 // [1]23 Color G Intensity 0x00..0x3F
#define PATTERN_NOSIGNAL_B 0x3F // [1]23 Color B Intensity 0x00..0x3F
/* ::::::::::::::::::::::::::::::::::::
IR Channel
:::::::::::::::::::::::::::::::::::: */
#define IR_CHANNEL_A 0
#define IR_CHANNEL_B 1
#define IR_CHANNEL_OFF 2
#define IR_CHANNEL_NO 3
/* ::::::::::::::::::::::::::::::::::::
AV System
:::::::::::::::::::::::::::::::::::: */
#define AV_AUTO 0
#define AV_NTSC 1
#define AV_PAL 2
#define AV_NO 3
/* ::::::::::::::::::::::::::::::::::::
Screen
:::::::::::::::::::::::::::::::::::: */
#define SCREEN_OFF 0
#define SCREEN_ON 1
#define SCREEN_AUTO 2
#define SCREEN_NO 3
/* ::::::::::::::::::::::::::::::::::::
[1]56 PWM Function
:::::::::::::::::::::::::::::::::::: */
// PWM1 as Backlight control
#define EGD_CB_PWM1_REF 0x64 // [1]58 PWM1's Reference Clock
#define EGD_CC_PWM1_FREQ 0x64 // [1]58 PWM1's PWM Frequency
#define EGD_CD_PWM1_ATTR1 0x00 // [1]58 PWM1's PWM Attribute
#define EGD_CECF_PWM1_DUTY 0x0032 // [1]58 PWM1's PWM Duty
#define EGD_D0_PWM1_ATTR2 0x00 // [1]58 PWM2's Reference Clock
// PWM2 as Audio Volume control
#define EGD_D1_PWM2_REF 0x64 // [1]58 PWM2's Reference Clock
#define EGD_D2_PWM2_FREQ 0x64 // [1]58 PWM2's PWM Frequency
#define EGD_D3_PWM2_DELAY 0x50 // [1]58 PWM2's PWM Delay
#define EGD_D4_PWM2_ATTR1 0x00 // [1]58 PWM2's PWM Attribute 1
#define EGD_D5D6_PWM2_DUTY 0x0032 // [1]59 PWM2's PWM Duty
#define EGD_D7_PWM2_ATTR2 0x21 // [1]59 PWM2's PWM Attribute 2
/* ::::::::::::::::::::::::::::::::::::
[1]58 IR Decoder Function
:::::::::::::::::::::::::::::::::::: */
#define EGD_D8_IR_UDCC_L 0x00 // [1]58 User Defined Customer Code
#define EGD_D9_IR_UDCC_H 0x00 // [1]58 User Defined Customer /Code
#define EGD_DA_IR_DATA_L 0x00 // [1]58 IR Data
#define EGD_DB_IR_CODE_L 0x00 // [1]58 IR Code
#define EGD_DC_IR_DATA_H 0x00 // [1]58 IR /Data
#define EGD_DD_IR_CODE_H 0x00 // [1]58 IR /Code
#define EGD_DE_IR_ATTR 0x00 // [1]58 IR Attribute
/* ::::::::::::::::::::::::::::::::::::
[1]55 External OSD Interface
:::::::::::::::::::::::::::::::::::: */
#define EGD_FE_EXTOSD_ATTR 0x00
#define EGD_DISPLAY_MODE DISPLAY_MODE_LINEAR // [1]14 Linear
#define EGD_IMAGE_FILTER IMAGE_FILTER_NORMAL // 0x8B
#define EGD_IMAGE_MIRROR OFF // [1] Image Mirror
#define EGD_TCON_MODE TCON_MODE_RU // [19]63 TCON Mode
/* ::::::::::::::::::::::::::::::::::::
tEYD: EEPROM YUV Descriptor Default Values
:::::::::::::::::::::::::::::::::::: */
#define EYD_YUV_ID YUV_ID_CVBS_11 // YUV_ID_CVBS_11 as DEFAULT YUV !
// VP
#define EGD_BLACKLEVEL 0x00 // 0x082 (2's)
#define EGD_WHITESLOPE 0x80 // 0x083
#define EGD_BLACKSLOPE 0x80 // 0x084
#define EGD_WHITESTART 0x80 // 0x085
#define EGD_BLACKSTART 0x80 // 0x086
#define EGD_BRIGHTNESS 0x80 // 0x07C..0x07E
#define EGD_CONTRAST 0x80 // 0x07F..0x081
#define EGD_VOLUME 0x00
// VD
#define EYD_BRIGHTNESS 0x98 // 0x106 (2's)
#define EYD_CONTRAST 0x84 // 0x107
#define EYD_BLACKLEVEL 0x10 // 0x108
#define EYD_SATURATION 0x31 // 0x109
#define EYD_HUE 0x00 // 0x10A
#define EYD_SHARPNESS 0x00 // 0x105
#define EYD_CS_MODE YUV_CS_NTSC // Default YUV Color Standard Mode
//#define EYD_CS_MODE YUV_CS_PAL // Default YUV Color Standard Mode
#define EYD_SKIN_TONE 0 // 0 degree
#define EYD_CHANNEL 10 // Channel
/* ::::::::::::::::::::::::::::::::::::
tsEGD structure starting address
:::::::::::::::::::::::::::::::::::: */
#define EGD_ADDR 0
#define EGD_ADDR_PROJECT_CODE (EGD_ADDR)
#define EGD_ADDR_COLOR_STD_MODE (EGD_ADDR_PROJECT_CODE + sizeof(tsEGD.ulProjectCode))
#define EGD_ADDR_DISPLAY_MODE (EGD_ADDR_COLOR_STD_MODE + sizeof(tsEGD.bColorStdMode))
#define EGD_ADDR_IMAGE_FILTER (EGD_ADDR_DISPLAY_MODE + sizeof(tsEGD.bDisplay_Mode))
#define EGD_ADDR_IMAGE_MIRROR (EGD_ADDR_IMAGE_FILTER + sizeof(tsEGD.bImage_Filter))
#define EGD_ADDR_TCON_MODE (EGD_ADDR_IMAGE_MIRROR + sizeof(tsEGD.bImage_Mirror))
#define EGD_ADDR_BLACKLEVEL (EGD_ADDR_TCON_MODE + sizeof(tsEGD.bTCON_Mode))
#define EGD_ADDR_WHITESLOPE (EGD_ADDR_BLACKLEVEL + sizeof(tsEGD.bBlackLevel))
#define EGD_ADDR_BLACKSLOPE (EGD_ADDR_WHITESLOPE + sizeof(tsEGD.bWhiteSlope))
#define EGD_ADDR_WHITESTART (EGD_ADDR_BLACKSLOPE + sizeof(tsEGD.bBlackSlope))
#define EGD_ADDR_BLACKSTART (EGD_ADDR_WHITESTART + sizeof(tsEGD.bWhiteStart))
#define EGD_ADDR_BRIGHTNESS (EGD_ADDR_BLACKSTART + sizeof(tsEGD.bBlackStart))
#define EGD_ADDR_CONTRAST (EGD_ADDR_BRIGHTNESS + sizeof(tsEGD.bBrightness))
#define EGD_ADDR_VOLUME (EGD_ADDR_CONTRAST + sizeof(tsEGD.bContrast))
#define EGD_ADDR_LAST (EGD_ADDR_VOLUME + sizeof(tsEGD.wVolume))
/* ::::::::::::::::::::::::::::::::::::
tsEYD structure starting address
:::::::::::::::::::::::::::::::::::: */
#define EYD_ADDR (EGD_ADDR + sizeof(tEGD))
#define EYD_ADDR_YUV_ID (EYD_ADDR)
#define EYD_ADDR_BRIGHTNESS (EYD_ADDR_YUV_ID + sizeof(tsEYD.bYUV_ID))
#define EYD_ADDR_CONTRAST (EYD_ADDR_BRIGHTNESS + sizeof(tsEYD.bBrightness))
#define EYD_ADDR_BLACKLEVEL (EYD_ADDR_CONTRAST + sizeof(tsEYD.bContrast))
#define EYD_ADDR_SATURATION (EYD_ADDR_BLACKLEVEL + sizeof(tsEYD.bBlackLevel))
#define EYD_ADDR_HUE (EYD_ADDR_SATURATION + sizeof(tsEYD.bSaturation))
#define EYD_ADDR_SHARPNESS (EYD_ADDR_HUE + sizeof(tsEYD.bHue))
#define EYD_ADDR_YUV_CS (EYD_ADDR_SHARPNESS + sizeof(tsEYD.bSharpness))
#define EYD_ADDR_SKIN_TONE (EYD_ADDR_YUV_CS + sizeof(tsEYD.bYUV_CS))
#define EYD_ADDR_CHANNEL (EYD_ADDR_SKIN_TONE + sizeof(tsEYD.bSkin_Tone))
#define EYD_ADDR_LAST (EYD_ADDR_CHANNEL + sizeof(tsEYD.bChannel))
/* ::::::::::::::::::::::::::::::::::::
EEPROM Cinfiguration
:::::::::::::::::::::::::::::::::::: */
#define EEPROM_RX_BURST ON
#define EEPROM_RX_BYTE OFF
#define EEPROM_TX_BURST ON
#define EEPROM_TX_BYTE OFF
/* ------------------------------------
Type Definitions
------------------------------------ */
/* ::::::::::::::::::::::::::::::::::::
tEGD: EEPROM General Descriptor
:::::::::::::::::::::::::::::::::::: */
typedef struct EGD_TAG {
UW32 ulProjectCode; // Project Code
UB8 bColorStdMode; // Color Standard Detection Mode
UB8 bDisplay_Mode; // Display mode
// 0: Bypass
// 1: Linear (Expansion)
// 2: Nonlinear (Anamorphic)
UB8 bImage_Filter; // Image Filter
UB8 bImage_Mirror; // 0: Bypass
// 1: Mirror/Flip
UB8 bTCON_Mode; // TCON Mode
// 0: RU
// 1: LU
// 2: LD
// 3: RD
UB8 bBlackLevel;
UB8 bWhiteSlope;
UB8 bBlackSlope;
UB8 bWhiteStart;
UB8 bBlackStart;
UB8 bBrightness;
UB8 bContrast;
UW16 wVolume;
} tEGD;
/* ::::::::::::::::::::::::::::::::::::
tEYD: EEPROM YUV Descriptor
Inside these descriptors reside all mode-dependent
initial values which must be for all known modes.
Note: EYD structure NOT TO BE LONGER THAN 32 BYTES
:::::::::::::::::::::::::::::::::::: */
typedef struct EYD_TAG {
UB8 bYUV_ID; // Video Source ID: MIN_YUV_ID..MAX_YUV_ID
UB8 bBrightness; // Brightness
UB8 bContrast; // Contrast
UB8 bBlackLevel; // Black Level
UB8 bSaturation; // Saturation
UB8 bHue; // Hue
UB8 bSharpness; // Sharpness
UB8 bYUV_CS; // Color Standard Mode:
// YUV_CS_BW
// YUV_CS_NTSC
// YUV_CS_PAL
// YUV_CS_SECAM
UB8 bSkin_Tone;
UB8 bChannel; // Tuner Channel
} tEYD;
/* ------------------------------------
Variables Definitions/Declarations
------------------------------------ */
EXTERN tEGD tsEGD;
EXTERN tEYD tsEYD;
#ifdef _EEPROM_C_
EXTERN tEGD CODE tsEGD_Default =
{
CODE_PROJECT, // Project Code for EEPROM update
EGD_COLOR_STD_MODE, /* Color Standard Detection Mode */
EGD_DISPLAY_MODE, // [2]47
EGD_IMAGE_FILTER,
EGD_IMAGE_MIRROR,
EGD_TCON_MODE,
EGD_BLACKLEVEL,
EGD_WHITESLOPE,
EGD_BLACKSLOPE,
EGD_WHITESTART,
EGD_BLACKSTART,
EGD_BRIGHTNESS,
EGD_CONTRAST,
EGD_VOLUME,
};
EXTERN tEYD CODE tsEYD_Default =
{
EYD_YUV_ID, // Video ID
EYD_BRIGHTNESS,
EYD_CONTRAST,
EYD_BLACKLEVEL,
EYD_SATURATION,
EYD_HUE,
EYD_SHARPNESS,
EYD_CS_MODE, // Color Standard mode: NTSC_M or PAL
EYD_SKIN_TONE,
EYD_CHANNEL, // TV tuner channel
};
#else
EXTERN tEGD CODE tsEGD_Default;
EXTERN tEYD CODE tsEYD_Default;
#endif // _EEPROM_C_
/* ------------------------------------
Function Prototypes
------------------------------------ */
EXTERN void EEPROM_Default(void);
EXTERN void EEPROM_Init(void);
#if (EEPROM_RX_BURST)
EXTERN void EEPROM_RxBurst(UW16 wAddr, UB8 bCnt, UB8 *pbData);
#endif
#if (EEPROM_RX_BYTE)
EXTERN UB8 EEPROM_RxByte(UW16 wAddr);
#endif
#if (EEPROM_TX_BURST)
EXTERN void EEPROM_TxBurst(UW16 wAddr, UB8 bCnt, UB8 *pbData);
#endif
#if (EEPROM_TX_BYTE)
EXTERN void EEPROM_TxByte(UW16 wAddr, UB8 bData);
#endif
#endif /* _EEPROM_H_ */
/* **********************************************************************
Description:
********************************************************************** */
/* %% End Of File %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */