⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userpref.c

📁 使用于克隆器
💻 C
📖 第 1 页 / 共 5 页
字号:
/******************************************************************************
 Copyright (c) 2003 MStar Semiconductor, Inc.
 All rights reserved.

 [Module Name]: UserPref.c
 [Date]:        18-Dec-2003
 [Comment]:
   User preference subroutines.
 [Reversion History]:
*******************************************************************************/

#define _USERPREF_C_

// System

// Common
#include "define.h"
#include "mcu.h"
#include "userdef.h"
// External
#include "common.h"
#include "global.h"
#include "ram.h"
#include "board.h"
#include "uart.h"
#include "i2c.h"
// Internal
#include "userpref.h"

#ifdef EEPROM_DEBUG
  #define EE_PUTSTR(str)        putstr(str)
  #define EE_PRINTF(str,val)    printf(str,val)
#else
  #define EE_PUTSTR(str)
  #define EE_PRINTF(str,val)
#endif

/*
WORD usrCalCheckSum(BYTE* pBuf, BYTE ucBufLen)
{
    XDATA WORD CheckSum;
    ucBufLen -= 2;
    CheckSum = 0;
    do
    {
        CheckSum += pBuf[ucBufLen - 1];
        ucBufLen--;
    }while (ucBufLen);
    return CheckSum;
}
*/

///////////////////////////////////////////////////////////////////////////////
// <Function>: usrCheckEEPROM
//
// <Description>: Check EEPROM ID and update.
///////////////////////////////////////////////////////////////////////////////
void usrCheckEEPROM(void)
{
    BOOL bInitEEPROM = FALSE;
    // Test EEPROM 1
    #if(Type_Select==Type_9211)
    s_I2CSel=MCU_RAM;
    rmWriteByte(RM_TEST_ID_ADDRESS, 0xD9);//0x55);
    if (0xD9 != rmReadByte(RM_TEST_ID_ADDRESS))
    {
        EE_PUTSTR("\r\nEEPROM test1 failed!");
        bInitEEPROM = TRUE;
    }
    // Test EEPROM 2
//    s_I2CSel=TV_RAM;
    s_I2CSel=MCU_RAM;
    rmWriteByte(RM_TEST_ID_ADDRESS, 0xD9);//0xAA);
    if (0xD9 != rmReadByte(RM_TEST_ID_ADDRESS))
    {
        EE_PUTSTR("\r\nEEPROM test2 failed!");
        bInitEEPROM = TRUE;
    }
#else
s_I2CSel=MCU_RAM;
 rmWriteByte( RM_TEST_ID_ADDRESS, 0x55 );
    if ( 0x55 != rmReadByte( RM_TEST_ID_ADDRESS ) )
    {
        //EE_PUTSTR("\r\n NVM fail1");
        bInitEEPROM = TRUE;
    }
    // Test EEPROM 2
    s_I2CSel=MCU_RAM;
    rmWriteByte( RM_TEST_ID_ADDRESS, 0xAA );
    if ( 0xAA != rmReadByte( RM_TEST_ID_ADDRESS ) )
    {
        //EE_PUTSTR("\r\n NVM fail2");
        bInitEEPROM = TRUE;
    }
    //EE_PUTSTR("\r\nEEPROM test OK!");

    // Check EEPROM ...
    if ( rmReadByte( RM_EEPROM_ID_ADDRESS ) != USR_EEPROM_ID ) // check EEPROM ID
    {
        //EE_PUTSTR("\r\n NVM ID Invalid!");
        bInitEEPROM = TRUE;
    }
#endif
    if (bInitEEPROM) // EEPROM need init
    {
        putstr( "\r\n  CHECK EER!" );
        usrInitAllSetting(); // initialize All setting
    }
    else
    {
       putstr( "\r\n  CHECK OK!" );
       SetLed_OK();
	 SetLed_READING();
	 SetLed_WRITING();		
    }
}

///////////////////////////////////////////////////////////////////////////////
// <Function>: usrInitAllSetting
//
// <Description>: Initialize All setting.
///////////////////////////////////////////////////////////////////////////////
void usrInitAllSetting(void)
{
       ClrLed_OK();
       ClrLed_READING();
	 ClrLed_WRITING();	
}
///************************************
//Type_Select=Type_9211
//***********************************
#if(Type_Select==Type_9211)

