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

📄 lcdc.c

📁 有关于USB的一些主机端驱动
💻 C
字号:
//-------------------------------------------------------------------------------
//          TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION  
//   Property of Texas Instruments
//   For Unrestricted Internal Use Only
//   Unauthorized reprofuction and/or distribution is strictly prohibited.
//   This product is protected under copyright law and trade secret law
//   as an unpublished work
//   Created 2000,  (C) Copyright 2000 Texas Instruments. All rights reserved
//
//------------------------------------------------------------------------------
#include "omap30.h"

//-------------------------------------------------------------------------------
//
//  FUNCTIONS
//
//-------------------------------------------------------------------------------

//-------------------------------------------------------------------------------
//NAME		: LCD_ReadControlRegister
//DESCRIPTION	: Read LCD control register
//PARAMETERS	: None
//RETURN VALUE	: Returns LCD control register value
//-------------------------------------------------------------------------------
UWORD32 LCD_ReadControlRegister(void)
{
return(LCDC_LCD_CTRL_REG); 
}

//-------------------------------------------------------------------------------
//NAME		: LCD_ControllerEnable
//DESCRIPTION	: Enable LCD controller
//PARAMETERS	: None
//RETURN VALUE	: None
//-------------------------------------------------------------------------------
void  LCD_ControllerEnable(void)
{
SetField(LCDC_LCD_CTRL_REG,LCDC_LCD_CTRL_REG_LCD_ENABLE,LCD_Enable);
}

//-------------------------------------------------------------------------------
//NAME		: LCD_ControllerDisable
//DESCRIPTION	: Enable LCD controller
//PARAMETERS	: None
//RETURN VALUE	: None
//-------------------------------------------------------------------------------
void  LCD_ControllerDisable(void)
{
SetField(LCDC_LCD_CTRL_REG,LCDC_LCD_CTRL_REG_LCD_ENABLE,LCD_Disable);
}

//-------------------------------------------------------------------------------
//NAME		: LCD_SetControlRegister
//DESCRIPTION	: Set LCD control register
//PARAMETERS	: All LCD control register bit fields
//RETURN VALUE	: None
//-------------------------------------------------------------------------------
void  LCD_SetControlRegister(LCD_ENABLE_T EnableLcd,
			     LCD_BW_T bw,
			     LCD_INT_DONEMASK_T FrameInterruptMask,
			     LCD_INT_LOADMASK_T LoadInterruptMask,
			     LCD_TFT_T ActiveMode,
			     LCD_BE_T EndianMode,
			     LCD_M8B_T Mono8BitMode,
			     UWORD8 FifoDmaRequestDelay,
			     LOADING_MODE_T LoadingMode,
			     LCD_WCE_T WinCEMode)
{
// Read control register
UWORD32 value = LCDC_LCD_CTRL_REG; 
// clear all used bits
value = 0;
value &= LCDC_LCD_CTRL_REG_MASK;

SetField(value,LCDC_LCD_CTRL_REG_LCD_ENABLE,EnableLcd);
SetField(value,LCDC_LCD_CTRL_REG_LCDBW,bw);
SetField(value,LCDC_LCD_CTRL_REG_LCDDONEMASK,FrameInterruptMask);
SetField(value,LCDC_LCD_CTRL_REG_LOADMASK,LoadInterruptMask);
SetField(value,LCDC_LCD_CTRL_REG_LCD_TFT,ActiveMode);
SetField(value,LCDC_LCD_CTRL_REG_LCDBE,EndianMode);
SetField(value,LCDC_LCD_CTRL_REG_M8B,Mono8BitMode);
SetField(value,LCDC_LCD_CTRL_REG_FDD,FifoDmaRequestDelay);
SetField(value,LCDC_LCD_CTRL_REG_PLM,LoadingMode);
SetField(value,LCDC_LCD_CTRL_REG_WCE,WinCEMode);

// write control register
LCDC_LCD_CTRL_REG = value;
}

//-------------------------------------------------------------------------------
//NAME		: LCD_ReadStatusRegister
//DESCRIPTION	: Read LCD status register
//PARAMETERS	: All LCD status register bit fields
//RETURN VALUE	: None
//-------------------------------------------------------------------------------
void  LCD_ReadStatusRegister(BOOL * const FrameDone,
			     BOOL * const SynchroLost,
			     BOOL * const ACBiasCount,
			     BOOL * const FifoUnderFlow,
			     BOOL * const PaletteLoaded)
{
// Read status register
UWORD32 value = LCDC_LCD_STATUS; 
*FrameDone =  GetField(value,LCDC_LCD_STATUS_DONE);
*SynchroLost =  GetField(value,LCDC_LCD_STATUS_SYNC);
*ACBiasCount =  GetField(value,LCDC_LCD_STATUS_ABC);
*FifoUnderFlow = GetField(value,LCDC_LCD_STATUS_FUF);
*PaletteLoaded = GetField(value,LCDC_LCD_STATUS_PL);
}


