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

📄 drvuart.h

📁 mstar 776 开发的车载dvd
💻 H
字号:
////////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2006-2007 MStar Semiconductor, Inc.
// All rights reserved.
//
// Unless otherwise stipulated in writing, any and all information contained
// herein regardless in any format shall remain the sole proprietary of
// MStar Semiconductor Inc. and be kept in strict confidence
// (¨MStar Confidential Information〃) by the recipient.
// Any unauthorized act including without limitation unauthorized disclosure,
// copying, use, reproduction, sale, distribution, modification, disassembling,
// reverse engineering and compiling of the contents of MStar Confidential
// Information is unlawful and strictly prohibited. MStar hereby reserves the
// rights to any and all damages, losses, costs and expenses resulting therefrom.
//
////////////////////////////////////////////////////////////////////////////////

#ifndef __UART_H
#define __UART_H

#include "datatype.h"


#include "mreg51.h"
#include "board.h"

#define UARTMSG(x)   // x

#ifdef _DRVUART_C_
#define INTERFACE
#else
#define INTERFACE  extern
#endif


INTERFACE bit g_bUart0Detected; // decode command flag
INTERFACE U16 g_Uart0CheckTick;

//INTERFACE bit g_bUart1Detected; // decode command flag
INTERFACE U16 g_Uart1CheckTick;
INTERFACE bit g_bUart1WaitAck;
INTERFACE bit g_bUart1Ack;

#if (ENABLE_MSTV_UART_DEBUG)

/////////////////////////////////////////////
// Uart command structure
/////////////////////////////////////////////
typedef enum _UartCommadEnumType
{
    _UART_CMD_CODE_,
    _UART_CMD_INDEX1_,
    _UART_CMD_INDEX2_,
    _UART_CMD_INDEX3_,
    _UART_CMD_INDEX4_,
    _UART_CMD_INDEX5_,
    _UART_CMD_INDEX6_,
    _UART_CMD_INDEX7_,
    _UART_CMD_INDEX8_,
    _UART_CMD_INDEX9_,
    _UART_CMD_INDEX10_,
    _UART_CMD_INDEX11_,
    _UART_CMD_INDEX12_,
    _UART_CMD_INDEX13_,
    _UART_CMD_INDEX14_,
    _UART_CMD_INDEX15_,
    _UART_CMD_INDEX16_,

    _UART_CMD_LENGTH_
}UartCommadEnumType;

typedef struct _UartCommadType
{
    U8 Buffer[_UART_CMD_LENGTH_];  // command buffer
                                     // [Length+Command] - [Byte 2] - [Byte 3] - [Byte 4] - [Byte 5]
    U8 Index;                     // buffer index

}UartCommadType;

typedef struct _UartCommadType1
{
    U8 Buffer[20][30];  // command buffer
                                     // [Length] -[Byte 0] -[Byte 1] - [Byte 2] -...... - [CRC]
    U8 BuffIndex;                     // buffer index
    U8 CommandIndex;           // Command index
    U8 CommandCRC;           // Command CRC
    U8 SendBuffer[10];          //SendBuffer
    U8 CommandLength;                     // Command Length
}UartCommadType1;

typedef enum
{
    MCU_P0,
    MCU_P1,
    MCU_P2,
    MCU_P3,
    MCU_P4,
    MCU_TCON,
    MCU_TMOD,
    MCU_PCON,
    MCU_IE,
    MCU_IP,
    MCU_SCON
} MCU_Reg;

/////////////////////////////////////////////
// Uart Variables
/////////////////////////////////////////////
INTERFACE bit g_bUartOutput;  // output hexidecimal data flag
INTERFACE bit g_bDebugASCIICommandFlag;
INTERFACE bit g_bDebugProgStopFlag;
INTERFACE UartCommadType g_UartCommand; // Uart command struct
INTERFACE UartCommadType1 g_Uart1Command; // Uart1 command struct
INTERFACE U8 g_u8Uart1CommandIndex;

INTERFACE void MDrv_UART_Init(void);
INTERFACE void MDrv_UART_DecodeCommand(void);
INTERFACE void MDrv_UART_DecodeNormalCommand(void);
INTERFACE void MDrv_UART_DecodeExtCommand(void);
INTERFACE void MDrv_UART_ExecTestCommand(void);
INTERFACE void MDrv_UART1_SendSTR370Command(void);

