Beispiel #1
0
void ili9320_vline(int ys, int ye, int x, int c)
{

    switch(lcd_dev.id)
    {
    case 0x9320:
        write_reg(0x03,(0<<5)|(0<<4)|(1<<3)|(1<<12));
        write_reg(0x0020, x);
        write_reg(0x0021, ys);
        WR_CMD(0x0022);
        while(ys < ye)
        {
            WR_DATA(c);
            ys++;
        }
        // write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12));
        break;
    case 0x8989:
        write_reg(0x11,(0<<5)|(0<<4)|(1<<3));
        write_reg(0x004e, x);
        write_reg(0x004f, ys);
        WR_CMD(0x0022);
        while(ys < ye)
        {
            WR_DATA(c);
            ys++;
        }
        // write_reg(0x11,(1<<5)|(1<<4)|(0<<3));
        break;
    default:
        break;
    }
}
Beispiel #2
0
void ili9320_hline(int xs, int xe, int y, int c)
{
    switch(lcd_dev.id)
    {
    case 0x9320:
        write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12));
        write_reg(0x0020, xs);
        write_reg(0x0021, y);
        WR_CMD(0x0022);
        while(xs < xe)
        {
            WR_DATA(c);
            xs++;
        }
        //  write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12));
        break;
    case 0x8989:
        write_reg(0x11,(1<<5)|(1<<4)|(0<<3));
        write_reg(0x004e, xs);
        write_reg(0x004f, y);
        WR_CMD(0x0022);
        while(xs < xe)
        {
            WR_DATA(c);
            xs++;
        }
        write_reg(0x11,(1<<5)|(1<<4)|(0<<3));
        break;
    default:
        break;
    }

}
Beispiel #3
0
void GUI_DrawPixel(int color, int x, int y)
{
    switch(lcd_dev.id)
    {
    case 0x9320:
    case 0x8989:
        write_reg(lcd_dev.cmd_setx, x);
        write_reg(lcd_dev.cmd_sety, y);
        WR_CMD(lcd_dev.cmd_gram);
        WR_DATA(color);
        break;
    case 0x9341:
        WR_CMD(lcd_dev.cmd_setx);
        WR_DATA(x>>8);
        WR_DATA(x&0XFF);
        WR_CMD(lcd_dev.cmd_sety);
        WR_DATA(y>>8);
        WR_DATA(y&0XFF);
        WR_CMD(lcd_dev.cmd_gram);
        WR_DATA(color);
        break;
    default:
        break;
    }

}
Beispiel #4
0
void ili9320_set_window(int x, int y, int xlen, int ylen)
{
    switch(lcd_dev.id)
    {
    case 0x9341:
        WR_CMD(lcd_dev.cmd_setx);
        WR_DATA(x>>8);
        WR_DATA(x&0XFF);
        WR_DATA(xlen>>8);
        WR_DATA(xlen&0XFF);
        WR_CMD(lcd_dev.cmd_sety);
        WR_DATA(y>>8);
        WR_DATA(y&0XFF);
        WR_DATA(ylen>>8);
        WR_DATA(ylen&0XFF);
        break;
    case 0x9320:
        write_reg(0x0020, x);
        write_reg(0x0021, y);
        write_reg(0x0050, x);
        write_reg(0x0052, y);
        write_reg(0x0051, x + xlen - 1);
        write_reg(0x0053, y + ylen - 1);
        break;
    case 0x8989:
        write_reg(0x004e,x);
        write_reg(0x004f,y);
        write_reg(0x0044, (x|((x + xlen - 1)<<8)));
        write_reg(0x0045, y);
        write_reg(0x0046, y + ylen - 1);
        break;
    default:
        break;
    }
}
Beispiel #5
0
int ili9320_read_pixel(int x, int y)
{
    int value;
    write_reg(0x0020, x);
    write_reg(0x0021, y);
    WR_CMD(0x0022);
    value = RD_DATA();
    WR_CMD(0x0022);
    value = RD_DATA();
    return LCD_BGR2RGB(value);
}
Beispiel #6
0
/*******************************************************************************
* Function Name  : RD_AD
* Description    : 读取ADC值
* Input          : None
* Output         : None
* Return         : ADS7843返回二字节数据
* Attention		 : None
*******************************************************************************/
static int RD_AD(void)  
{ 
  unsigned short buf,temp; 

  temp = WR_CMD(0x00);
  buf = temp<<8; 
  DelayUS(1); 
  temp = WR_CMD(0x00);;
  buf |= temp; 
  buf>>=3; 
  buf&=0xfff; 
  return buf; 
} 
Beispiel #7
0
void ili9320_write_gram(uint16_t *buf, int len)
{
    WR_CMD(0x0022);
    while(len--)
    {
        WR_DATA(*buf++);
    }
}
//====================================================================================
int Read_Y(void) 
{ 
    int i;
    WR_CMD(CHY);
    //while(TP_BUSY);
    Delayus(10);
    i=RD_AD();
    return i;    
}
Beispiel #9
0
void ili9320_clear(int c)
{
    int i;
    ili9320_set_window(0, 0, 50, 100);
    WR_CMD(lcd_dev.cmd_gram);
    for(i = 0; i < (LCD_X_MAX * LCD_Y_MAX); i++)
    {
        WR_DATA(c);
    }
}
Beispiel #10
0
/*******************************************************************************
* Function Name  : Read_X
* Description    : 读取ADS7843通道X+的ADC值 
* Input          : None
* Output         : None
* Return         : ADS7843返回通道X+的ADC值
* Attention		 : None
*******************************************************************************/
int Read_X(void)  
{  
  int i; 
  TP_CS(0); 	//CS作用有待考虑。。。。写指令读数据时候需将CS拉低?
  DelayUS(1); 
  WR_CMD(CHX); 	 /* 通道Y+的选择控制字 */
  DelayUS(1); 
  i=RD_AD(); 
  TP_CS(1); 
  return i;    
} 
Beispiel #11
0
/******************************************************
* 函数名:Read_Y
* 描述  :通过SPI方式读取 2046所获得的触摸 通道Y+ AD转换值
* 输入  : 无
* 输出  :Y+通道AD转换值
* 举例  :无
* 注意  :无
*********************************************************/    
int Read_Y(void)  
{  
    int i; 
    CS_2046(0); 
    DelayUS(1); 
    WR_CMD(CHY); 
    DelayUS(1); 
    i=Read_touch_ad(); 
    CS_2046(1); 
    return i;     
} 
Beispiel #12
0
/*******************************************************************************
* Function Name  : Read_X
* Description    : 读取ADS7843通道X+的ADC值 
* Input          : None
* Output         : None
* Return         : ADS7843返回通道X+的ADC值
* Attention		 : None
*******************************************************************************/
int Read_X(void)  
{  
  int i; 
  TP_CS_LOW(); 
  DelayUS(1); 
  WR_CMD(CHX); 
  DelayUS(1); 
  i=RD_AD(); 
  TP_CS_HIGH(); 
  return i;    
} 
Beispiel #13
0
/*******************************************************************************
* Function Name  : Read_Y
* Description    : ¶ÁÈ¡ADS7843ͨµÀY+µÄADCÖµ
* Input          : None
* Output         : None
* Return         : ADS7843·µ»ØͨµÀY+µÄADCÖµ
* Attention		 : None
*******************************************************************************/
int Read_Y(void)
{
  int i;
  TP_CS(0);
  DelayUS(1);
  WR_CMD(CHY);
  DelayUS(1);
  i=RD_AD();
  TP_CS(1);
  return i;
}
Beispiel #14
0
uint16_t Read_Y(void)  
  {  
    uint16_t curr_Y; 
    
    reset_CS(); 
    Delay(1); 
    WR_CMD(CHY); 
    Delay(1); 
    curr_Y=RD_AD(); 
    set_CS(); 
    return curr_Y;     
  } 
