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

📄 lcd_if.h

📁 MMI层OBJ不能完全编译
💻 H
📖 第 1 页 / 共 2 页
字号:

  /* type definition for the callback function return parameter */

  typedef  SYS_UWORD8 E_LCD_IF_CALLBACK_RET;

  #define  C_LCD_IF_CALLBACK_OK 	( 0 )
  #define  C_LCD_IF_CALLBACK_DISABLE_IT	( 1 )

  /* Type definition for the ON / OFF levels */

  typedef  SYS_UWORD8 E_LCD_IF_RESET;

  #define  C_LCD_IF_ON 	( 0 )
  #define  C_LCD_IF_OFF	( 1 )

  /* Type definition for the ON / OFF levels */

  typedef  SYS_UWORD8 E_LCD_IF_CLOCK;

  #define  C_LCD_IF_CLOCK_ON 	( 1 )
  #define  C_LCD_IF_CLOCK_OFF	( 0 )

  /* type definition for callback function */

  typedef E_LCD_IF_CALLBACK_RET (*T_LCD_IF_CALLBACK)( void );

  /* type definition for the LCD IF API function return parameter */

  typedef  SYS_UWORD8 E_LCD_IF_RET;

  #define  C_LCD_IF_RET_OK    ( 0 )
  #define  C_LCD_IF_RET_ERR   ( 1 )

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

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_WAIT_LCD_IF_RESET
   *      Loop that wait for the read status.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

   #define F_LCD_IF_WAIT_LCD_IF_RESET \
	 while( ((*(volatile SYS_UWORD16*) C_LCD_IF_CNTL_REG) & C_LCD_IF_CNTL_REG_SOFT_NRST_MASK) \
	                                                     != C_LCD_IF_CNTL_REG_SOFT_NRST_MASK )
	                                             
  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_WAIT_TX_FIFO_EMPTY
   *      Loop that wait for the TX FIFO EMPTY status set to 1.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

   #define F_LCD_IF_WAIT_TX_FIFO_EMPTY \
	 while( ((*(volatile SYS_UWORD16*) C_LCD_IF_STS_REG) & C_LCD_IF_STS_REG_FIFO_EMPTY_STATUS_MASK) \
	                                                    != C_LCD_IF_STS_REG_FIFO_EMPTY_STATUS_MASK )
	                                                     

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_WAIT_READ_STATUS
   *      Loop that wait for the Read status set to 1.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

   #define F_LCD_IF_WAIT_READ_STATUS \
	 while( ((*(volatile SYS_UWORD16*) C_LCD_IF_STS_REG) & C_LCD_IF_STS_REG_LCD_READ_EVENT_STATUS_MASK) \
	                                             != C_LCD_IF_STS_REG_LCD_READ_EVENT_STATUS_MASK )

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_ENABLE_TX_FIFO_EMPTY_IT
   *      Enables the LCD Interface Tx FIFO Empty Interrupt.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

   #define F_LCD_IF_ENABLE_TX_FIFO_EMPTY_IT \
	 ((*(volatile SYS_UWORD16*) C_LCD_IF_CNTL_REG) |= C_LCD_IF_CNTL_REG_FIFO_EMPTY_IT_EN_MASK )
	                                             

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_DISABLE_TX_FIFO_EMPTY_IT
   *      Disables the LCD Interface Tx FIFO Empty Interrupt.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

   #define F_LCD_IF_DISABLE_TX_FIFO_EMPTY_IT \
	  ((*(volatile SYS_UWORD16*) C_LCD_IF_CNTL_REG) &= ~C_LCD_IF_CNTL_REG_FIFO_EMPTY_IT_EN_MASK )

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_ENABLE_DMA
   *      Enables the LCD Interface DMA capabilities.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

   #define F_LCD_IF_ENABLE_DMA \
	  ((*(volatile SYS_UWORD16*) C_LCD_IF_CNTL_REG) |= C_LCD_IF_CNTL_REG_DMA_EN_MASK )

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_IF_DISABLE_DMA
   *      Disable the LCD Interface DMA capabilities.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

   #define F_LCD_IF_DISABLE_DMA \
	  ((*(volatile SYS_UWORD16*) C_LCD_IF_CNTL_REG) &= ~C_LCD_IF_CNTL_REG_DMA_EN_MASK )
	                                             

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_CAM_NANDFLASH_AQUIRE_BUS
   *     Locks the mutex used to serialise the access to the multiplexed bus.
   *     The bus is shared between camera, lcd and nand flash.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/
#ifdef R2D_ISAMPLE_USE_MUXING
   #define F_LCD_CAM_NANDFLASH_AQUIRE_BUS conf_acquire_pins(MUX_LCD);
#else
	#define F_LCD_CAM_NANDFLASH_AQUIRE_BUS
#endif

  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_CAM_NANDFLASH_RELEASE_BUS
   *  	Make sure that lcd bus' are tristated, then
   *     unlocks the mutex used to serialise the access to the multiplexed bus.
   *     The bus is shared between camera, lcd and nand flash.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/
#ifdef R2D_ISAMPLE_USE_MUXING

   #define F_LCD_CAM_NANDFLASH_RELEASE_BUS conf_release_pins(MUX_LCD);

#else
	#define F_LCD_CAM_NANDFLASH_RELEASE_BUS
#endif

		
  /****************************************************************************
   *
   *  MACRO NAME: F_LCD_SET_PIN_CONFIG
   *     Connect the bus pins to LCD controller.
   *     The bus is shared between camera, lcd and nand flash.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Description
   *  ------------   ----------------------------------------------------------
   *  None
   *
   * RETURN VALUE: None
   *
   ***************************************************************************/

