提交 f3bb2aa8 编写于 作者: wuyangyong's avatar wuyangyong

fix ili9325 driver

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@439 bbd45198-f89e-11dd-88c7-29a3b14d5316
上级 b3d4ac3b
#ifndef ILI9320_H_INCLUDED
#define ILI9320_H_INCLUDED
extern void ili9320_Initializtion(void);
extern void ili9320_SetCursor(u16 x,u16 y);
extern void ili9320_Clear(u16 Color);
extern u16 ili9320_BGR2RGB(u16 c);
extern void LCD_WriteRAM_Prepare(void);
extern void LCD_WriteRAM(u16 RGB_Code);
extern u16 LCD_ReadRAM(void);
extern void LCD_WriteReg(u8 LCD_Reg,u16 LCD_RegValue);
#endif
#ifndef ILI9325_H_INCLUDED
#define ILI9325_H_INCLUDED
extern void ili9325_Initializtion(void);
extern void ili9325_SetCursor(u16 x,u16 y);
extern void ili9325_Clear(u16 Color);
extern unsigned short ili9325_BGR2RGB(unsigned short c);
extern void LCD_WriteRAM_Prepare(void);
extern void LCD_WriteRAM(u16 RGB_Code);
extern unsigned short ili9325_ReadGRAM(unsigned short x,unsigned short y);
extern void LCD_WriteReg(u8 LCD_Reg,u16 LCD_RegValue);
typedef struct
{
vu16 LCD_REG; /* 0x00 */
vu16 reserve1; /* 0x02 */
vu16 reserve2; /* 0x04 */
vu16 reserve3; /* 0x06 */
vu16 LCD_RAM; /* 0x08 */
} LCD_ili9325_TypeDef;
/* LCD is connected to the FSMC_Bank1_NOR/SRAM2 and NE2 is used as ship select signal */
#define LCD_ili9325_BASE ((u32)(0x60000000 | 0x04000000))
#define LCD ((LCD_ili9325_TypeDef *) LCD_ili9325_BASE)
#endif
......@@ -11,7 +11,7 @@
#endif
#if (LCD_VERSION == 2)
#include "ili9325/ili9320.h"
#include "ili9325/ili9325.h"
#endif
rt_err_t rt_hw_lcd_init(void);
......@@ -312,7 +312,7 @@ void rt_hw_lcd_set_pixel(rtgui_color_t *c, rt_base_t x, rt_base_t y)
/* get color pixel */
p = rtgui_color_to_565p(*c);
ili9320_SetCursor(x,y);
ili9325_SetCursor(x,y);
LCD_WriteRAM_Prepare();
LCD_WriteRAM(p);
......@@ -322,16 +322,7 @@ void rt_hw_lcd_set_pixel(rtgui_color_t *c, rt_base_t x, rt_base_t y)
void rt_hw_lcd_get_pixel(rtgui_color_t *c, rt_base_t x, rt_base_t y)
{
unsigned short p;
ili9320_SetCursor(x,y);
//if (DeviceCode==0x7783)
//{
// p = (LCD_ReadRAM());
//}
//else
//{
p = (ili9320_BGR2RGB(LCD_ReadRAM()));
//}
p = ili9325_BGR2RGB( ili9325_ReadGRAM(x,y) );
*c = rtgui_color_from_565p(p);
}
......@@ -344,9 +335,9 @@ void rt_hw_lcd_draw_hline(rtgui_color_t *c, rt_base_t x1, rt_base_t x2, rt_base_
p = rtgui_color_to_565p(*c);
/* [5:4]-ID~ID0 [3]-AM-1垂直-0水平 */
LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(0<<4) | (0<<3) );
LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(1<<4) | (0<<3) );
ili9320_SetCursor(x1, y);
ili9325_SetCursor(x1, y);
LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
while (x1 < x2)
{
......@@ -368,7 +359,7 @@ void rt_hw_lcd_draw_vline(rtgui_color_t *c, rt_base_t x, rt_base_t y1, rt_base_t
/* [5:4]-ID~ID0 [3]-AM-1垂直-0水平 */
LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(0<<4) | (1<<3) );
ili9320_SetCursor(x, y1);
ili9325_SetCursor(x, y1);
LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
while (y1 < y2)
{
......@@ -388,9 +379,9 @@ void rt_hw_lcd_draw_raw_hline(rt_uint8_t *pixels, rt_base_t x1, rt_base_t x2, rt
ptr = (rt_uint16_t*) pixels;
/* [5:4]-ID~ID0 [3]-AM-1垂直-0水平 */
//LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(0<<4) | (0<<3) );
LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(1<<4) | (0<<3) );
ili9320_SetCursor(x1, y);
ili9325_SetCursor(x1, y);
LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
while (x1 < x2)
{
......@@ -398,7 +389,7 @@ void rt_hw_lcd_draw_raw_hline(rt_uint8_t *pixels, rt_base_t x1, rt_base_t x2, rt
LCD_WriteRAM( *ptr );
x1 ++;
ptr ++;
ili9320_SetCursor(x1, y);
ili9325_SetCursor(x1, y);
}
}
......@@ -413,7 +404,43 @@ rt_err_t rt_hw_lcd_init(void)
GPIO_Init(GPIOF,&GPIO_InitStructure);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
ili9320_Initializtion();
ili9325_Initializtion();
/* LCD GRAM TEST */
{
unsigned short temp;
unsigned int test_x;
unsigned int test_y;
rt_kprintf("\r\nLCD GRAM test....");
/* write */
temp=0;
for(test_y=0; test_y<320; test_y++)
{
for(test_x=0; test_x<240; test_x++)
{
ili9325_SetCursor(test_x,test_y);
LCD->LCD_REG = 34;
LCD->LCD_RAM = temp++;
}
}
/* read */
temp=0;
for(test_y=0; test_y<320; test_y++)
{
for(test_x=0; test_x<240; test_x++)
{
if( ili9325_BGR2RGB( ili9325_ReadGRAM(test_x,test_y) ) != temp++)
{
rt_kprintf(" LCD GRAM ERR!!");
while(1);
}
}
}
rt_kprintf(" TEST PASS!\r\n");
}/* LCD GRAM TEST */
#ifndef DRIVER_TEST
/* add lcd driver into graphic driver */
......@@ -439,7 +466,7 @@ FINSH_FUNCTION_EXPORT(vline, draw a vline);
void cls()
{
ili9320_Clear(0xF800);
ili9325_Clear(0xF800);
}
FINSH_FUNCTION_EXPORT(cls, clear screen);
#endif
此差异已折叠。
......@@ -41,12 +41,12 @@ File 1,1,<.\device_info.c><device_info.c>
File 1,1,<.\player_ui.c><player_ui.c>
File 1,1,<.\player_bg.c><player_bg.c>
File 1,1,<.\play_list.c><play_list.c>
File 1,1,<.\ili9325\ili9320.c><ili9320.c>
File 1,1,<.\codec.c><codec.c>
File 1,1,<.\spi_flash.c><spi_flash.c>
File 1,1,<.\remote.c><remote.c>
File 1,1,<.\picture.c><picture.c>
File 1,1,<.\station_list.c><station_list.c>
File 1,1,<.\ili9325\ili9325.c><ili9325.c>
File 2,1,<..\..\src\clock.c><clock.c>
File 2,1,<..\..\src\idle.c><idle.c>
File 2,1,<..\..\src\ipc.c><ipc.c>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册