Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
add ili9341 lvgl demo
  • Loading branch information
Neutree committed Sep 27, 2018
1 parent 2f89393 commit aebac07
Show file tree
Hide file tree
Showing 9 changed files with 800 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -12,7 +12,7 @@ LOCAL_MODULE_DEPENDS += libs
# DO NOT EDIT THIS FILE IF YOU DON'T KNOW WHAT YOU DO
##################################################################################

PROJECT_PATH += demo/fota
PROJECT_PATH += demo/lvgl2

LOCAL_MODULE_DEPENDS += ${PROJECT_PATH}

Expand Down
8 changes: 6 additions & 2 deletions demo/lcd/src/lcd_main.c
Expand Up @@ -55,13 +55,17 @@ LCD_OP_t lcd = {
.GetStringId = NULL,
.GetLcdId = NULL,
};

void OnBlit(void* param)
{

}

void Init_Interface()
{
LCD_Screen_Info_t info;

//register functions by lcd driver
LCD_ili9341_Register(&lcd);
LCD_ili9341_Register(&lcd,OnBlit);
lcd.Open();
lcd.GetScreenInfo(&info);

Expand Down
39 changes: 39 additions & 0 deletions demo/lvgl2/Makefile
@@ -0,0 +1,39 @@
## ----------------------------------------------------------- ##
## Don't touch the next line unless you know what you're doing.##
## ----------------------------------------------------------- ##

# Name of the module
LOCAL_NAME := demo/lvgl2

# List of submodules which contain code we need to include in the final lib
LOCAL_API_DEPENDS := \

LOCAL_ADD_INCLUDE := include\
include/std_inc \
include/api_inc \
libs/lcd/include \
libs/lcd/ili9341/include \
libs/lvgl \
libs/lvgl/src

# Set this to any non-null string to signal a module which
# generates a binary (must contain a "main" entry point).
# If left null, only a library will be generated.
IS_ENTRY_POINT := no

## ------------------------------------ ##
## Add your custom flags here ##
## ------------------------------------ ##
MYCFLAGS +=

LOCAL_EXPORT_FLAG += LVGL_CONFIG_FILE=\"${CFG_LVGL_CONFIG_FILE}\"

## ------------------------------------- ##
## List all your sources here ##
## ------------------------------------- ##
C_SRC := ${notdir ${wildcard src/*.c}}

## ------------------------------------- ##
## Do Not touch below this line ##
## ------------------------------------- ##
include ${SOFT_WORKDIR}/platform/compilation/cust_rules.mk
17 changes: 17 additions & 0 deletions demo/lvgl2/README.md
@@ -0,0 +1,17 @@

[LVGL(LittlevGL)](https://littlevgl.com/) display on ili9341 320x240 LCD
====

LCD ili9341

|LCD Pin |A9 |
|--------|-- |
| GND |GND |
| VCC | |
| MOSI |LCD_DIO/IO17|
| MISO | |
| SCK |LCD_SCK/IO16|
| RES |LCD_RST/IO14|
| DC |LCD_SDC/IO18|
| CS |LCD_CD/IO15 |

9 changes: 9 additions & 0 deletions demo/lvgl2/config.mk
@@ -0,0 +1,9 @@



export CFG_LCD_SUPPORT=y
export CFG_LCD_NAME=ili9341

export CFG_LVGL_SUPPORT=y
export CFG_LVGL_CONFIG_FILE="${SOFT_WORKDIR}/demo/lvgl2/include/lvgl_config.h"

254 changes: 254 additions & 0 deletions demo/lvgl2/include/lvgl_config.h
@@ -0,0 +1,254 @@
#ifndef __LV_CONF_H
#define __LV_CONF_H





#define USE_LV_TEMPL 0


/*----------------
* Dynamic memory
*----------------*/

/* Memory size which will be used by the library
* to store the graphical objects and other data */
#define LV_MEM_CUSTOM 1 /*1: use custom malloc/free, 0: use the built-in lv_mem_alloc/lv_mem_free*/
#if LV_MEM_CUSTOM == 0
#define LV_MEM_SIZE (32U * 1024U) /*Size memory used by `lv_mem_alloc` in bytes (>= 2kB)*/
#define LV_MEM_ATTR /*Complier prefix for big array declaration*/
#define LV_MEM_AUTO_DEFRAG 1 /*Automatically defrag on free*/
#else /*LV_MEM_CUSTOM*/
#define LV_MEM_CUSTOM_INCLUDE <stdlib.h> /*Header for the dynamic memory function*/
#define LV_MEM_CUSTOM_ALLOC malloc /*Wrapper to malloc*/
#define LV_MEM_CUSTOM_FREE free /*Wrapper to free*/
#endif /*LV_MEM_CUSTOM*/

/*===================
Graphical settings
*===================*/

/* Horizontal and vertical resolution of the library.*/
#define LV_HOR_RES (240)
#define LV_VER_RES (320)
#define LV_DPI 100

/* Size of VDB (Virtual Display Buffer: the internal graphics buffer).
* Required for buffered drawing, opacity and anti-aliasing
* VDB makes the double buffering, you don't need to deal with it!
* Typical size: ~1/10 screen */
#define LV_VDB_SIZE (20 * LV_HOR_RES) /*Size of VDB in pixel count (1/10 screen size is good for first)*/
#define LV_VDB_ADR 0 /*Place VDB to a specific address (e.g. in external RAM) (0: allocate automatically into RAM)*/

/* Use two Virtual Display buffers (VDB) parallelize rendering and flushing (optional)
* The flushing should use DMA to write the frame buffer in the background*/
#define LV_VDB_DOUBLE 0 /*1: Enable the use of 2 VDBs*/
#define LV_VDB2_ADR 0 /*Place VDB2 to a specific address (e.g. in external RAM) (0: allocate automatically into RAM)*/

/* Enable anti-aliasing (lines, and radiuses will be smoothed) */
#define LV_ANTIALIAS 1 /*1: Enable anti-aliasing*/

/*Screen refresh settings*/
#define LV_REFR_PERIOD 20 /*Screen refresh period in milliseconds*/
#define LV_INV_FIFO_SIZE 32 /*The average count of objects on a screen */

/*=================
Misc. setting
*=================*/

/*Input device settings*/
#define LV_INDEV_READ_PERIOD 50 /*Input device read period in milliseconds*/
#define LV_INDEV_POINT_MARKER 0 /*Mark the pressed points (required: USE_LV_REAL_DRAW = 1)*/
#define LV_INDEV_DRAG_LIMIT 10 /*Drag threshold in pixels */
#define LV_INDEV_DRAG_THROW 20 /*Drag throw slow-down in [%]. Greater value means faster slow-down */
#define LV_INDEV_LONG_PRESS_TIME 400 /*Long press time in milliseconds*/
#define LV_INDEV_LONG_PRESS_REP_TIME 100 /*Repeated trigger period in long press [ms] */

/*Color settings*/
#define LV_COLOR_DEPTH 16 /*Color depth: 1/8/16/24*/
#define LV_COLOR_TRANSP LV_COLOR_LIME /*Images pixels with this color will not be drawn (with chroma keying)*/

/*Text settings*/
#define LV_TXT_UTF8 1 /*Enable UTF-8 coded Unicode character usage */
#define LV_TXT_BREAK_CHARS " ,.;:-_" /*Can break texts on these chars*/

/*Graphics feature usage*/
#define USE_LV_ANIMATION 1 /*1: Enable all animations*/
#define USE_LV_SHADOW 1 /*1: Enable shadows*/
#define USE_LV_GROUP 1 /*1: Enable object groups (for keyboards)*/
#define USE_LV_GPU 0 /*1: Enable GPU interface*/
#define USE_LV_REAL_DRAW 1 /*1: Enable function which draw directly to the frame buffer instead of VDB (required if LV_VDB_SIZE = 0)*/
#define USE_LV_FILESYSTEM 1 /*1: Enable file system (required by images*/

/*Compiler settings*/
#define LV_ATTRIBUTE_TICK_INC /* Define a custom attribute to `lv_tick_inc` function */
#define LV_ATTRIBUTE_TASK_HANDLER /* Define a custom attribute to `lv_task_handler` function */
#define LV_COMPILER_VLA_SUPPORTED 1 /* 1: Variable length array is supported*/

/*================
* THEME USAGE
*================*/
#define USE_LV_THEME_TEMPL 0 /*Just for test*/
#define USE_LV_THEME_DEFAULT 0 /*Built mainly from the built-in styles. Consumes very few RAM*/
#define USE_LV_THEME_ALIEN 0 /*Dark futuristic theme*/
#define USE_LV_THEME_NIGHT 0 /*Dark elegant theme*/
#define USE_LV_THEME_MONO 0 /*Mono color theme for monochrome displays*/
#define USE_LV_THEME_MATERIAL 1 /*Flat theme with bold colors and light shadows*/
#define USE_LV_THEME_ZEN 0 /*Peaceful, mainly light theme */

/*==================
* FONT USAGE
*===================*/

/* More info about fonts: https://littlevgl.com/basics#fonts
* To enable a built-in font use 1,2,4 or 8 values
* which will determine the bit-per-pixel */
#define LV_FONT_DEFAULT &lv_font_dejavu_20 /*Always set a default font from the built-in fonts*/

#define USE_LV_FONT_DEJAVU_10 0
#define USE_LV_FONT_DEJAVU_10_LATIN_SUP 0
#define USE_LV_FONT_DEJAVU_10_CYRILLIC 0
#define USE_LV_FONT_SYMBOL_10 0

#define USE_LV_FONT_DEJAVU_20 4
#define USE_LV_FONT_DEJAVU_20_LATIN_SUP 0
#define USE_LV_FONT_DEJAVU_20_CYRILLIC 0
#define USE_LV_FONT_SYMBOL_20 4

#define USE_LV_FONT_DEJAVU_30 0
#define USE_LV_FONT_DEJAVU_30_LATIN_SUP 0
#define USE_LV_FONT_DEJAVU_30_CYRILLIC 0
#define USE_LV_FONT_SYMBOL_30 0

#define USE_LV_FONT_DEJAVU_40 0
#define USE_LV_FONT_DEJAVU_40_LATIN_SUP 0
#define USE_LV_FONT_DEJAVU_40_CYRILLIC 0
#define USE_LV_FONT_SYMBOL_40 0

/*===================
* LV_OBJ SETTINGS
*==================*/
#define LV_OBJ_FREE_NUM_TYPE uint32_t /*Type of free number attribute (comment out disable free number)*/
#define LV_OBJ_FREE_PTR 1 /*Enable the free pointer attribute*/

/*==================
* LV OBJ X USAGE
*================*/
/*
* Documentation of the object types: https://littlevgl.com/object-types
*/

/*****************
* Simple object
*****************/

/*Label (dependencies: -*/
#define USE_LV_LABEL 1
#if USE_LV_LABEL != 0
#define LV_LABEL_SCROLL_SPEED 25 /*Hor, or ver. scroll speed [px/sec] in 'LV_LABEL_LONG_SCROLL/ROLL' mode*/
#endif

/*Image (dependencies: lv_label*/
#define USE_LV_IMG 1

/*Line (dependencies: -*/
#define USE_LV_LINE 1

/*******************
* Container objects
*******************/

/*Container (dependencies: -*/
#define USE_LV_CONT 1

/*Page (dependencies: lv_cont)*/
#define USE_LV_PAGE 1

/*Window (dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page)*/
#define USE_LV_WIN 1

/*Tab (dependencies: lv_page, lv_btnm)*/
#define USE_LV_TABVIEW 1
#if USE_LV_TABVIEW != 0
#define LV_TABVIEW_ANIM_TIME 300 /*Time of slide animation [ms] (0: no animation)*/
#endif

/*************************
* Data visualizer objects
*************************/

/*Bar (dependencies: -)*/
#define USE_LV_BAR 1

/*Line meter (dependencies: *;)*/
#define USE_LV_LMETER 1

/*Gauge (dependencies:bar, lmeter)*/
#define USE_LV_GAUGE 1

/*Chart (dependencies: -)*/
#define USE_LV_CHART 1

/*LED (dependencies: -)*/
#define USE_LV_LED 1

/*Message box (dependencies: lv_rect, lv_btnm, lv_label)*/
#define USE_LV_MBOX 1

/*Text area (dependencies: lv_label, lv_page)*/
#define USE_LV_TA 1
#if USE_LV_TA != 0
#define LV_TA_CURSOR_BLINK_TIME 400 /*ms*/
#define LV_TA_PWD_SHOW_TIME 1500 /*ms*/
#endif

/*************************
* User input objects
*************************/

/*Button (dependencies: lv_cont*/
#define USE_LV_BTN 1

/*Button matrix (dependencies: -)*/
#define USE_LV_BTNM 1

/*Keyboard (dependencies: lv_btnm)*/
#define USE_LV_KB 1

/*Check box (dependencies: lv_btn, lv_label)*/
#define USE_LV_CB 1

/*List (dependencies: lv_page, lv_btn, lv_label, (lv_img optionally for icons ))*/
#define USE_LV_LIST 1
#if USE_LV_LIST != 0
#define LV_LIST_FOCUS_TIME 100 /*Default animation time of focusing to a list element [ms] (0: no animation) */
#endif

/*Drop down list (dependencies: lv_page, lv_label)*/
#define USE_LV_DDLIST 1
#if USE_LV_DDLIST != 0
#define LV_DDLIST_ANIM_TIME 200 /*Open and close default animation time [ms] (0: no animation)*/
#endif

/*Roller (dependencies: lv_ddlist)*/
#define USE_LV_ROLLER 1
#if USE_LV_ROLLER != 0
#define LV_ROLLER_ANIM_TIME 200 /*Focus animation time [ms] (0: no animation)*/
#endif

/*Slider (dependencies: lv_bar)*/
#define USE_LV_SLIDER 1

/*Switch (dependencies: lv_slider)*/
#define USE_LV_SW 1

/*************************
* Non-user section
*************************/
#ifdef _MSC_VER /* Disable warnings for Visual Studio*/
# define _CRT_SECURE_NO_WARNINGS
#endif

#endif /*LV_CONF_H*/

0 comments on commit aebac07

Please sign in to comment.