diff --git a/drivers/lcd/README.txt b/drivers/lcd/README.txt index 522749460bd..10e31ecec62 100644 --- a/drivers/lcd/README.txt +++ b/drivers/lcd/README.txt @@ -21,7 +21,7 @@ LCD Header files Structures and APIs needed to work with LCD drivers are provided in this header file. This header file also depends on some of the same - definitions used for the frame buffer driver as privided in + definitions used for the frame buffer driver as provided in include/nuttx/video/fb.h. struct lcd_dev_s @@ -106,7 +106,7 @@ Re-usable LCD drivers reside in the drivers/lcd directory: ssd12989.c. Generic LCD driver for LCDs based on the Solomon Systech SSD1289 LCD controller. Think of this as a template for an LCD driver - that you will proably ahve to customize for any particular LCD + that you will probably have to customize for any particular LCD hardware. (see also configs/hymini-stm32v/src/ssd1289.c below). st7567.c. LCD Display Module, ST7567, Univision Technology Inc. Used @@ -143,7 +143,7 @@ Re-usable LCD drivers reside in the drivers/lcd directory: ssd1306.c. OLED Display Modules based on the SSD1306 controllers. This includes the UG-2864HSWEG01 and UG2832HSWEG04, Both from Univision Technology Inc. The latter is used with the OLED1 module that comes - with the Atmel SAM4l Xplained Pro board. Examplel usage: + with the Atmel SAM4l Xplained Pro board. Example usage: configs/stm32f4discovery configs/sam4l-xplained @@ -164,67 +164,72 @@ that makes then less re-usable: configs/hymini-stm32v/src/ssd1289.c. See also drivers/lcd/ssd1298.c above. - configs/stm32f4discovery/src/up_ssd1289.c. This examples is the + configs/stm32f4discovery/src/stm32_ssd1289.c. This examples is the bottom half for the SSD1289 driver at drivers/lcd/ssd1289.c configs/hymini-stm32v/src/ssd1289.c. See also drivers/lcd/ssd1298.c above. - configs/shenzhou/src/up_ssd1289.c + configs/shenzhou/src/stm32_ssd1289.c kwikstik-k40: - configs/kwikstik-k40/src/up_lcd.c. Don't waste your time. This is + configs/kwikstik-k40/src/k40_lcd.c. Don't waste your time. This is just a stub. Nokia LCD Drivers: - configs/olimex-lpc1766stk/src/up_lcd.c. This examples is the + configs/olimex-lpc1766stk/src/lpc17_lcd.c. This examples is the bottom half for the driver at drivers/lcd/nokia6100.c. - This was never completedly debugged ... there are probably issues + This was never completely debugged ... there are probably issues with that nasty 9-bit SPI interfaces. HX8346: - configs/sam3u-ek/src/up_lcd.c. The SAM3U-EK developement board features + configs/sam3u-ek/src/sam_lcd.c. The SAM3U-EK development board features a TFT/Transmissive color LCD module with touch-screen, FTM280C12D, with integrated driver IC HX8346. HX8347: - configs/pic32mx7mmb/src/up_mio283qt2.c. This driver is for the MI0283QT-2 + configs/pic32mx7mmb/src/pic32_mio283qt2.c. This driver is for the MI0283QT-2 LCD from Multi-Inno Technology Co., Ltd. This LCD is based on the Himax HX8347-D LCD controller. ILI93xx and Similar: - configs/stm3210e-eval/src/up_lcd.c. This driver supports the following + configs/stm3210e-eval/src/stm32_lcd.c. This driver supports the following LCDs: 1. Ampire AM-240320LTNQW00H 2. Orise Tech SPFD5408B 3. RenesasSP R61580 - configs/stm3220g-eval/src/up_lcd.c and configs/stm3240g-eval/src/up_lcd.c. + configs/stm3220g-eval/src/stm32_lcd.c and configs/stm3240g-eval/src/smt32_lcd.c. AM-240320L8TNQW00H (LCD_ILI9320 or LCD_ILI9321) and AM-240320D5TOQW01H (LCD_ILI9325) - configs/shenzhou/src/up_ili93xx.c. Another ILI93xx driver. + configs/shenzhou/src/stm32_ili93xx.c. Another ILI93xx driver. config/sam4e-ek/src/sam_ili9325.c. ILI9325 driver config/sam4e-ek/src/sam_ili9341.c. ILI9341 driver + ILI9488 + + configs/samv71-xult/src/sam_ili9488.c + include/nuttx/lcd/ili9488.h + R61505U - configs/hymini-stm32v/src/up_r61505u.c + configs/hymini-stm32v/src/stm32_r61505u.c Sharp Memory LCD: - configs/maple/src/up_lcd.c + configs/maple/src/stm32_lcd.c OLEDs: - configs/stm32f4discovery/src/up_ug2864ambag01.c - configs/stm32f4discovery/src/up_ug2864hsweg01.c - configs/sam4l-xplained/src/up_ug2832hsweg04.c - configs/zp214xpa/src/up_ug2864ambag01.c + configs/stm32f4discovery/src/stm32_ug2864ambag01.c + configs/stm32f4discovery/src/stm32_ug2864hsweg01.c + configs/sam4l-xplained/src/sa,_ug2832hsweg04.c + configs/zp214xpa/src/lpc2148_ug2864ambag01.c LCD controllers built-into the MCU: @@ -235,14 +240,14 @@ that makes then less re-usable: Alphnumeric/segment LCD Displays: - configs/skp16c26/src/up_lcd.c. Untested alphanumeric LCD driver. - configs/pcblogic-pic32mx/src/up_lcd1602.c. LCD1602 is based on the + configs/skp16c26/src/m16c_lcd.c. Untested alphanumeric LCD driver. + configs/pcblogic-pic32mx/src/pic32mx_lcd1602.c. LCD1602 is based on the Hitachi HD44780U LCD controller. This version of the driver uses the PIC32MX PMP interface to control the LCD. As of this - writing, has *NOT* been verfied (mostly because I get bewildered + writing, has *NOT* been verified (mostly because I get bewildered by all of the jumper wires). See include/nuttx/lcd/hd4478ou.h for more information about LCD1602. - configs/sure-pic32mx/src/up_lcd1602.c. Another LCD1602 segment + configs/sure-pic32mx/src/pic32_lcd1602.c. Another LCD1602 segment LCD. This is a bit-bang version of the driver and appears to be fully functional. This version of the LCD1602 driver has been verified and is working fine. @@ -259,4 +264,3 @@ graphics/ ========= See also the usage of the LCD driver in the graphics/ directory. - diff --git a/include/nuttx/lcd/ili9488.h b/include/nuttx/lcd/ili9488.h new file mode 100644 index 00000000000..f769cd39d8f --- /dev/null +++ b/include/nuttx/lcd/ili9488.h @@ -0,0 +1,137 @@ +/**************************************************************************** + * include/nuttx/lcd/ili9488.h + * + * Copyright (c) 2011, Atmel Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright notice, + * this list of conditions and the disclaimer below. + * + * - Atmel's name may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE + * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#ifndef __INCLUDE_NUTTX_LCD_ILI9488_H +#define __INCLUDE_NUTTX_LCD_ILI9488_H + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/* Level 1 Commands (from the display Datasheet) */ + +#define ILI9488_CMD_NOP 0x00 +#define ILI9488_CMD_SOFTWARE_RESET 0x01 +#define ILI9488_CMD_READ_DISP_ID 0x04 +#define ILI9488_CMD_READ_ERROR_DSI 0x05 +#define ILI9488_CMD_READ_DISP_STATUS 0x09 +#define ILI9488_CMD_READ_DISP_POWER_MODE 0x0a +#define ILI9488_CMD_READ_DISP_MADCTRL 0x0b +#define ILI9488_CMD_READ_DISP_PIXEL_FORMAT 0x0c +#define ILI9488_CMD_READ_DISP_IMAGE_MODE 0x0d +#define ILI9488_CMD_READ_DISP_SIGNAL_MODE 0x0e +#define ILI9488_CMD_READ_DISP_SELF_DIAGNOSTIC 0x0f +#define ILI9488_CMD_ENTER_SLEEP_MODE 0x10 +#define ILI9488_CMD_SLEEP_OUT 0x11 +#define ILI9488_CMD_PARTIAL_MODE_ON 0x12 +#define ILI9488_CMD_NORMAL_DISP_MODE_ON 0x13 +#define ILI9488_CMD_DISP_INVERSION_OFF 0x20 +#define ILI9488_CMD_DISP_INVERSION_ON 0x21 +#define ILI9488_CMD_PIXEL_OFF 0x22 +#define ILI9488_CMD_PIXEL_ON 0x23 +#define ILI9488_CMD_DISPLAY_OFF 0x28 +#define ILI9488_CMD_DISPLAY_ON 0x29 +#define ILI9488_CMD_COLUMN_ADDRESS_SET 0x2a +#define ILI9488_CMD_PAGE_ADDRESS_SET 0x2b +#define ILI9488_CMD_MEMORY_WRITE 0x2c +#define ILI9488_CMD_MEMORY_READ 0x2e +#define ILI9488_CMD_PARTIAL_AREA 0x30 +#define ILI9488_CMD_VERT_SCROLL_DEFINITION 0x33 +#define ILI9488_CMD_TEARING_EFFECT_LINE_OFF 0x34 +#define ILI9488_CMD_TEARING_EFFECT_LINE_ON 0x35 +#define ILI9488_CMD_MEMORY_ACCESS_CONTROL 0x36 +#define ILI9488_CMD_VERT_SCROLL_START_ADDRESS 0x37 +#define ILI9488_CMD_IDLE_MODE_OFF 0x38 +#define ILI9488_CMD_IDLE_MODE_ON 0x39 +#define ILI9488_CMD_COLMOD_PIXEL_FORMAT_SET 0x3a +#define ILI9488_CMD_WRITE_MEMORY_CONTINUE 0x3c +#define ILI9488_CMD_READ_MEMORY_CONTINUE 0x3e +#define ILI9488_CMD_SET_TEAR_SCANLINE 0x44 +#define ILI9488_CMD_GET_SCANLINE 0x45 +#define ILI9488_CMD_WRITE_DISPLAY_BRIGHTNESS 0x51 +#define ILI9488_CMD_READ_DISPLAY_BRIGHTNESS 0x52 +#define ILI9488_CMD_WRITE_CTRL_DISPLAY 0x53 +#define ILI9488_CMD_READ_CTRL_DISPLAY 0x54 +#define ILI9488_CMD_WRITE_CONTENT_ADAPT_BRIGHTNESS 0x55 +#define ILI9488_CMD_READ_CONTENT_ADAPT_BRIGHTNESS 0x56 +#define ILI9488_CMD_WRITE_MIN_CAB_LEVEL 0x5e +#define ILI9488_CMD_READ_MIN_CAB_LEVEL 0x5f +#define ILI9488_CMD_READ_ABC_SELF_DIAG_RES 0x68 +#define ILI9488_CMD_READ_ID1 0xda +#define ILI9488_CMD_READ_ID2 0xdb +#define ILI9488_CMD_READ_ID3 0xdc + +/* Level 2 Commands (from the display Datasheet) */ + +#define ILI9488_CMD_INTERFACE_MODE_CONTROL 0xb0 +#define ILI9488_CMD_FRAME_RATE_CONTROL_NORMAL 0xb1 +#define ILI9488_CMD_FRAME_RATE_CONTROL_IDLE_8COLOR 0xb2 +#define ILI9488_CMD_FRAME_RATE_CONTROL_PARTIAL 0xb3 +#define ILI9488_CMD_DISPLAY_INVERSION_CONTROL 0xb4 +#define ILI9488_CMD_BLANKING_PORCH_CONTROL 0xb5 +#define ILI9488_CMD_DISPLAY_FUNCTION_CONTROL 0xb6 +#define ILI9488_CMD_ENTRY_MODE_SET 0xb7 +#define ILI9488_CMD_BACKLIGHT_CONTROL_1 0xb9 +#define ILI9488_CMD_BACKLIGHT_CONTROL_2 0xba +#define ILI9488_CMD_HS_LANES_CONTROL 0xbe +#define ILI9488_CMD_POWER_CONTROL_1 0xc0 +#define ILI9488_CMD_POWER_CONTROL_2 0xc1 +#define ILI9488_CMD_POWER_CONTROL_NORMAL_3 0xc2 +#define ILI9488_CMD_POWER_CONTROL_IDEL_4 0xc3 +#define ILI9488_CMD_POWER_CONTROL_PARTIAL_5 0xc4 +#define ILI9488_CMD_VCOM_CONTROL_1 0xc5 +#define ILI9488_CMD_CABC_CONTROL_1 0xc6 +#define ILI9488_CMD_CABC_CONTROL_2 0xc8 +#define ILI9488_CMD_CABC_CONTROL_3 0xc9 +#define ILI9488_CMD_CABC_CONTROL_4 0xca +#define ILI9488_CMD_CABC_CONTROL_5 0xcb +#define ILI9488_CMD_CABC_CONTROL_6 0xcc +#define ILI9488_CMD_CABC_CONTROL_7 0xcd +#define ILI9488_CMD_CABC_CONTROL_8 0xce +#define ILI9488_CMD_CABC_CONTROL_9 0xcf +#define ILI9488_CMD_NVMEM_WRITE 0xd0 +#define ILI9488_CMD_NVMEM_PROTECTION_KEY 0xd1 +#define ILI9488_CMD_NVMEM_STATUS_READ 0xd2 +#define ILI9488_CMD_READ_ID4 0xd3 +#define ILI9488_CMD_ADJUST_CONTROL_1 0xd7 +#define ILI9488_CMD_READ_ID_VERSION 0xd8 +#define ILI9488_CMD_POSITIVE_GAMMA_CORRECTION 0xe0 +#define ILI9488_CMD_NEGATIVE_GAMMA_CORRECTION 0xe1 +#define ILI9488_CMD_DIGITAL_GAMMA_CONTROL_1 0xe2 +#define ILI9488_CMD_DIGITAL_GAMMA_CONTROL_2 0xe3 +#define ILI9488_CMD_SET_IMAGE_FUNCTION 0xe9 +#define ILI9488_CMD_ADJUST_CONTROL_2 0xf2 +#define ILI9488_CMD_ADJUST_CONTROL_3 0xf7 +#define ILI9488_CMD_ADJUST_CONTROL_4 0xf8 +#define ILI9488_CMD_ADJUST_CONTROL_5 0xf9 +#define ILI9488_CMD_SPI_READ_SETTINGS 0xfb +#define ILI9488_CMD_ADJUST_CONTROL_6 0xfc +#define ILI9488_CMD_ADJUST_CONTROL_7 0xff + +#endif /* __INCLUDE_NUTTX_LCD_ILI9488_H */