#define UART_CMD_LENGTH (g_UartCommand.Buffer[_UART_CMD_CODE_] >> 5)
#define UART_CMD    (g_UartCommand.Buffer[_UART_CMD_CODE_] & 0x1F)
#define UART_CMD_MS_REG (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
#define UART_CMD_MS_DAT (g_UartCommand.Buffer[_UART_CMD_INDEX2_])

// for EXT Command
#define UART_EXT             (UART_CMD_LENGTH == 7)
#define UART_CMD_EXT_LENGTH  (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
#define UART_EXT_DEV         (g_UartCommand.Buffer[_UART_CMD_INDEX2_])
#define UART_EXT_CMD         (g_UartCommand.Buffer[_UART_CMD_INDEX3_])
#define UART_EXT_CMD_MS_DAT1 (g_UartCommand.Buffer[_UART_CMD_INDEX4_])
#define UART_EXT_CMD_MS_DAT2 (g_UartCommand.Buffer[_UART_CMD_INDEX5_])
#define UART_EXT_CMD_MS_DAT3 (g_UartCommand.Buffer[_UART_CMD_INDEX6_])
#define UART_EXT_CMD_MS_DAT4 (g_UartCommand.Buffer[_UART_CMD_INDEX7_])
#define UART_EXT_CMD_MS_DAT5 (g_UartCommand.Buffer[_UART_CMD_INDEX8_])
#define UART_EXT_CMD_MS_DAT6 (g_UartCommand.Buffer[_UART_CMD_INDEX9_])
#define UART_EXT_CMD_MS_DAT7 (g_UartCommand.Buffer[_UART_CMD_INDEX10_])
#define UART_EXT_CMD_MS_DAT8 (g_UartCommand.Buffer[_UART_CMD_INDEX11_])
#define UART_EXT_CMD_MS_DAT9 (g_UartCommand.Buffer[_UART_CMD_INDEX12_])
#define UART_EXT_CMD_MS_DAT10 (g_UartCommand.Buffer[_UART_CMD_INDEX13_])
#define UART_EXT_CMD_MS_DAT11 (g_UartCommand.Buffer[_UART_CMD_INDEX14_])
#define UART_EXT_CMD_MS_DAT12 (g_UartCommand.Buffer[_UART_CMD_INDEX15_])
#define UART_EXT_CMD_MS_DAT13 (g_UartCommand.Buffer[_UART_CMD_INDEX16_])

#define UART_CMD_FLASH_LENGTH    (g_UartCommand.Buffer[_UART_CMD_CODE_] >> 3)
#define UART_CMD_FLASH_ADDR0    (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
#define UART_CMD_FLASH_ADDR1    (g_UartCommand.Buffer[_UART_CMD_INDEX2_])
#define UART_CMD_FLASH_ADDR2    (g_UartCommand.Buffer[_UART_CMD_INDEX3_])
#define UART_CMD_FLASH_DATA     (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
#define UART_FLASH_CMD          (g_UartCommand.Buffer[_UART_CMD_CODE_] & 0x07)

// for UART1 Command
#define UART1_EXT_ID				0xF0
#define UART1_EXT_CMD_ID		(g_Uart1Command.Buffer[g_Uart1Command.CommandIndex][_UART_CMD_CODE_] )
#define UART1_EXT_CMD_LENGTH	(g_Uart1Command.Buffer[g_Uart1Command.CommandIndex][_UART_CMD_INDEX1_])
#define UART1_EXT_CMD_LENGTH_1	(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX1_])
#define UART1_EXT_FUNC_CMD		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX2_])
#define UART1_EXT_VALUE1		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX3_])
#define UART1_EXT_VALUE2		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX4_])
#define UART1_EXT_VALUE3		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX5_])
#define UART1_EXT_VALUE4		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX6_])
#define UART1_EXT_VALUE5		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX7_])
#define UART1_EXT_VALUE6		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX8_])
#define UART1_EXT_VALUE7		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX9_])
#define UART1_EXT_VALUE8		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX10_])
#define UART1_EXT_VALUE9		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX11_])
#define UART1_EXT_VALUE10		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX12_])
#define UART1_EXT_VALUE11		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX13_])
#define UART1_EXT_VALUE12		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX14_])
#define UART1_EXT_VALUE13		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX15_])

#define UART1_NEXT_PAGE		(g_Uart1Command.Buffer[g_u8Uart1CommandIndex][_UART_CMD_INDEX3_]+1)