//-------------------------------------------------------------------------------
//NAME		: LCD_SetSubPanelRegister
//DESCRIPTION	: Set LCD sub panel register
//PARAMETERS	: DPD, LPPT, HOLS and SPEN LCD sub panel register bit fields
//RETURN VALUE	: None
//-------------------------------------------------------------------------------
void  LCD_SetSubPanelRegister(UWORD16 DefaultPixelData,
			      UWORD16 LinePerPanelThreshold,
			      SUBPANEL_HOLS_T SubPanelHols,
			      SUBPANEL_ENABLE_T SubPanelEnable)
{
// Read sub Panel register
UWORD32 value = LCDC_LCD_SUB_PANEL; 
// clear all used bits
value &= LCDC_LCD_SUB_PANEL_MASK;

// set corresponding parts of register
// DefaultPixelData coded on 12 bits
SetField(value,LCDC_LCD_SUB_PANEL_DPD,(DefaultPixelData & 0xFFF));
// 10 bits are used
SetField(value,LCDC_LCD_SUB_PANEL_LPPT,(LinePerPanelThreshold & 0x3FF));
SetField(value,LCDC_LCD_SUB_PANEL_HOLS,SubPanelHols);
SetField(value,LCDC_LCD_SUB_PANEL_SPEN,SubPanelEnable);

// write sub Panel register
LCDC_LCD_SUB_PANEL = value;
}


//-------------------------------------------------------------------------------
//NAME		: LCD_SetLcdTiming0Register
//DESCRIPTION	: Set LCD Timing0 register
//PARAMETERS	: All LCD Timing0 register bit fields
//RETURN VALUE	: None
//-------------------------------------------------------------------------------
void  LCD_SetLcdTiming0Register(UWORD16 PixelPerLine,
				UWORD8 HorizontalSynchroPulseWidth,
				UWORD8 HorizontalFrontPorsh,
				UWORD8 HorizontalBackPorsh)
{
// Read  register
UWORD32 value = LCDC_LCD_TIMING_0; 
// clear all used bits
value &= LCDC_LCD_TIMING_0_MASK;

// 4 lsb bits are used
SetField(value,LCDC_LCD_TIMING_0_PPL,(PixelPerLine & 0x3F0));
// 6 bits are used
SetField(value,LCDC_LCD_TIMING_0_HSW,(HorizontalSynchroPulseWidth & 0x3F));
SetField(value,LCDC_LCD_TIMING_0_HFP,HorizontalFrontPorsh);
SetField(value,LCDC_LCD_TIMING_0_HBP,HorizontalBackPorsh);
// write register
LCDC_LCD_TIMING_0 = value;
}

//-------------------------------------------------------------------------------
//NAME		: LCD_SetLcdTiming1Register
//DESCRIPTION	: Set LCD Timing1 register
//PARAMETERS	: All LCD Timing1 register bit fields
//RETURN VALUE	: None
//-------------------------------------------------------------------------------
void  LCD_SetLcdTiming1Register(UWORD16 LinePerPanel,
				UWORD8 VerticalSynchroPulseWidth,
				UWORD8 VerticalFrontPorsh,
				UWORD8 VerticalBackPorsh)
{
// Read  register
UWORD32 value = LCDC_LCD_TIMING_1; 
// clear all used bits
value &= LCDC_LCD_TIMING_1_MASK;

// 4 lsb bits are used
SetField(value,LCDC_LCD_TIMING_0_PPL,(LinePerPanel & 0x3FF));
// 6 bits are used
SetField(value,LCDC_LCD_TIMING_0_HSW,(VerticalSynchroPulseWidth & 0x3F));
SetField(value,LCDC_LCD_TIMING_0_HFP,VerticalFrontPorsh);
SetField(value,LCDC_LCD_TIMING_0_HBP,VerticalBackPorsh);
// write register
LCDC_LCD_TIMING_1 = value;
}

//-------------------------------------------------------------------------------
//NAME		: LCD_SetLcdTiming2Register
//DESCRIPTION	: Set LCD Timing2 register
//PARAMETERS	: All LCD Timing2 register bit fields
//RETURN VALUE	:  None
//-------------------------------------------------------------------------------
void  LCD_SetLcdTiming2Register(UWORD8 PixelClockDivisor,
				UWORD8 AcPinFrequency,
				UWORD8 AcBiasPinTransitionPerInterrupt,
				BOOL InvertVsync ,
				BOOL InvertHsync ,
				BOOL InvertPixelClock,
				BOOL InvertOutputEnable)

{
// Read  register
UWORD32 value = LCDC_LCD_TIMING_2; 
// set corresponding parts of register
value &= LCDC_LCD_TIMING_0_MASK;

SetField(value,LCDC_LCD_TIMING_2_PCD,PixelClockDivisor);
SetField(value,LCDC_LCD_TIMING_2_ACB,AcPinFrequency);
SetField(value,LCDC_LCD_TIMING_2_ACBI,AcBiasPinTransitionPerInterrupt);
SetField(value,LCDC_LCD_TIMING_2_IVS,InvertVsync);
SetField(value,LCDC_LCD_TIMING_2_IHS,InvertHsync);
SetField(value,LCDC_LCD_TIMING_2_IPC,InvertPixelClock);
SetField(value,LCDC_LCD_TIMING_2_IEO,InvertOutputEnable);

// write register
LCDC_LCD_TIMING_2 = value;
}

⌨️ 快捷键说明

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