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

📄 lcd_if.h

📁 MMI层OBJ不能完全编译
💻 H
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
 *                   WIRELESS COMMUNICATION SYSTEM DEVELOPMENT
 *
 *             (C) 2002 Texas Instruments France. All rights reserved
 *
 *                          Author : Philippe MARTINEZ
 *
 *
 *  Important Note
 *  --------------
 *
 *  This S/W is a preliminary version. It contains information on a product 
 *  under development and is issued for evaluation purposes only. Features 
 *  characteristics, data and other information are subject to change.
 *
 *  The S/W is furnished under Non Disclosure Agreement and may be used or
 *  copied only in accordance with the terms of the agreement. It is an offence
 *  to copy the software in any way except as specifically set out in the 
 *  agreement. No part of this document may be reproduced or transmitted in any
 *  form or by any means, electronic or mechanical, including photocopying and
 *  recording, for any purpose without the express written permission of Texas
 *  Instruments Inc.
 *
 ******************************************************************************
 *
 *  FILE NAME: lcd_if.h
 *
 *
 *  PURPOSE:  Header file for the LCD Interface Driver.
 *
 *
 *  FILE REFERENCES:
 *
 *  Name                  IO      Description
 *  -------------         --      ---------------------------------------------
 *  
 *
 *
 *  EXTERNAL VARIABLES:
 *
 *  Source:
 *
 *  Name                  Type              IO   Description
 *  -------------         ---------------   --   ------------------------------
 *
 *
 *
 *  EXTERNAL REFERENCES:
 *
 *  Name                Description
 *  ------------------  -------------------------------------------------------
 *
 *
 *
 *  ABNORMAL TERMINATION CONDITIONS, ERROR AND WARNING MESSAGES:
 *  
 *
 *
 *  ASSUMPTION, CONSTRAINTS, RESTRICTIONS:
 *  
 *
 *
 *  NOTES:
 *  
 *
 *
 *  REQUIREMENTS/FUNCTIONAL SPECIFICATION REFERENCES:
 *
 *
 *
 *
 *  DEVELOPMENT HISTORY:
 *
 *  Date         Name(s)           Version  Description
 *  -----------  --------------    -------  -------------------------------------
 *  30-Oct-2002  Philippe MARINTEZ  0.0.1    First implementation
 *
 *  ALGORITHM: 
 *
 *
 *****************************************************************************/

#include <stdlib.h>

#include "sys_types.h"
#include "rvm/rvm_gen.h"		/* Generic RVM types and functions. */
#include "nan/board/nan_hw_functions.h"
#include "config/rv_swe.h"