#define uartExtFunccmd_InitalSettings		0x00
#define uartExtFuncCmd_BriSettings		0x01
#define uartExtFuncCmd_HueSettings		0x02
#define uartExtFuncCmd_ContSettings		0x03
#define uartExtFuncCmd_PWMRGBSettings 	0x04
#define uartExtFuncCmd_PWMRSettings	0x05
#define uartExtFuncCmd_PWMGSettings	0x06
#define uartExtFuncCmd_PWMBSettings	0x07
#define uartExtFuncCmd_VCOMDCSettings	0x08
#define uartExtFuncCmd_VCOMACSettings	0x09
#define uartExtFuncCmd_ComponentInput	0x10
#define uartExtFuncCmd_VGAInput		0x11
#define uartExtFuncCmd_Poweroff			0x12
#define uartExtFuncCmd_BackLightCont	0x20
#define uartExtFuncCmd_QueryInputType   0x30
#define uartExtFuncCmd_USBCont			0x31
#define uartExtFuncCmd_BTCont			0x32
#define uartExtFuncCmd_ClearAllOSD	       0x33
#define uartExtFuncCmd_DisplayMenuIdx	0x40
#define uartExtFuncCmd_DisplayString	       0x41
#define uartEXtFuncCmd_SpectrumReceive 0x42
#define uartExtFuncCmd_DislplayStrStatus	0x43


#define _EOS_ '\0' // end of string

#define uartWrite_MST_Bank_n    0x01
#define uartRead_MST_Bank_n     0x02
#define UART_OSD_BANK           0x21

#define uartRead_MCU_XDATA      0x04
#define uartWrite_MCU_XDATA     0x05

#define uartTest_Command        0x09

#define uartI2C_Device_Write    0x10
#define uartI2C_Device_Read     0x11

#define uartEEPROM_Write        0x12
#define uartEEPROM_Read         0x13

//---------------------------------
#define uartExtDev_I2C_DEVICE               0x00
#define uartExtDev_MstDlcTest               0x05
#define uartExtDev_SAMSUNG_S5H1409_DEMODE   0x10
//#if ((CHANNEL_SCAN_AUTO_TEST == 1) || (SFU_AUTO_TEST == 1))
#define uartExtDev_I2C_DEVICE_NEW           0x20
#define uartExtDev_SCAN_TUNER               0x30
#define uartExtDev_AUDIO_DEBUG				0x80
//#endif
#define uartExtDev_EEPROM_HDCP      			0x03

#define URCMD_EEPROM_HDCP_GET_ADDR      	0
#define URCMD_EEPROM_HDCP_WRITE         	1
#define URCMD_EEPROM_HDCP_WRITE_END     	2
#define URCMD_EEPROM_HDCP_GET_CHECKSUM  	3

//---------------------------------

// kWrite_MST_Bank_n, kRead_MST_Bank_n
#define UART_CMD_MS_BANK     (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
#define UART_CMD_MS_REGINDEX (g_UartCommand.Buffer[_UART_CMD_INDEX2_])
#define UART_CMD_MS_REGDATA  (g_UartCommand.Buffer[_UART_CMD_INDEX3_])

// kRead_MCU_XDATA, kWrite_MCU_XDATA
#define UART_CMD_MCU_IDX_H   (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
#define UART_CMD_MCU_IDX_L   (g_UartCommand.Buffer[_UART_CMD_INDEX2_])
#define UART_CMD_MCU_DATA    (g_UartCommand.Buffer[_UART_CMD_INDEX3_])

#define URCMD_MST_DLC_TEST_FORCE_PAUSE      0
#define URCMD_MST_DLC_TEST_FORCE_RUN        1
#define URCMD_MST_DLC_TEST_READ             2
#define URCMD_MST_DLC_TEST_WRITE_1          3
#define URCMD_MST_DLC_TEST_WRITE_2          4
#define URCMD_MST_DLC_TEST_REINIT           5
#define URCMD_MST_DLC_TEST_BOUNDARY_READ    6
#define URCMD_MST_DLC_TEST_BOUNDARY_WRITE   7