Beispiel #15
0
uint16_t Read_X(void)  
  {  
    uint16_t curr_X;
    
    reset_CS(); 
    Delay(1); 
    WR_CMD(CHX); 
    Delay(1); 
    curr_X=RD_AD(); 
    set_CS(); 
    return curr_X;    
  } 
Beispiel #16
0
void ili9320_write_pixel(int x, int y, int c)
{
    switch(lcd_dev.id)
    {
    case 0x9320:
        write_reg(0x0020, x);
        write_reg(0x0021, y);
        WR_CMD(0x0022);
        WR_DATA(c);
        break;
    case 0x8989:
        write_reg(0x004e,x);
        write_reg(0x004f,y);
        WR_CMD(0x0022);
        WR_DATA(c);
        break;
    default:
        break;
    }

}
Beispiel #17
0
//====================================================================================
int Read_Y(void)
{ 
    int i;
   // T_CS=0;
    WR_CMD(CHY);
   // T_CLK=1;
   // T_CLK=0;
    //while(TP_BUSY);
    //DelayUs(10);//changed from 5
    i=RD_AD();
   // T_CS=1;
    return i;    
}
Beispiel #18
0
/*******************************************************************************
 * Function Name  : Read_X
 * Description    : Read ADS7843 ADC value of X + channel
 * Input          : None
 * Output         : None
 * Return         : return X + channel ADC value
 * Attention		 : None
 *******************************************************************************/