#ifdef RVM_NAN_SWE
#define R2D_ISAMPLE_USE_MUXING 1
#endif

  /****************************************************************************
   *                            GENERAL CONSTANTS
   ***************************************************************************/
    #ifndef C_MAP_LCD_IF_BASE
      #define C_MAP_LCD_IF_BASE                0xFFFFA000L   // LCD registers
    #endif

   /* driver version */

   #define C_LCD_IF_DRIVER_VERSION ( 0x0001 )

   /* LCD Interface Tx FIFO size */

   #define C_LCD_IF_TX_FIFO_SIZE   ( 128 )

   /* infinite while loop constant */

   #define C_LCD_IF_INFINITE_LOOP  ( 1 )

  /****************************************************************************
   *                Definition of the LCD Interface registers
   ***************************************************************************/

  /* LCD IF CNTL_REG */

  #define C_LCD_IF_CNTL_REG  	( C_MAP_LCD_IF_BASE ) 		  

    #define C_LCD_IF_CNTL_REG_SOFT_NRST_POS	            ( 0 )
    #define C_LCD_IF_CNTL_REG_SOFT_NRST_MASK	        ( 0x0001 )
    #define C_LCD_IF_CNTL_REG_SOFT_NRST_INIT	        ( 0x1 )

    #define C_LCD_IF_CNTL_REG_CLOCK13_EN_POS	        ( 1 )
    #define C_LCD_IF_CNTL_REG_CLOCK13_EN_MASK	        ( 0x0002 )
    #define C_LCD_IF_CNTL_REG_CLOCK13_EN_INIT	        ( 0x1 )

    #define C_LCD_IF_CNTL_REG_TX_CLOCK_DIV_POS	        ( 2 )
    #define C_LCD_IF_CNTL_REG_TX_CLOCK_DIV_MASK	        ( 0x000C )
    #define C_LCD_IF_CNTL_REG_TX_CLOCK_DIV_INIT	        ( 0x0 )

    #define C_LCD_IF_CNTL_REG_RX_CLOCK_DIV_POS	        ( 4 )
    #define C_LCD_IF_CNTL_REG_RX_CLOCK_DIV_MASK	        ( 0x0030 )
    #define C_LCD_IF_CNTL_REG_RX_CLOCK_DIV_INIT	        ( 0x0 )

    #define C_LCD_IF_CNTL_REG_FIFO_EMPTY_IT_EN_POS	    ( 6 )
    #define C_LCD_IF_CNTL_REG_FIFO_EMPTY_IT_EN_MASK	    ( 0x0040 )
    #define C_LCD_IF_CNTL_REG_FIFO_EMPTY_IT_EN_INIT	    ( 0x0 )

    #define C_LCD_IF_CNTL_REG_LCD_READ_EVENT_IT_EN_POS	( 7 )
    #define C_LCD_IF_CNTL_REG_LCD_READ_EVENT_IT_EN_MASK	( 0x0080 )
    #define C_LCD_IF_CNTL_REG_LCD_READ_EVENT_IT_EN_INIT	( 0x0 )

    #define C_LCD_IF_CNTL_REG_DMA_EN_POS	            ( 8 )
    #define C_LCD_IF_CNTL_REG_DMA_EN_MASK	            ( 0x0100 )
    #define C_LCD_IF_CNTL_REG_DMA_EN_INIT	            ( 0x0 )

    #define C_LCD_IF_CNTL_REG_MODE_POS	                ( 9 )
    #define C_LCD_IF_CNTL_REG_MODE_MASK	                ( 0x0200 )
    #define C_LCD_IF_CNTL_REG_MODE_INIT	                ( 0x0 )

    #define C_LCD_IF_CNTL_REG_FLIP_BYTES_POS	        ( 10 )
    #define C_LCD_IF_CNTL_REG_FLIP_BYTES_MASK	        ( 0x0400 )
    #define C_LCD_IF_CNTL_REG_FLIP_BYTES_INIT	        ( 0x0 )

    #define C_LCD_IF_CNTL_REG_SUSPEND_EN_POS	        ( 11 )
    #define C_LCD_IF_CNTL_REG_SUSPEND_EN_MASK	        ( 0x0800 )
    #define C_LCD_IF_CNTL_REG_SUSPEND_EN_INIT	        ( 0x1 )

    #define C_LCD_IF_CNTL_REG_MIN_FRAME_SIZE_POS	( 12 )
    #define C_LCD_IF_CNTL_REG_MIN_FRAME_SIZE_MASK	( 0x3000 )
    #define C_LCD_IF_CNTL_REG_MIN_FRAME_SIZE_INIT	( 0x3 )

    #define C_LCD_IF_CNTL_REG_N_DUMMY_POS	        ( 14 )
    #define C_LCD_IF_CNTL_REG_N_DUMMY_MASK	        ( 0xC000 )
    #define C_LCD_IF_CNTL_REG_N_DUMMY_INIT	        ( 0x1 )


  /* LCD IF LCD_CNTL_REG */

  #define C_LCD_IF_LCD_CNTL_REG ( C_MAP_LCD_IF_BASE + 0x02 )

    #define C_LCD_IF_LCD_CNTL_REG_LCD_NCS0_POS	        ( 0 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_NCS0_MASK	        ( 0x0001 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_NCS0_INIT	        ( 0x1 )

    #define C_LCD_IF_LCD_CNTL_REG_LCD_RS_POS	        ( 1 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_RS_MASK	        ( 0x0002 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_RS_INIT	        ( 0x0 )

    #define C_LCD_IF_LCD_CNTL_REG_LCD_START_READ_POS	( 2 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_START_READ_MASK	( 0x0004 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_START_READ_INIT	( 0x0 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_START_READ_EN	( 0x1 )

    #define C_LCD_IF_LCD_CNTL_REG_LCD_NRESET_POS	( 3 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_NRESET_MASK	( 0x0008 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_NRESET_INIT	( 0x0 )

    #define C_LCD_IF_LCD_CNTL_REG_LCD_NCS1_POS	        ( 4 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_NCS1_MASK	        ( 0x0010 )
    #define C_LCD_IF_LCD_CNTL_REG_LCD_NCS1_INIT	        ( 0x1 )

  /* LCD IF LCD_IF_STS_REG */  

  #define C_LCD_IF_STS_REG 	    ( C_MAP_LCD_IF_BASE + 0x04 )  

    #define C_LCD_IF_STS_REG_FIFO_EMPTY_STATUS_POS	    ( 0 )
    #define C_LCD_IF_STS_REG_FIFO_EMPTY_STATUS_MASK	    ( 0x0001 )

    #define C_LCD_IF_STS_REG_FIFO_FULL_STATUS_POS	    ( 1 )
    #define C_LCD_IF_STS_REG_FIFO_FULL_STATUS_MASK	    ( 0x0002 )

    #define C_LCD_IF_STS_REG_LCD_READ_EVENT_STATUS_POS	( 2 )
    #define C_LCD_IF_STS_REG_LCD_READ_EVENT_STATUS_MASK	( 0x0004 )

  /* LCD IF WR_FIFO */
  #define C_LCD_IF_WR_FIFO 	    ( C_MAP_LCD_IF_BASE + 0x06 ) 

    #define C_LCD_IF_WR_FIFO_DATA_TX_LSB_POS	        ( 0 )
    #define C_LCD_IF_WR_FIFO_DATA_TX_LSB_MASK	        ( 0x00FF )

    #define C_LCD_IF_WR_FIFO_DATA_TX_MSB_POS	        ( 8 )
    #define C_LCD_IF_WR_FIFO_DATA_TX_MSB_MASK	        ( 0xFF00 )
   
  /* LCD IF RD_REG */
  #define C_LCD_IF_RD_REG       ( C_MAP_LCD_IF_BASE + 0x08 )  

    #define C_LCD_IF_RD_REG_DATA_RX_LSB_POS	            ( 0 )
    #define C_LCD_IF_RD_REG_DATA_RX_LSB_MASK	        ( 0x00FF )

    #define C_LCD_IF_RD_REG_DATA_RX_MSB_POS	            ( 8 )
    #define C_LCD_IF_RD_REG_DATA_RX_MSB_MASK	        ( 0xFF00 )

  /* LCD IF PIN_CFG_REG */
