C55液晶扩展
0赞C55作为低功耗处理器,在便携式设备处理中应用比较广泛,但是由于其用途主要是用在数字处理方面,因而其外围接口比较简单,扩展比较麻烦,一般是作为协处理器使用。对外围用户接口的设计就一般交由其他处理器完成。这一节我主要是把C55作为一般的处理器使用,充分勇气EMIF接口扩展一TFT液晶显示屏。
此液晶屏是3.2寸真彩TFT触摸屏, 240*320像素, 26万色;采用8080 16位并行接口。引脚接口定义如下:

DB00-DB15是数据总线,和C5509的数据总线D0-D15直连,CS为片选信号,CE2连接,RS为命令数据控制信号与地址总线A1连接;WR和RD为读写信号,分别与AWE和ARE连接。片选地址是ioport *LCD_BASE=0x80000;
EMIF配置结构:
EMIF_Config Config_EMIF={
0x281,0xffff,
0x100c,0xffff,
0x00ff,0x013e,
0x0fff,0x00ff,
0x1105,0x0105,0x00ff,
0x110d,0x010d,
0x010d,0x00ff,
0x07ff,0x0fff,
0x07fff,0x03ff
}
SSD1289的配置程序如下:
void STM3210E_LCD_Init(void)
{
/* Start Initial Sequence ----------------------------------------------------*/
LCD_WriteReg(0x0007,0x0021);
// set R00h at 0001h (OSCEN=1)
LCD_WriteReg(0x0000,0x0001);
// set R07h at 0023h (GON=1,DTE=0,D[1:0]=11)
LCD_WriteReg(0x0007,0x0023);
// set R10h at 0000h (Exit sleep mode)
LCD_WriteReg(0x0010,0x0000);
// Wait 30ms
Delay(200);
// set R07h at 0033h (GON=1,DTE=1,D[1:0]=11)
LCD_WriteReg(0x0007,0x0033);
// Entry mode setting (R11h)
// R11H Entry mode
// vsmode DFM1 DFM0 TRANS OEDef WMode DMode1 DMode0 TY1 TY0 ID1 ID0 AM LG2 LG2 LG0
// 0 1 1 0 0 0 0 0 0 1 1 1 * 0 0 0
LCD_WriteReg(0x0011,0x6070);
// LCD driver AC setting (R02h)
LCD_WriteReg(0x0002,0x0600);
// power control 1
// DCT3 DCT2 DCT1 DCT0 BT2 BT1 BT0 0 DC3 DC2 DC1 DC0 AP2 AP1 AP0 0
// 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0
// DCT[3:0] fosc/4 BT[2:0] DC{3:0] fosc/4
LCD_WriteReg(0x0003,0xa8a4);//0xA8A4
LCD_WriteReg(0x000C,0x0000);
LCD_WriteReg(0x000D,0x080c);
// power control 4
// 0 0 VCOMG VDV4 VDV3 VDV2 VDV1 VDV0 0 0 0 0 0 0 0 0
// 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0
LCD_WriteReg(0x000E,0x2b00);
LCD_WriteReg(0x001E,0x00B0);
LCD_WriteReg(0x0001,0x2B3F);//驱动输出控制320*240 0x6B3F
LCD_WriteReg(0x0002,0x0600); /////
LCD_WriteReg(0x0010,0x0000);
LCD_WriteReg(0x0005,0x0000);
LCD_WriteReg(0x0006,0x0000);
LCD_WriteReg(0x0016,0xEF1C);
LCD_WriteReg(0x0017,0x0003);
LCD_WriteReg(0x0007,0x0233);//0x0233
LCD_WriteReg(0x000B,0x0000);
LCD_WriteReg(0x000F,0x0000);//扫描开始地址
LCD_WriteReg(0x0041,0x0000);
LCD_WriteReg(0x0042,0x0000);
LCD_WriteReg(0x0048,0x0000);
LCD_WriteReg(0x0049,0x013F);
LCD_WriteReg(0x004A,0x0000);
LCD_WriteReg(0x004B,0x0000);
LCD_WriteReg(0x0044,0xEF00);
LCD_WriteReg(0x0045,0x0000);
LCD_WriteReg(0x0046,0x013F);
LCD_WriteReg(0x0030,0x0707);
LCD_WriteReg(0x0031,0x0204);
LCD_WriteReg(0x0032,0x0204);
LCD_WriteReg(0x0033,0x0502);
LCD_WriteReg(0x0034,0x0507);
LCD_WriteReg(0x0035,0x0204);
LCD_WriteReg(0x0036,0x0204);
LCD_WriteReg(0x0037,0x0502);
LCD_WriteReg(0x003A,0x0302);
LCD_WriteReg(0x003B,0x0302);
LCD_WriteReg(0x0023,0x0000);
LCD_WriteReg(0x0024,0x0000);
LCD_WriteReg(0x0025,0x8000); // 65hz
LCD_WriteReg(0x004f,0); // 行首址0
LCD_WriteReg(0x004e,0); // 列首址0
LCD_Clear(0x0) ;
// LCD_DisplayOn();
// LCD_Clear(Red);
// LCD_DisplayOff();
}