//#ifdef R2D_ISAMPLE_USE_MUXING
#if 0

   #define  F_LCD_SET_PIN_CONFIG \
	do { \
		(*(volatile SYS_UWORD16*) C_LCD_IF_PIN_CFG_DATA0) &= C_LCD_IF_PIN_CFG_MASK; \
		(*(volatile SYS_UWORD16*) C_LCD_IF_PIN_CFG_DATA1) &= C_LCD_IF_PIN_CFG_MASK; \
		(*(volatile SYS_UWORD16*) C_LCD_IF_PIN_CFG_DATA2) &= C_LCD_IF_PIN_CFG_MASK; \
		(*(volatile SYS_UWORD16*) C_LCD_IF_PIN_CFG_DATA3) &= C_LCD_IF_PIN_CFG_MASK; \
		(*(volatile SYS_UWORD16*) C_LCD_IF_PIN_CFG_DATA4) &= C_LCD_IF_PIN_CFG_MASK; \
		(*(volatile SYS_UWORD16*) C_LCD_IF_PIN_CFG_DATA5) &= C_LCD_IF_PIN_CFG_MASK; \
		(*(volatile SYS_UWORD16*) C_LCD_IF_PIN_CFG_DATA6) &= C_LCD_IF_PIN_CFG_MASK; \
		(*(volatile SYS_UWORD16*) C_LCD_IF_PIN_CFG_DATA7) &= C_LCD_IF_PIN_CFG_MASK; \
	} while (0);
#else
	#define F_LCD_SET_PIN_CONFIG
#endif
		
		


	/****************************************************************************
   *                         INTERNAL TYPE AND STRUCTURES
   ***************************************************************************/

  /* type definition for the Data Access */

  typedef  SYS_UWORD8 E_LCD_IF_DATA_ACCESS;

  #define  C_LCD_IF_READ    ( 1 ) 
  #define  C_LCD_IF_WRITE   ( 0 ) 

  /* type definition for the current LCD driver internal state */

  typedef  SYS_UWORD8 E_LCD_IF_STATE;

  #define  C_LCD_IF_IDLE    ( 0 ) 
  #define  C_LCD_IF_IT_CUST ( 1 ) 
  #define  C_LCD_IF_IT_BUFF ( 2 )

  /* type definition Transmit sub structure */
 
  typedef struct {
        E_LCD_IF_CLOCK_DIVIDER d_clock_divider;
        T_LCD_IF_CALLBACK      p_callback;
        SYS_UWORD16            *p_buffer;
        SYS_UWORD32            d_buffer_size;
  } T_LCD_IF_TX;

  /* type definition Receive sub structure */

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

  /* type definition LCD Interface Driver Chip select 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_TX      d_tx;
        T_LCD_IF_RX      d_rx;
        SYS_UWORD16      d_cntl_reg;
        SYS_UWORD16      d_lcd_cntl_reg;
  } T_LCD_IF_CS_INIT;

  /* type definition LCD Interface Driver Internal structure */

  #define C_LCD_IF_CS_NUMBER  (2)

  typedef struct {
       T_LCD_IF_CS_INIT d_cs_struct[C_LCD_IF_CS_NUMBER];
       E_LCD_IF_CS      d_current_cs;
       E_LCD_IF_STATE   d_interrupt_state;
  } T_LCD_IF_INTERNAL;

  /****************************************************************************
   *                         GLOBAL VARIABLES REFERENCE
   ***************************************************************************/


  /****************************************************************************
   *                            PROTOTYPE DEFINITION
   ***************************************************************************/

  /*
   *  16-BIS functions
   */

  extern void f_lcd_if_init( E_LCD_IF_CS   d_cs, T_LCD_IF_INIT *p_init );

  extern void f_lcd_if_reset( void );

  extern void f_lcd_if_reset_lcd_controller( E_LCD_IF_CS     d_cs,
                                             E_LCD_IF_RESET d_reset );

  extern void f_lcd_if_clock( E_LCD_IF_CLOCK d_clock_switch );

  extern void f_lcd_if_poll_write( E_LCD_IF_CS        d_cs,
                                   SYS_UWORD16        *p_data,
                                   SYS_UWORD32        d_size,
                                   E_LCD_IF_DATA_TYPE d_type );

  extern SYS_UWORD16 f_lcd_if_poll_read( E_LCD_IF_CS        d_cs,
                                         E_LCD_IF_DATA_TYPE d_type );

  extern E_LCD_IF_RET f_lcd_if_it_write_cust( E_LCD_IF_CS        d_cs,
                                              E_LCD_IF_DATA_TYPE d_type,
                                              T_LCD_IF_CALLBACK  pf_callback_tx );

  extern E_LCD_IF_RET f_lcd_if_it_write( E_LCD_IF_CS        d_cs,
                                         SYS_UWORD16        *p_buffer,
                                         SYS_UWORD32        d_size,
                                         E_LCD_IF_DATA_TYPE d_type,
                                         T_LCD_IF_CALLBACK  pf_callback_sts );

  extern void f_lcd_if_dma_enable( E_LCD_IF_CS        d_cs,
                                   E_LCD_IF_FRAME_SZ  d_min_frame_sz,
                                   E_LCD_IF_DATA_TYPE d_type ); 

  extern E_LCD_IF_RET f_lcd_if_dma_disable( E_LCD_IF_CS         d_cs,             
                                            T_LCD_IF_CALLBACK   pf_callback_sts );

  extern SYS_UWORD16 f_lcd_if_get_version( void );

  /*
   *  32-BIS functions
   */

  extern void f_lcd_if_it_handler( void );


  extern void f_lcd_if_initialization( void );

⌨️ 快捷键说明

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