void usrInitAdcSetting()
{
        usrInitAdcPCSetting();          // initialize PC ADC setting
        usrInitAdcVIDEONTSCSetting();   // initialize VIDEO ADC setting for NTSC
        usrInitAdcVIDEOPALSetting();    // initialize VIDEO ADC setting for PAL
        usrInitAdcYUVNTSCSetting();     // initialize YUV ADC setting
        usrInitAdcYUV720PSetting();	// power add 20041115
        usrInitAdcYUVOtherSetting();         // initialize YUV ADC setting

}
void usrLoadAdcSetting()
{
        usrLoadAdcPCSetting();          // initialize PC ADC setting
        usrLoadAdcVIDEONTSCSetting();   // initialize VIDEO ADC setting for NTSC
        usrLoadAdcVIDEOPALSetting();    // initialize VIDEO ADC setting for PAL
        usrLoadAdcYUVNTSCSetting();     // initialize YUV ADC setting
        usrLoadAdcYUV720PSetting();	// power add 20041115
        usrLoadAdcYUVOtherSetting();         // initialize YUV ADC setting

}
void usrInitColorTempSetting()
{
        usrInitPCColorSetting();        // initialize color setting
        usrInitVideoSetting();          // initialize video setting
        usrInitVideoColorTempSetting(); // initialize video temperature setting
}

void usrInitVariableFromEEPROM(void)
{
 	
 //       usrInitFactorySetting();
       usrInitSystemSetting();         // initialize system setting
	 usrInitAdcSetting();
	 usrInitColorTempSetting();
        usrInitPictureModeData();       // initialize video picture mode data
        usrInitSoundSetting();          // initialize sound setting
        usrInitSoundModeData();         // initialize sound mode data
        usrInitCRTDeflectionStaticSetting();  // initialize CRT-Deflection Setting
        usrInitCRTDeflectionDynamicSetting();  // initialize CRT-Deflection Setting
 //       usrInitCRTVideoAmpSetting();    // initialize CRT-Video Amplifier Setting
	  usrInitVideoDecoder();
 	  DevVDPatchInit();				// add power 20041209
        usrInitNonLinearAdjustCurve();  // initialize VIDEO non-linear curve setting
        usrInitAllPCModeSetting();        // initialize all PC mode setting
        usrInitAllYUVModeSetting();        // initialize all YUV mode setting
        tvInitSetting();                // initialize TV driver   
#if 0//Adjust_SubLuma       
       // usrInitSubLumaSetting();
	usrUpDateContCurveWithSubLuma();		
	usrUpDateBriCurveWithSubLuma();
#endif	
	userInitOtherSetting();				// power 20041024
	    
}

void usrLoadVariableFromEEPROM(void)
{
 
   //     usrLoadFactorySetting();
        usrLoadSystemSetting();         // load system setting                                       // ADC dynami
        usrLoadAdcSetting();
////****	usrInitColorTempSetting 
        usrLoadPCColorSetting();        // load color setting
//        usrLoadPCColorTempSetting();    // load color temperature setting //must after PC color setting  
        usrLoadVideoSetting();          // load video setting
        usrLoadVideoColorTempSetting(); // load video temperature setting //must after video setting
      
        usrLoadPictureModeData();       // load video picture mode data
        usrLoadSoundSetting();          // load sound setting
        usrLoadSoundModeData();         // load sound mode data //must after sound setting

	 usrLoadCRTDeflectionStaticSetting();  // load CRT-Deflection static Setting
	 usrLoadCRTDeflectionDynamicSetting();  //Load CRT-Deflection Setting
//	 usrLoadCRTVideoAmpSetting();    // load CRT-Video Amplifier Setting
//        usrLoadVideoDecoder();
        usrLoadNonLinearAdjustCurve();  // load VIDEO non-linear curve setting
        usrLoadAllPCModeSetting();        // Load all PC mode setting
        usrLoadAllYUVModeSetting();        // Load all YUV mode setting
        tvLoadSetting();                // load TV driver
#if 0//Adjust_SubLuma        
        usrLoadSubLumaSetting();
	usrUpDateContCurveWithSubLuma();				
	usrUpDateBriCurveWithSubLuma();		
#endif
 	 userLoadOtherSetting();				// tecon
}


