SAM4E-EK: Add ILI9341-based LCD driver
This commit is contained in:
parent
29eef778ce
commit
cf242fbeb4
@ -65,7 +65,19 @@ endchoice # AT25 serial FLASH configuration
|
|||||||
if LCD
|
if LCD
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "ILI9325-based LCD Color Configuration"
|
prompt "LCD Type"
|
||||||
|
default SAM4EEK_LCD_ILI9341
|
||||||
|
|
||||||
|
config SAM4EEK_LCD_ILI9325
|
||||||
|
bool "ILI9325 LCD controller"
|
||||||
|
|
||||||
|
config SAM4EEK_LCD_ILI9341
|
||||||
|
bool "ILI9341 LCD controller"
|
||||||
|
|
||||||
|
endchoice # LCD Type
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "LCD Color Configuration"
|
||||||
default SAM4EEK_LCD_RGB565
|
default SAM4EEK_LCD_RGB565
|
||||||
|
|
||||||
config SAM4EEK_LCD_RGB565
|
config SAM4EEK_LCD_RGB565
|
||||||
@ -77,7 +89,7 @@ config SAM4EEK_LCD_RGB24
|
|||||||
config SAM4EEK_LCD_RGB32
|
config SAM4EEK_LCD_RGB32
|
||||||
bool "RGB32"
|
bool "RGB32"
|
||||||
|
|
||||||
endchoice # ILI9325-based LCD Color Configuration
|
endchoice # LCD Color Configuration
|
||||||
|
|
||||||
config SAM4EEK_LCD_BGCOLOR
|
config SAM4EEK_LCD_BGCOLOR
|
||||||
hex "Initial background color"
|
hex "Initial background color"
|
||||||
|
@ -24,7 +24,7 @@ Contents
|
|||||||
- USB Full-Speed Device
|
- USB Full-Speed Device
|
||||||
- HSMCI
|
- HSMCI
|
||||||
- Touchscreen
|
- Touchscreen
|
||||||
- ILI9325-Based LCD
|
- ILI9325/41-Based LCD
|
||||||
- SAM4E-EK-specific Configuration Options
|
- SAM4E-EK-specific Configuration Options
|
||||||
- Configurations
|
- Configurations
|
||||||
|
|
||||||
@ -917,18 +917,16 @@ Touchscreen
|
|||||||
|
|
||||||
STATUS: Verified 2014-05-14
|
STATUS: Verified 2014-05-14
|
||||||
|
|
||||||
ILI9325-Based LCD
|
ILI9325/41-Based LCD
|
||||||
=================
|
=================
|
||||||
|
|
||||||
The SAM4E-EK carries a TFT transmissive LCD module with touch panel,
|
The SAM4E-EK carries a TFT transmissive LCD module with touch panel,
|
||||||
FTM280C34D. Its integrated driver IC is ILI9325. The LCD display area is
|
FTM280C34D. Its integrated driver IC is either a ILI9325 ILI9342 (the
|
||||||
2.8 inches diagonally measured, with a native resolution of 240 x 320
|
original schematics said ILI9325, but I learned the hard way that I had
|
||||||
|
an ILI9341-based LCD). The LCD display area is 2.8 inches diagonally
|
||||||
|
measured, with a native resolution of 240 x 320
|
||||||
dots.
|
dots.
|
||||||
|
|
||||||
No driver has been developed for the SAM4E-EK LCD as of this writing.
|
|
||||||
Some technical information follows might be useful to anyone who is
|
|
||||||
inspired to develop that driver:
|
|
||||||
|
|
||||||
Connectivity
|
Connectivity
|
||||||
------------
|
------------
|
||||||
|
|
||||||
@ -998,39 +996,34 @@ ILI9325-Based LCD
|
|||||||
brightness control) from a 32-level logarithmic scale. Four resistors
|
brightness control) from a 32-level logarithmic scale. Four resistors
|
||||||
R93/R94/R95/R96 are implemented for optional current limitation.
|
R93/R94/R95/R96 are implemented for optional current limitation.
|
||||||
|
|
||||||
Resources
|
Configuration
|
||||||
---------
|
-------------
|
||||||
|
|
||||||
If you want to implement LCD support, here are some references that may
|
This is the basic configuration that enables the ILI9341-based LCD.
|
||||||
help you:
|
Of course additional settings would be necessary to enable the graphic
|
||||||
|
capabilities to do anything with the LCD.
|
||||||
|
|
||||||
1. Atmel Sample Code (ASF). There is no example for the SAM4E-EK, but
|
System Type -> AT91SAM3/4 Configuration Options
|
||||||
there is for the SAM4S-EK. The LCD and its processor connectivity
|
CONFIG_SAM34_SMC=y : SMC support
|
||||||
appear to be equivalent to the SAM4E-EK so this sample code should be
|
|
||||||
a good place to begin. NOTE that the clock frequencies may be
|
|
||||||
different and pin usage may be different. So it may be necessary to
|
|
||||||
adjust the SAM configuration to use this example.
|
|
||||||
|
|
||||||
2. There is an example of an LCD driver for the SAM3U at
|
Device Drivers -> LCD Driver Support
|
||||||
configs/sam4u-ek/src/up_lcd.c. That LCD driver is for an LCD with a
|
CONFIG_LCD=y : Enable LCD support
|
||||||
different LCD controller but should provide the NuttX SAM framework
|
CONFIG_LCD_MAXCONTRAST=1 : Value should not matter
|
||||||
for an LCD driver.
|
CONFIG_LCD_MAXPOWER=64 : Must be > 16
|
||||||
|
CONFIG_LCD_LANDSCAPE=y : Landscape orientation
|
||||||
|
|
||||||
3. There are other LCD drivers for different MCUs that do support the
|
Board Selection
|
||||||
ILI9325 LCD. Look at configs/shenzhou/src/up_ili93xx.c,
|
CONFIG_SAM4EEK_LCD_ILI9341=y : For the ILI9341-based LCD
|
||||||
configs/stm3220g-eval/src/up_lcd.c, and
|
CONFIG_SAM4EEK_LCD_RGB565=y : Color resolution
|
||||||
configs/stm3240g-eval/src/up_lcd.c. I believe that the Shenzhou
|
CONFIG_SAM4EEK_LCD_BGCOLOR=0x00 : Initial background color
|
||||||
driver is the most recent.
|
|
||||||
|
|
||||||
STATUS:
|
STATUS:
|
||||||
2014-05-14: Fully implemented. There is still a bug in in the LCD
|
|
||||||
communications. The LCD ID is read as 0x0000 instead of 0x9325.
|
|
||||||
|
|
||||||
2014-8-19: Updated. The LCD ID is bad because the on-board LCD is
|
2014-8-20: Updated. The ILI9341 LCD has some basic functionality.
|
||||||
*not* an ILI9325. It is an ILI9341. The ID lies in a different
|
Certainly it can transfer and display data fine. But there are some
|
||||||
address and is 0x00009341. Need to write a new driver.
|
issues with the geometry of data that appears on the LCD..
|
||||||
|
|
||||||
The LCD backlight appears to be functional.
|
The LCD backlight is functional.
|
||||||
|
|
||||||
SAM4E-EK-specific Configuration Options
|
SAM4E-EK-specific Configuration Options
|
||||||
=======================================
|
=======================================
|
||||||
@ -1185,9 +1178,14 @@ SAM4E-EK-specific Configuration Options
|
|||||||
LCD Options. Other than the standard LCD configuration options
|
LCD Options. Other than the standard LCD configuration options
|
||||||
(see configs/README.txt), the SAM4E-EK driver also supports:
|
(see configs/README.txt), the SAM4E-EK driver also supports:
|
||||||
|
|
||||||
CONFIG_LCD_PORTRAIT - Present the display in the standard 240x320
|
CONFIG_LCD_LANDSCAPE - Define for 320x240 display "landscape"
|
||||||
"Portrait" orientation. Default: The display is rotated to
|
support. Default is this 320x240 "landscape" orientation
|
||||||
support a 320x240 "Landscape" orientation.
|
CONFIG_LCD_RLANDSCAPE - Define for 320x240 display "reverse
|
||||||
|
landscape" support.
|
||||||
|
CONFIG_LCD_PORTRAIT - Define for 240x320 display "portrait"
|
||||||
|
orientation support.
|
||||||
|
CONFIG_LCD_RPORTRAIT - Define for 240x320 display "reverse
|
||||||
|
portrait" orientation support.
|
||||||
|
|
||||||
Configurations
|
Configurations
|
||||||
==============
|
==============
|
||||||
@ -1425,6 +1423,7 @@ Configurations
|
|||||||
CONFIG_LCD_LANDSCAPE=y : Landscape orientation
|
CONFIG_LCD_LANDSCAPE=y : Landscape orientation
|
||||||
|
|
||||||
Board Selection
|
Board Selection
|
||||||
|
CONFIG_SAM4EEK_LCD_ILI9341=y : For the ILI9341-based LCD
|
||||||
CONFIG_SAM4EEK_LCD_RGB565=y : Color resolution
|
CONFIG_SAM4EEK_LCD_RGB565=y : Color resolution
|
||||||
CONFIG_SAM4EEK_LCD_BGCOLOR=0x00 : Initial background color
|
CONFIG_SAM4EEK_LCD_BGCOLOR=0x00 : Initial background color
|
||||||
|
|
||||||
@ -1469,9 +1468,9 @@ Configurations
|
|||||||
|
|
||||||
2014-05-14: The touchscreen interface was successfully verified.
|
2014-05-14: The touchscreen interface was successfully verified.
|
||||||
|
|
||||||
2014-05-14: The LCD interface is fully implemented. However,
|
2014-08-20: The LCD interface is fully implemented and data appears
|
||||||
there is still a bug in in the LCD communications. The
|
to be transferred okay. However, there are errors in
|
||||||
LCD ID is read as 0x0000 instead of 0x9325.
|
geometry that leave the LCD unusable still.
|
||||||
|
|
||||||
The LCD backlight appears to be functional.
|
The LCD backlight appears to be functional.
|
||||||
|
|
||||||
|
@ -55,7 +55,13 @@ CSRCS += sam_hsmci.c
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_LCD),y)
|
ifeq ($(CONFIG_LCD),y)
|
||||||
|
ifeq ($(CONFIG_SAM4EEK_LCD_ILI9325),y)
|
||||||
CSRCS += sam_ili9325.c
|
CSRCS += sam_ili9325.c
|
||||||
|
else
|
||||||
|
ifeq ($(CONFIG_SAM4EEK_LCD_ILI9341),y)
|
||||||
|
CSRCS += sam_ili9341.c
|
||||||
|
endif
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_INPUT_ADS7843E),y)
|
ifeq ($(CONFIG_INPUT_ADS7843E),y)
|
||||||
|
1285
configs/sam4e-ek/src/sam_ili9341.c
Normal file
1285
configs/sam4e-ek/src/sam_ili9341.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -90,12 +90,16 @@ Examples: /drivers/lcd/
|
|||||||
|
|
||||||
Re-usable LCD drivers reside in the drivers/lcd directory:
|
Re-usable LCD drivers reside in the drivers/lcd directory:
|
||||||
|
|
||||||
LEDs:
|
LCDs:
|
||||||
----
|
----
|
||||||
mio283qt2.c. This is a driver for the MI0283QT-2 LCD from Multi-Inno
|
mio283qt2.c. This is a driver for the MI0283QT-2 LCD from Multi-Inno
|
||||||
Technology Co., Ltd. This LCD is based on the Himax HX8347-D LCD
|
Technology Co., Ltd. This LCD is based on the Himax HX8347-D LCD
|
||||||
controller.
|
controller.
|
||||||
|
|
||||||
|
mio283qt9a.c. This is a driver for the MI0283QT-9A LCD from Multi-Inno
|
||||||
|
Technology Co., Ltd. This LCD is based on the Ilitek ILI9341 LCD
|
||||||
|
controller.
|
||||||
|
|
||||||
nokia6100.c. Supports the Nokia 6100 display with either the Philips
|
nokia6100.c. Supports the Nokia 6100 display with either the Philips
|
||||||
PCF883 or the Epson S1D15G10 display controller. This LCD is used
|
PCF883 or the Epson S1D15G10 display controller. This LCD is used
|
||||||
with the Olimex LPC1766-STK (but has not been fully integrated).
|
with the Olimex LPC1766-STK (but has not been fully integrated).
|
||||||
@ -202,7 +206,10 @@ that makes then less re-usable:
|
|||||||
configs/stm3220g-eval/src/up_lcd.c and configs/stm3240g-eval/src/up_lcd.c.
|
configs/stm3220g-eval/src/up_lcd.c and configs/stm3240g-eval/src/up_lcd.c.
|
||||||
AM-240320L8TNQW00H (LCD_ILI9320 or LCD_ILI9321) and
|
AM-240320L8TNQW00H (LCD_ILI9320 or LCD_ILI9321) and
|
||||||
AM-240320D5TOQW01H (LCD_ILI9325)
|
AM-240320D5TOQW01H (LCD_ILI9325)
|
||||||
|
|
||||||
configs/shenzhou/src/up_ili93xx.c. Another ILI93xx driver.
|
configs/shenzhou/src/up_ili93xx.c. Another ILI93xx driver.
|
||||||
|
config/sam4e-ek/src/sam_ili9325.c. ILI9325 driver
|
||||||
|
config/sam4e-ek/src/sam_ili9341.c. ILI9341 driver
|
||||||
|
|
||||||
R61505U
|
R61505U
|
||||||
|
|
||||||
@ -242,6 +249,12 @@ that makes then less re-usable:
|
|||||||
configs/stm32ldiscovery/src/stm32_lcd.c. 1x6 segment LCD with bars
|
configs/stm32ldiscovery/src/stm32_lcd.c. 1x6 segment LCD with bars
|
||||||
using the segment LCD controller built-into the STM32L15X.
|
using the segment LCD controller built-into the STM32L15X.
|
||||||
|
|
||||||
|
TFT Panel Drivers:
|
||||||
|
|
||||||
|
configs/open1788/src/lpc17_lcd.c and arch/arm/src/lpc17xx/lpc17_lcd.c
|
||||||
|
configs/sama5d3x-ek/src and configs/sama5d4-ek/src: Use
|
||||||
|
arch/arm/src/sama5/sam_lcd.c
|
||||||
|
|
||||||
graphics/
|
graphics/
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
**************************************************************************************/
|
**************************************************************************************/
|
||||||
/* ILI9341 ID code */
|
/* ILI9341 ID code */
|
||||||
|
|
||||||
#define ILI9341_DEVICE_CODE 0x00009341
|
#define ILI9341_DEVICE_CODE 0x9341
|
||||||
|
|
||||||
/* ILI9341 LCD Register Addresses *****************************************************/
|
/* ILI9341 LCD Register Addresses *****************************************************/
|
||||||
|
|
||||||
@ -143,22 +143,22 @@
|
|||||||
/* ILI9341 LCD Register Bit Definitions ***********************************************/
|
/* ILI9341 LCD Register Bit Definitions ***********************************************/
|
||||||
/* Memory Access control */
|
/* Memory Access control */
|
||||||
|
|
||||||
#define ILI9341_MEMORY_ACCESS_CONTROL_MY (1 << 7)
|
#define ILI9341_MEMORY_ACCESS_CONTROL_MH (1 << 2) /* Horizontal refresh order */
|
||||||
#define ILI9341_MEMORY_ACCESS_CONTROL_MX (1 << 6)
|
#define ILI9341_MEMORY_ACCESS_CONTROL_BGR (1 << 3) /* RGB/BGR order */
|
||||||
#define ILI9341_MEMORY_ACCESS_CONTROL_MV (1 << 5)
|
#define ILI9341_MEMORY_ACCESS_CONTROL_ML (1 << 4) /* Vertical refresh order */
|
||||||
#define ILI9341_MEMORY_ACCESS_CONTROL_ML (1 << 4)
|
#define ILI9341_MEMORY_ACCESS_CONTROL_MV (1 << 5) /* Row/column exchange */
|
||||||
#define ILI9341_MEMORY_ACCESS_CONTROL_BGR (1 << 3)
|
#define ILI9341_MEMORY_ACCESS_CONTROL_MX (1 << 6) /* Column address order */
|
||||||
#define ILI9341_MEMORY_ACCESS_CONTROL_MH (1 << 2)
|
#define ILI9341_MEMORY_ACCESS_CONTROL_MY (1 << 7) /* Row address order */
|
||||||
|
|
||||||
/* Display function control */
|
/* Display function control */
|
||||||
|
|
||||||
#define ILI9341_DISP_FUNC_CTL_REV (1 << 7)
|
#define ILI9341_DISP_FUNC_CTL_ISC_SHIFT (0)
|
||||||
#define ILI9341_DISP_FUNC_CTL_GS (1 << 6)
|
#define ILI9341_DISP_FUNC_CTL_ISC_MASK (15 << ILI9341_DISP_FUNC_CTL_ISC_SHIFT)
|
||||||
#define ILI9341_DISP_FUNC_CTL_SS (1 << 5)
|
|
||||||
#define ILI9341_DISP_FUNC_CTL_SM (1 << 4)
|
|
||||||
#define ILI9341_DISP_FUNC_CTL_ISC_SHIFT 0
|
|
||||||
#define ILI9341_DISP_FUNC_CTL_ISC_MASK (15 << 0)
|
|
||||||
# define ILI9341_DISP_FUNC_CTL_ISC(n) ((n) << ILI9341_DISP_FUNC_CTL_ISC_SHIFT))
|
# define ILI9341_DISP_FUNC_CTL_ISC(n) ((n) << ILI9341_DISP_FUNC_CTL_ISC_SHIFT))
|
||||||
|
#define ILI9341_DISP_FUNC_CTL_SM (1 << 4)
|
||||||
|
#define ILI9341_DISP_FUNC_CTL_SS (1 << 5)
|
||||||
|
#define ILI9341_DISP_FUNC_CTL_GS (1 << 6)
|
||||||
|
#define ILI9341_DISP_FUNC_CTL_REV (1 << 7)
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
|
Loading…
Reference in New Issue
Block a user