#define C_LCD_IF_PIN_CFG_REG_BASE (0xFFFF0000)
    #define C_LCD_IF_PIN_CFG_DATA0 ( C_LCD_IF_PIN_CFG_REG_BASE + 0xF15A )
    #define C_LCD_IF_PIN_CFG_DATA1 ( C_LCD_IF_PIN_CFG_REG_BASE + 0xF15C )
    #define C_LCD_IF_PIN_CFG_DATA2 ( C_LCD_IF_PIN_CFG_REG_BASE + 0xF15E )
    #define C_LCD_IF_PIN_CFG_DATA3 ( C_LCD_IF_PIN_CFG_REG_BASE + 0xF160 )
    #define C_LCD_IF_PIN_CFG_DATA4 ( C_LCD_IF_PIN_CFG_REG_BASE + 0xF162 )
    #define C_LCD_IF_PIN_CFG_DATA5 ( C_LCD_IF_PIN_CFG_REG_BASE + 0xF164 )
    #define C_LCD_IF_PIN_CFG_DATA6 ( C_LCD_IF_PIN_CFG_REG_BASE + 0xF166 )
    #define C_LCD_IF_PIN_CFG_DATA7 ( C_LCD_IF_PIN_CFG_REG_BASE + 0xF168 )

    #define C_LCD_IF_PIN_CFG_POS       ( 0 )
    #define C_LCD_IF_PIN_CFG_MASK    ( ~( (1 << 0) | ( 1 << 1) ) )