#if ((CHANNEL_SCAN_AUTO_TEST == 1) || (SFU_AUTO_TEST == 1))
// for uartExtDev_SCAN_TUNER
#define UART_SCAN_DATA1     (g_UartCommand.Buffer[_UART_CMD_INDEX4_])
#define UART_SCAN_DATA2     (g_UartCommand.Buffer[_UART_CMD_INDEX5_])
#define UART_SCAN_DATA3     (g_UartCommand.Buffer[_UART_CMD_INDEX6_])
#define UART_SCAN_DATA4     (g_UartCommand.Buffer[_UART_CMD_INDEX7_])
#define UART_SCAN_DATA5     (g_UartCommand.Buffer[_UART_CMD_INDEX8_])
#define UART_SCAN_DATA6     (g_UartCommand.Buffer[_UART_CMD_INDEX9_])
#define UART_SCAN_DATA7     (g_UartCommand.Buffer[_UART_CMD_INDEX10_])
#define UART_SCAN_DATA8     (g_UartCommand.Buffer[_UART_CMD_INDEX11_])

// for uartExtDev_AUDIO_DEBUG
#define UART_AUDIO_DATA1     (g_UartCommand.Buffer[_UART_CMD_INDEX4_])
#define UART_AUDIO_DATA2     (g_UartCommand.Buffer[_UART_CMD_INDEX5_])
#define UART_AUDIO_DATA3     (g_UartCommand.Buffer[_UART_CMD_INDEX6_])
#define UART_AUDIO_DATA4     (g_UartCommand.Buffer[_UART_CMD_INDEX7_])

#define UART_SCAN_CMD_SET_CH_CNT                0x00
#define UART_SCAN_CMD_SET_ANT                   0x01
#define UART_SCAN_CMD_SET_CABLE_SYSTEM          0x02
#define UART_SCAN_CMD_START                     0x03
#define UART_SCAN_CMD_END                       0x04
#define UART_SCAN_CMD_POLL                      0x05
#define UART_SCAN_CMD_READ_FOUND_CH_NUM         0x06
#define UART_SCAN_CMD_READ_SRV_INFO             0x07
#define UART_SCAN_CMD_READ_FOUND_SRV_NUM        0x08
#define UART_SCAN_CMD_SET_TUNER                 0x09
#define UART_SCAN_CMD_SET_DEMOD                 0x0A
#define UART_SCAN_CMD_SET_SPECTRUM              0x0B
#define UART_SCAN_CMD_SET_TUNE_TO_RFCH          0x0C
#define UART_SCAN_CMD_RETURN_TYPE               0x0D
#define UART_SCAN_CMD_READ_ONE_SRV_INFO         0x0E
#define UART_SCAN_CMD_READ_SRV_INFO2			0x0F
#define UART_SCAN_CMD_READ_ONE_SRV_INFO2		0x10
#define UART_SCAN_CMD_SET_PLUSCHANGE_ONE_CH		0x11
#define UART_SCAN_CMD_READ_MAINSTATE			0x12
#define UART_SCAN_CMD_SET_KEYVALUE				0x13

//for uartExtDev_AUDIO_DEBUG
#define UART_AUDIODBG_CMD_SET_BK9				0x00

#define SCAN_AUTOTEST_CMD_DUMP_CH_INFO          0x01
#define SCAN_AUTOTEST_CMD_DUMP_ONE_CH_INFO      0x02
#define SCAN_AUTOTEST_CMD_DUMP_CH_INFO2			0x04
#define SCAN_AUTOTEST_CMD_DUMP_ONE_CH_INFO2		0x08
#define SCAN_AUTOTEST_CMD_PLUSCHANGE_ONE_CH		0x10
#define SCAN_AUTOTEST_CMD_DUMP_MAINSTATE		0x20
#define SCAN_AUTOTEST_CMD_SETKEY				0x40
#define AUDIO_DEBUG_CMD_RWREG					0x80

typedef struct
{
    U16 u12ChNum:11;
    U16 f8Antenna:1;
    U16 u2CableSystem:2;
    U16 u2CableSystemSave:2;
    U16 u12ChFoundNum:11;
    U16 f8AntennaSave:1;
    U16 fScanTypeSave:1;
    U16 fCommand:1;             // 0: stop;     1: Start.
    U16 u2State:2;              // 0: Normal;   1: Scanning;    2. Stopped
    U16 u16SrvFoundNum;
} ScanAutoTestData;

typedef struct
{
	U8 u8RegStartAddr;
	U8 u8WriteData;
	U8 u8ReadBytes;
} ScanAutoTestAU;

#endif

#endif

#define UART_CH_ADD		0x00
#define UART_CH_DEL_PHY	0x01
#define UART_CH_DEL_VIR	0x02

extern char kbhit(void);

#undef INTERFACE
#endif /* __UART_H  */

⌨️ 快捷键说明

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