void userInitOtherSetting(void)
{
   s_I2CSel=MCU_RAM;
      BOARDCHECKSUMH=rmReadByte(RM_TEST_ID_ADDRESS); 
	BOARDCHECKSUML=rmReadByte(RM_EEPROM_ID_ADDRESS);	
#if 1//USE_CALENDAR	
	INIT_YEAR=rmReadByte(RM_EEPROM_CALENDAR);		// year
	INIT_MONTH=rmReadByte(RM_EEPROM_CALENDAR+1);			// month
#endif	
	INIT_TIMER_TOLERANCE=rmReadByte(RM_TIMER_TOLERANCE);
     // USE_LOCK_PSW=1;
   rmBurstWriteBytes(RM_LOCKSETING_ADDRESS, (BYTE *)&g_LockSetting, SIZE_LOCKSETING);


	s_I2CSel=TV_RAM; 
	 	rmWriteByte(RM_TEST_ID_ADDRESS, BOARDCHECKSUMH); 
	rmWriteByte(RM_EEPROM_ID_ADDRESS, BOARDCHECKSUML);	
	rmWriteByte(RM_Factory_Option_ADDRESS,0x00);
#if 1//USE_CALENDAR	
	rmWriteByte(RM_EEPROM_CALENDAR,INIT_YEAR);		// year
	rmWriteByte(RM_EEPROM_CALENDAR+1,INIT_MONTH);			// month
#endif	
	rmWriteByte(RM_TIMER_TOLERANCE,INIT_TIMER_TOLERANCE);
     // USE_LOCK_PSW=1;


   rmBurstWriteBytes(RM_LOCKSETING_ADDRESS, (BYTE *)&g_LockSetting, SIZE_LOCKSETING);
}
void userLoadOtherSetting(void)
{
   s_I2CSel=TV_RAM;
      BOARDCHECKSUMH=rmReadByte(RM_TEST_ID_ADDRESS); 
	BOARDCHECKSUML=rmReadByte(RM_EEPROM_ID_ADDRESS);	
#if 1//USE_CALENDAR	
	INIT_YEAR=rmReadByte(RM_EEPROM_CALENDAR);		// year
	INIT_MONTH=rmReadByte(RM_EEPROM_CALENDAR+1);			// month
#endif	
	INIT_TIMER_TOLERANCE=rmReadByte(RM_TIMER_TOLERANCE);
     // USE_LOCK_PSW=1;
   rmBurstWriteBytes(RM_LOCKSETING_ADDRESS, (BYTE *)&g_LockSetting, SIZE_LOCKSETING);


	s_I2CSel=MCU_RAM; 
	 	rmWriteByte(RM_TEST_ID_ADDRESS, BOARDCHECKSUMH); 
	rmWriteByte(RM_EEPROM_ID_ADDRESS, BOARDCHECKSUML);	
	rmWriteByte(RM_Factory_Option_ADDRESS,0x00);
#if 1//USE_CALENDAR	
	rmWriteByte(RM_EEPROM_CALENDAR,INIT_YEAR);		// year
	rmWriteByte(RM_EEPROM_CALENDAR+1,INIT_MONTH);			// month
#endif	
	rmWriteByte(RM_TIMER_TOLERANCE,INIT_TIMER_TOLERANCE);
     // USE_LOCK_PSW=1;


   rmBurstWriteBytes(RM_LOCKSETING_ADDRESS, (BYTE *)&g_LockSetting, SIZE_LOCKSETING);
}
void usrInitSystemSetting(void)
{
    s_I2CSel=MCU_RAM;
    rmBurstReadBytes(RM_SYS_SETTING_ADDRESS, (BYTE *)&g_SysSetting, SIZE_SYS_SETTING);
    s_I2CSel=TV_RAM;
    rmBurstWriteBytes(RM_SYS_SETTING_ADDRESS, (BYTE *)&g_SysSetting, SIZE_SYS_SETTING);
}
///////////////////////////////////////////////////////////////////////////////
// <Function>: usrLoadSystemSetting
//
// <Description>: Load system setting.
///////////////////////////////////////////////////////////////////////////////
void usrLoadSystemSetting(void)
{
    s_I2CSel=TV_RAM;
    rmBurstReadBytes(RM_SYS_SETTING_ADDRESS, (BYTE *)&g_SysSetting, SIZE_SYS_SETTING);
    s_I2CSel=MCU_RAM;
    rmBurstWriteBytes(RM_SYS_SETTING_ADDRESS, (BYTE *)&g_SysSetting, SIZE_SYS_SETTING);
}



void usrInitAdcPCSetting(void)
{

    s_I2CSel=MCU_RAM;
    rmBurstReadBytes(RM_ADC_PC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
    s_I2CSel=TV_RAM;
    rmBurstWriteBytes(RM_ADC_PC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
}

void usrLoadAdcPCSetting(void)
{
    s_I2CSel=TV_RAM;
    rmBurstReadBytes(RM_ADC_PC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
    s_I2CSel=MCU_RAM;
    rmBurstWriteBytes(RM_ADC_PC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
}

void usrInitAdcVIDEONTSCSetting(void)
{
   
   s_I2CSel=MCU_RAM;
    rmBurstReadBytes(RM_ADC_VIDEO_NTSC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
    s_I2CSel=TV_RAM;
    rmBurstWriteBytes(RM_ADC_VIDEO_NTSC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
}

void usrLoadAdcVIDEONTSCSetting(void)
{
    s_I2CSel=TV_RAM;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -