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

📄 r2d_task_init_i_phillips.c

📁 MMI层OBJ不能完全编译
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
+-----------------------------------------------------------------------------
|  Project :  ETM-Lite
|  Modul   :  LCD
+-----------------------------------------------------------------------------
|  Copyright 2002 Texas Instruments Berlin, AG
|                 All rights reserved.
|
|                 This file is confidential and a trade secret of Texas
|                 Instruments Berlin, AG
|                 The receipt of or possession of this file does not convey
|                 any rights to reproduce or disclose its contents or to
|                 manufacture, use, or sell anything it may describe, in
|                 whole, or in part, without the specific written consent of
|                 Texas Instruments Berlin, AG.
+-----------------------------------------------------------------------------
|  Purpose :  
|
+-----------------------------------------------------------------------------
*/

#define PHILIPS_LCD 1
#include "r2d/lcds/i_sample/r2d_task_init_i.h"
#include "r2d/lcds/i_sample/r2d_tfd_lcd.h"
#include "r2d/r2d_i.h"
#include "r2d/r2d_independance_layer.h"
#include "r2d/r2d_env.h"
#include "r2d/lcds/i_sample/r2d_lcd_dma.h"
#include "dma/dma_api.h"
#include "dma/dma_message.h"
#include "r2d_board_isample_i.h"
#include "r2d/r2d_config.h"

#include <stdio.h>
#include <stdlib.h>
#include "lcd.h"

int lcd_text_char_width;
int lcd_text_char_height;
const unsigned char *lcd_text_font;
unsigned char *lcd_text_buffer;
int lcd_text_x_size, lcd_text_y_size; // Size of the text window
int lcd_text_xpos, lcd_text_ypos;
int lcd_text_underline;
int lcd_text_auto_refresh;
unsigned char lcd_text_scroll_lines;
unsigned int lcd_text_front_color, lcd_text_back_color;

// unsigned char lcd_text_buf[176 * 220 * 3]; // (X * Y * RGB) - buffer for text screen
//unsigned char lcd_text_buf[176 * 220]; // (X * Y) - buffer for text screen


T_CKCTL_DIV LcdClockDiv = CLK_DIV_BY_8 ; 


 void r2d_nop_delay(UWORD32 ms)
{
		unsigned short a;
		while (ms-- > 0) for (a=0;a<2000;a++) asm(" nop"); // Increased from 1000 to 2000 (JP, TI-DK)
}


void write_lcd_index_data(int index, int data)
{
	LCD_WriteSetInstruction(index);
    	r2d_nop_delay(1);
	LCD_WriteSetDisplay(data);
}

void gate_driver_serial_transfer(int index)
{
	LCD_WriteSetInstruction(0x0a); // Gate driver serial transfer
	r2d_nop_delay(1);	
	LCD_WriteSetDisplay(0x0100 | index);
	r2d_nop_delay(20);
}

void read_lcd_id()
{
	LCD_WriteSetInstruction(0);
	r2d_nop_delay(1);	
       LCD_DataSetType_M(LCD_DISPLAY); // select data not index
}
void  LCD_enable_lcd_mux()
{
	(*(volatile SYS_UWORD16*) CONF_LCD_CAM_NAND)|=0x7;
}


void init_lcd_ctrl_registers(void)
{

    LCD_enable_lcd_mux();
    /* Initialise LCD interface */
    LCD_ResetInterface(); /* Reset LCD interface */
    LCD_Clock13MHzEnable();   /* Enable clock of the interface */
    LCD_TXClockDiv(1);      /* Division factor to 1 (13 MHz) */
    LCD_FifoEmptyItDisable(); /* Disable all IT */
    LCD_ReadEventItDisable();
    LCD_DMADisable();     /* Disable DMA */
#if (VIRTIO==0)	
    LCD_8086InterfaceTypeSelected();    /* Select 8086 like LCD */
#else
	LCD_6800InterfaceTypeSelected();
#endif
    LCD_WriteMSBFirst();        /* Write MSB first */
    LCD_TxNotSuspended();       /* Transmission not suspended */
    LCD_0DummyWriteCycle();       /* 0 dummy write cycle */
}

