📄 lcd_if.h
字号:
/* 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 + -