#define CONF_LCD_CAM_NAND 0xFFFEF01E

  /****************************************************************************
   *                            MACRO DEFINITION
   ***************************************************************************/

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_WRITE_IN_FIFO
   *      Write d_data into WR_FIFO register.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  d_data           16 boits word data (SYS_UWORD16)
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

   #define F_LCD_IF_WRITE_IN_FIFO( d_data )	*(volatile SYS_UWORD16* ) C_LCD_IF_WR_FIFO = d_data

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_TX_FIFO_EMPTY_STATUS
   *      Return the LCD Interface TX FIFO Empty status.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None.
   *
   * RETURN VALUE: SYS_UWORD8 : Tx FIFO empty status (0 or 1)
   *
   ***************************************************************************/

   #define F_LCD_IF_TX_FIFO_EMPTY_STATUS \
    ( SYS_UWORD8 )((* (volatile SYS_UWORD16 *) C_LCD_IF_STS_REG) & C_LCD_IF_STS_REG_FIFO_EMPTY_STATUS_MASK)

  /****************************************************************************
   *                          TYPE AND STRUCTURE DEFINITION
   ***************************************************************************/

  /* type definition for LCD Clock divider */

  typedef  SYS_UWORD8 E_LCD_IF_CLOCK_DIVIDER;

  #define  C_LCD_IF_DIV8 ( 0 )
  #define  C_LCD_IF_DIV4 ( 1 )
  #define  C_LCD_IF_DIV2 ( 2 )
  #define  C_LCD_IF_DIV1 ( 3 )

  /* type definition for LCD interface mode */

  typedef  SYS_UWORD8 E_LCD_IF_MODE;

  #define  C_LCD_IF_68000_MODE ( 0 )
  #define  C_LCD_IF_8086_MODE  ( 1 )

  /* type definition for LCD Interface flip bytes */

  typedef SYS_UWORD8 E_LCD_IF_FLIP;

  #define C_LCD_IF_MSB_FIRST   ( 0 )
  #define C_LCD_IF_LSB_FIRST   ( 1 )

  /* type definition for Instruction Selection line level */

  typedef  SYS_UWORD8 E_LCD_IF_ISLL;

  #define  C_LCD_IF_LOW  ( 0 )
  #define  C_LCD_IF_HIGH ( 1 )

  /* type definition for Minimum frame size */

  typedef  SYS_UWORD8 E_LCD_IF_FRAME_SZ;

  #define  C_LCD_IF_16_WORDS  ( 0 )
  #define  C_LCD_IF_32_WORDS  ( 1 )
  #define  C_LCD_IF_64_WORDS  ( 2 )
  #define  C_LCD_IF_128_WORDS ( 3 )

  /* type definition for Read dummy cycle */

  typedef  SYS_UWORD8  E_LCD_IF_DUMMY_CYCLE;

  #define  C_LCD_IF_0_CYCLE  ( 0 )
  #define  C_LCD_IF_1_CYCLE  ( 1 )
  #define  C_LCD_IF_2_CYCLES ( 2 )

  /* Initialization sub structure for Transmit */

  typedef struct {
        E_LCD_IF_CLOCK_DIVIDER d_clock_divider;
  } T_LCD_IF_INIT_TX;

  /* Initialization sub structure for Receive */

  typedef struct {
        E_LCD_IF_CLOCK_DIVIDER d_clock_divider;
        E_LCD_IF_DUMMY_CYCLE   d_dummy_cycles;
  } T_LCD_IF_INIT_RX;

  /* LCD Interface Driver Initialization structure */

  typedef struct {
        E_LCD_IF_MODE    d_mode;
        E_LCD_IF_FLIP    b_flip_bytes;
        E_LCD_IF_ISLL    d_isll ;
        T_LCD_IF_INIT_TX d_tx_init;
        T_LCD_IF_INIT_RX d_rx_init;
   } T_LCD_IF_INIT;

  /* type definition for the LCD Chip select */

  typedef  SYS_UWORD8 E_LCD_IF_CS;

  #define  C_LCD_IF_CS0             ( 0 )
  #define  C_LCD_IF_CS1             ( 1 )
  #define  C_LCD_IF_CS_NOT_SELECTED ( 2 )

  /* type definition for the LCD data type */

  typedef  SYS_UWORD8 E_LCD_IF_DATA_TYPE;

  #define  C_LCD_IF_INSTRUCTION ( 0 )
  #define  C_LCD_IF_DISPLAY     ( 1 )
 
  /* type definition for the current LCD driver internal state */

  typedef  SYS_UWORD8 E_LCD_IF_STATUS;

  #define  C_LCD_IF_IDLE	    ( 0 ) 
  #define  C_LCD_IF_RUNNING	    ( 1 ) 

⌨️ 快捷键说明

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