//******************************************************************************
void r2d_refresh_task_init()
{
        UWORD32  c,i;
//        UWORD16 *data;
//        int a, b;
    
        LCD_ResetController();
        r2d_nop_delay(20);
        LCD_EndResetController();
        LCD_SelectController0_M;         // Select controller 0
        read_lcd_id();
        write_lcd_index_data(0x00, 0x0001); // start oscilation
        r2d_nop_delay(20);
        write_lcd_index_data(0x01, 0x011b); // Driver output control
        write_lcd_index_data(0x02, 0x0700); // Driving waveform
        write_lcd_index_data(0x03, 0x1030); // Entry mode
        write_lcd_index_data(0x04, 0x0000); // Compare register
        write_lcd_index_data(0x05, 0x0000); // Compare register
        write_lcd_index_data(0x07, 0x0000); // Display control 1 (OFF)
        write_lcd_index_data(0x08, 0x0503); // Display control 2
        write_lcd_index_data(0x0a, 0x0000); // Gate driver
        write_lcd_index_data(0x0b, 0x400c); // Frame freq
        write_lcd_index_data(0x0c, 0x0000); // External if control
        write_lcd_index_data(0x0d, 0x0700); // LTPS I/F
    
        write_lcd_index_data(0x40, 0x0000); // Gate scan position
        write_lcd_index_data(0x41, 0x0000); // Vertical scroll
        write_lcd_index_data(0x42, 0xdb00); // 1st screen driving pos
        write_lcd_index_data(0x43, 0x0000); // 2nd screen driving pos
        write_lcd_index_data(0x44, 0xaf00); // Horiz RAM address
        write_lcd_index_data(0x45, 0xdb00); // Vert RAM address
    
        write_lcd_index_data(0x21, 0x0000); // RAM address set
        write_lcd_index_data(0x23, 0x0000); // RAM write mask
        write_lcd_index_data(0x24, 0x0000); // RAM write mask
        
        write_lcd_index_data(0x30, 0x0000); // Gamma
        write_lcd_index_data(0x31, 0x0501); // Gamma
        write_lcd_index_data(0x32, 0x0307); // Gamma
        write_lcd_index_data(0x33, 0x0400); // Gamma
        write_lcd_index_data(0x34, 0x0004); // Gamma
        write_lcd_index_data(0x35, 0x0504); // Gamma
        write_lcd_index_data(0x36, 0x0605); // Gamma
        write_lcd_index_data(0x37, 0x0004); // Gamma
    
    
    // Power ON sequence:
        write_lcd_index_data(0x11, 0x8805); // Power control 2
        write_lcd_index_data(0x12, 0x0004); // Power control 3
        write_lcd_index_data(0x13, 0x0601); // Power control 4
        write_lcd_index_data(0x14, 0x161f); // Power control 5
        gate_driver_serial_transfer(1);
        gate_driver_serial_transfer(2);
        write_lcd_index_data(0x10, 0x2064); // Power control 1
        gate_driver_serial_transfer(0);
        write_lcd_index_data(0x14, 0x361f); // Power control 5
        gate_driver_serial_transfer(0);
        write_lcd_index_data(0x01, 0x011b); // Driver output control
        write_lcd_index_data(0x40, 0x0000); // Gate scan position
        gate_driver_serial_transfer(6);
        write_lcd_index_data(0x02, 0x0700); // Driving waveform
        gate_driver_serial_transfer(7);
        write_lcd_index_data(0x13, 0x0611); // Power control 4
        gate_driver_serial_transfer(1);
        
        write_lcd_index_data(0x21, 0x0000); // RAM address set
        LCD_WriteSetInstruction(0x22);
        LCD_DataTypeSelection(LCD_DISPLAY); 
        for (c=0;c < 100;c++)
            for (i=0;i<22;i++)
            {
                // Red, 0x7C00. Blue, 0x001F. Yollow: 0xF800, Cyan: 0x001F 
 			  LCD_Write(0x8F00);    
              LCD_Write(0x8F00);    
              LCD_Write(0x8F00);    
              LCD_Write(0x8F00);    
              LCD_Write(0x8F00);    
              LCD_Write(0x8F00);    
              LCD_Write(0x8F00);    	  
            }   

        for (;c < 200;c++)
            for (i=0;i<22;i++)
            {
                // Red, 0x7C00. Blue, 0x001F. Yollow: 0xF800, Cyan: 0x001F 
              LCD_Write(0x700E);  
              LCD_Write(0x700E);  
              LCD_Write(0x700E);  
              LCD_Write(0x700E);  			  
              LCD_Write(0x700E);  
              LCD_Write(0x700E);  
              LCD_Write(0x700E);  
              LCD_Write(0x700E);  			  
            }   

        for (;c < 220;c++)
            for (i=0;i<22;i++)
            {
                // Red, 0x7C00. Blue, 0x001F. Yollow: 0xF800, Cyan: 0x001F 
              LCD_Write(0xF1);    
              LCD_Write(0xF1);
              LCD_Write(0xF1);    // BLUE
              LCD_Write(0xF1);
              LCD_Write(0xF1);
              LCD_Write(0xF1);
              LCD_Write(0xF1);
              LCD_Write(0xF1);
            }   


  // Turn ON sequence
        write_lcd_index_data(0x07, 0x0005); // Display control 1
        r2d_nop_delay(20);
        write_lcd_index_data(0x07, 0x0025); // Display control 1
        r2d_nop_delay(20);
        gate_driver_serial_transfer(0);
        write_lcd_index_data(0x07, 0x0027); // Display control 1
        r2d_nop_delay(20);
        write_lcd_index_data(0x07, 0x0037); // Display control 1
        r2d_nop_delay(20);
        

⌨️ 快捷键说明

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