static int Read_X(void)
{

	TP_CS(0);
	DelayUS(1);

	WR_CMD(CHX);
	DelayUS(1);

	int i = RD_AD();

	TP_CS(1);
	return i;
}
Beispiel #19
0
uint16_t ili9320_get_id(void)
{
    uint32_t id;
    id = read_reg(0x00);

    /* try ILI9341 */
    if(id < 0XFF || id == 0XFFFF || id == 0X9300)
    {
        WR_CMD(0XD3);
        id = RD_DATA();//dummy read
        id = RD_DATA();
        id = RD_DATA();
        id <<= 8;
        id |= RD_DATA();
    }
    return id;
}
Beispiel #20
0
u16 Read_XY(u8 xy) 
{ 
 u16 i, j;
 u16 buf[ReadLoop];
 uint32 sum;
 u16 val;
    
    for(i=0; i<ReadLoop; i++)
    {
       WR_CMD(xy);
       //while(TP_BUSY);
       Delayus(5);
       buf[i]=RD_AD();
       
       //sum += buf[i];
    }
    
    //排序
    for(i=0; i<ReadLoop-1; i++)
    {
       for(j=i+1; j<ReadLoop; j++)
       {
          if(buf[i]>buf[j])
          {
             val=buf[i];
             buf[i]=buf[j];
             buf[j]=val;
          }
       }
    }
    
    sum=0;
    for(i=LOSS_DATA; i<ReadLoop-1-LOSS_DATA; i++)
       sum += buf[i];
    val=sum/(ReadLoop-2*LOSS_DATA);
    
    return (val);    
}
Beispiel #21
0
static void write_reg(uint16_t addr, uint16_t val)
{
    WR_CMD(addr);
    WR_DATA(val);
}
Beispiel #22
0
int ili9320_init(void)
{
    int ret;
    ret = 1;
    uint32_t gpio_instance;
    /* ??flexbus???? ?????? ?????????? */
    /* Flexbus Init */
    SIM->SCGC5 |= (SIM_SCGC5_PORTA_MASK | SIM_SCGC5_PORTB_MASK | SIM_SCGC5_PORTC_MASK | SIM_SCGC5_PORTD_MASK | SIM_SCGC5_PORTE_MASK);
    /*control signals */
    PORTB->PCR[19] = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;          // FB_OE
    PORTD->PCR[1]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;          // CS0
    PORTA->PCR[26] = PORT_PCR_MUX(6)|PORT_PCR_DSE_MASK;          // A27
    PORTC->PCR[16] = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;          // FB_BE_23_16

    /*
    PORTB->PCR[18] = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD15
    PORTC->PCR[0]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD14
    PORTC->PCR[1]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD13
    PORTC->PCR[2]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD12
    PORTC->PCR[4]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD11
    PORTC->PCR[5]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD10
    PORTC->PCR[6]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD9
    PORTC->PCR[7]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD8
    PORTC->PCR[8]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD7
    PORTC->PCR[9]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD6
    PORTC->PCR[10] = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD5
    PORTD->PCR[2]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD4
    PORTD->PCR[3]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD3
    PORTD->PCR[4]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD2
    PORTD->PCR[5]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD1
    PORTD->PCR[6]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD0
    */

    PORTB->PCR[17]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD16
    PORTB->PCR[16]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD17
    PORTB->PCR[11]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD18
    PORTB->PCR[10]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD19
    PORTB->PCR[9]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD20
    PORTB->PCR[8]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD21
    PORTB->PCR[7]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD22
    PORTB->PCR[6]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD23
    PORTC->PCR[15]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD24
    PORTC->PCR[14]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD25
    PORTC->PCR[13]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD26
    PORTC->PCR[12]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD27
    PORTB->PCR[23]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD28
    PORTB->PCR[22]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD29
    PORTB->PCR[21]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD30
    PORTB->PCR[20]  = PORT_PCR_MUX(5)|PORT_PCR_DSE_MASK;           //  FB_AD31

    FLEXBUS_InitTypeDef FLEXBUS_InitStruct;
    FLEXBUS_InitStruct.ADSpaceMask = 0x800;
    FLEXBUS_InitStruct.autoAckMode = kFLEXBUS_AutoAckEnable;
    FLEXBUS_InitStruct.CSn = kFLEXBUS_CS0;
    FLEXBUS_InitStruct.dataAlignMode = kFLEXBUS_DataLeftAligned;
    FLEXBUS_InitStruct.dataWidth = kFLEXBUS_PortSize_16Bit;
    FLEXBUS_InitStruct.baseAddress = ILI9320_BASE;
    FLEXBUS_InitStruct.ByteEnableMode = kFLEXBUS_BE_AssertedWrite;
    FLEXBUS_InitStruct.div = 1;
    FLEXBUS_Init(&FLEXBUS_InitStruct);

    FLEXBUS_PortMuxConfig(kFLEXBUS_CSPMCR_Group3, kFLEXBUS_CSPMCR_GROUP3_BE_23_16);

    /* advanced config */
    FLEXBUS_AdvancedConfigTypeDef config;
    config.kFLEXBUS_brustWriteEnable = false;
    config.kFLEXBUS_brustReadEnable = false;
    config.kFLEXBUS_EXTS = true;
    config.kFLEXBUS_ASET = 2;
    config.kFLEXBUS_RDAH = 2;
    config.kFLEXBUS_WRAH = 2;
    config.kFLEXBUS_WS = 6;
    FLEXBUS_AdvancedConfig(FLEXBUS_InitStruct.CSn, &config);

    /* Back light */
    gpio_instance = GPIO_QuickInit(HW_GPIOC, 3, kGPIO_Mode_OPP);
    GPIO_WriteBit(gpio_instance, 3, 1);
    /* reset */
    gpio_instance = GPIO_QuickInit(HW_GPIOC, 19, kGPIO_Mode_OPP);
    GPIO_WriteBit(gpio_instance, 19, 0);
    DelayMs(5);
    GPIO_WriteBit(gpio_instance, 19, 1);
    DelayMs(5);

    lcd_dev.id = ili9320_get_id();
    switch(lcd_dev.id)
    {
    case 0x9341:
        lcd_dev.cmd_setx = 0x2A;
        lcd_dev.cmd_sety = 0x2B;
        lcd_dev.cmd_gram = 0x2C;

        WR_CMD(PWCTLB);
        WR_DATA(0x00);
        WR_DATA(0x81);
        WR_DATA(0x30);
        WR_CMD(PWONSCTL);
        WR_DATA(0x64);
        WR_DATA(0x03);
        WR_DATA(0x12);
        WR_DATA(0x81);
        WR_CMD(DTIMCTLA);
        WR_DATA(0x85);
        WR_DATA(0x10);
        WR_DATA(0x78);
        WR_CMD(PWCTLA);
        WR_DATA(0x39);
        WR_DATA(0x2C);
        WR_DATA(0x00);
        WR_DATA(0x34);
        WR_DATA(0x02);
        WR_CMD(PRCTL);
        WR_DATA(0x20);
        WR_CMD(DTIMCTLB);
        WR_DATA(0x00);
        WR_DATA(0x00);
        WR_CMD(FRMCTR1);
        WR_DATA(0x00);
        WR_DATA(0x1B);
        WR_CMD(DISCTRL);
        WR_DATA(0x0A);
        WR_DATA(0xA2);
        WR_CMD(PWCTRL1);
        WR_DATA(0x35);
        WR_CMD(PWCTRL2);
        WR_DATA(0x11);
        WR_CMD(VMCTRL1);
        WR_DATA(0x45);
        WR_DATA(0x45);
        WR_CMD(VMCTRL2);
        WR_DATA(0xA2);
        WR_CMD(EN3G);
        WR_DATA(0x00);
        WR_CMD(GAMSET);
        WR_DATA(0x01);
        WR_CMD(PGAMCTRL);
        WR_DATA(0x0F);
        WR_DATA(0x26);
        WR_DATA(0x24);
        WR_DATA(0x0B);
        WR_DATA(0x0E);
        WR_DATA(0x09);
        WR_DATA(0x54);
        WR_DATA(0xA8);
        WR_DATA(0x46);
        WR_DATA(0x0C);
        WR_DATA(0x17);
        WR_DATA(0x09);
        WR_DATA(0x0F);
        WR_DATA(0x07);
        WR_DATA(0x00);
        WR_CMD(NGAMCTRL);
        WR_DATA(0x00);
        WR_DATA(0x19);
        WR_DATA(0x1B);
        WR_DATA(0x04);
        WR_DATA(0x10);
        WR_DATA(0x07);
        WR_DATA(0x2A);
        WR_DATA(0x47);
        WR_DATA(0x39);
        WR_DATA(0x03);
        WR_DATA(0x06);
        WR_DATA(0x06);
        WR_DATA(0x30);
        WR_DATA(0x38);
        WR_DATA(0x0F);
        WR_CMD(MADCTL);
        WR_DATA(0x08);
        WR_CMD(CASET);
        WR_DATA(0x00);
        WR_DATA(0x00);
        WR_DATA(0x00);
        WR_DATA(0xEF);
        WR_CMD(PASET);
        WR_DATA(0x00);
        WR_DATA(0x00);
        WR_DATA(0x01);
        WR_DATA(0x3F);
        WR_CMD(PIXSET);
        WR_DATA(0x05);
        WR_CMD(SLPOUT);
        DelayMs(50);
        WR_CMD(DISPON);
        break;
    case 0x9320:
        lcd_dev.cmd_setx = 0x20;
        lcd_dev.cmd_sety = 0x21;
        lcd_dev.cmd_gram = 0x22;

        write_reg(0xe5,0x8000);  // Set the internal vcore voltage
        write_reg(0x00,0x0001);  // start OSC
        write_reg(0x2b,0x0010);  //Set the frame rate as 80 when the internal resistor is used for oscillator circuit
        write_reg(0x01,0x0100);  //s720  to  s1 ; G1 to G320
        write_reg(0x02,0x0700);  //set the line inversion
        //WR_CMD(0x03,0x1018);  //65536 colors
        write_reg(0x03,0x1030);
        //??
#ifdef LCD_USE_HORIZONTAL
        write_reg(0x03,(0<<5)|(0<<4)|(1<<3)|(1<<12));
#else
        write_reg(0x03,(1<<5)|(1<<4)|(0<<3)|(1<<12));
#endif

        write_reg(0x04,0x0000);
        write_reg(0x08,0x0202);
        write_reg(0x09,0x0000);
        write_reg(0x0a,0x0000);
        write_reg(0x0c,0x0000);
        write_reg(0x0d,0x0000);
        write_reg(0x0f,0x0000);
        write_reg(0x50,0x0000);
        write_reg(0x51,0x00ef);
        write_reg(0x52,0x0000);
        write_reg(0x53,0x013f);
        write_reg(0x60,0x2700);
        write_reg(0x61,0x0001);
        write_reg(0x6a,0x0000);
        write_reg(0x80,0x0000);
        write_reg(0x81,0x0000);
        write_reg(0x82,0x0000);
        write_reg(0x83,0x0000);
        write_reg(0x84,0x0000);
        write_reg(0x85,0x0000);
        write_reg(0x90,0x0010);
        write_reg(0x92,0x0000);
        write_reg(0x93,0x0003);
        write_reg(0x95,0x0110);
        write_reg(0x97,0x0000);
        write_reg(0x98,0x0000);

        write_reg(0x10,0x0000);
        write_reg(0x11,0x0000);
        write_reg(0x12,0x0000);
        write_reg(0x13,0x0000);
        DelayMs(5);
        write_reg(0x10,0x17b0);
        write_reg(0x11,0x0004);
        ;
        write_reg(0x12,0x013e);
        ;
        write_reg(0x13,0x1f00);
        write_reg(0x29,0x000f);
        ;
        write_reg(0x20,0x0000);
        write_reg(0x21,0x0000);

        write_reg(0x30,0x0204);
        write_reg(0x31,0x0001);
        write_reg(0x32,0x0000);
        write_reg(0x35,0x0206);
        write_reg(0x36,0x0600);
        write_reg(0x37,0x0500);
        write_reg(0x38,0x0505);
        write_reg(0x39,0x0407);
        write_reg(0x3c,0x0500);
        write_reg(0x3d,0x0503);
        write_reg(0x07,0x0173);
        ret = 0;
        break;
    case 0x8989:
        lcd_dev.cmd_setx =0x4e;
        lcd_dev.cmd_sety =0x4f;
        lcd_dev.cmd_gram =0x22;

        write_reg(0x0000,0x0001);
        write_reg(0x0003,0xA8A4);
        write_reg(0x000C,0x0000);
        write_reg(0x000D,0x080C);
        write_reg(0x000E,0x2B00);
        write_reg(0x001E,0x00B0);
        write_reg(0x0001,0x2B3F);
        write_reg(0x0002,0x0600);
        write_reg(0x0010,0x0000);
        write_reg(0x0011,0x6070);
        write_reg(0x0005,0x0000);
        write_reg(0x0006,0x0000);
        write_reg(0x0016,0xEF1C);
        write_reg(0x0017,0x0003);
        write_reg(0x0007,0x0233);
        write_reg(0x000B,0x0000);
        write_reg(0x000F,0x0000);
        write_reg(0x0041,0x0000);
        write_reg(0x0042,0x0000);
        write_reg(0x0048,0x0000);
        write_reg(0x0049,0x013F);
        write_reg(0x004A,0x0000);
        write_reg(0x004B,0x0000);
        write_reg(0x0044,0xEF00);
        write_reg(0x0045,0x0000);
        write_reg(0x0046,0x013F);
        write_reg(0x0030,0x0707);
        write_reg(0x0031,0x0204);
        write_reg(0x0032,0x0204);
        write_reg(0x0033,0x0502);
        write_reg(0x0034,0x0507);
        write_reg(0x0035,0x0204);
        write_reg(0x0036,0x0204);
        write_reg(0x0037,0x0502);
        write_reg(0x003A,0x0302);
        write_reg(0x003B,0x0302);
        write_reg(0x0023,0x0000);
        write_reg(0x0024,0x0000);
        write_reg(0x0025,0x8000);
        write_reg(0x004f,0);
        write_reg(0x004e,0);
        ret = 0;
        break;
    default:
        break;
    }

    LIB_TRACE("LCD CONTROLLER ID:0x%X\r\n", ili9320_get_id());
    ili9320_clear(BLACK);
    return ret;
}
Beispiel #23
0
static uint16_t read_reg(uint16_t addr)
{
    WR_CMD(addr);
    return RD_DATA();
}