From 35666f6939a242684cab4fcbf99e6d0bfadd2978 Mon Sep 17 00:00:00 2001 From: Edward Lai Date: Mon, 31 Mar 2025 18:06:59 +0800 Subject: [PATCH 1/7] lvgl demo init commit --- .gitmodules | 3 + Code/picocalc_lvgl_graphics_demo/.gitignore | 1 + .../CMakeLists.txt | 70 ++ .../picocalc_lvgl_graphics_demo/lib/lvgl/lvgl | 1 + .../i2ckbd/CMakeLists.txt | 20 + .../i2ckbd/i2ckbd.c | 57 ++ .../i2ckbd/i2ckbd.h | 19 + .../lcdspi/CMakeLists.txt | 20 + .../lcdspi/fonts/font1.h | 233 ++++++ .../lcdspi/lcdspi.c | 730 ++++++++++++++++++ .../lcdspi/lcdspi.h | 146 ++++ .../lib/lvgl/CMakeLists.txt | 17 + .../picocalc_lvgl_graphics_demo/lib/lvgl/lvgl | 1 + Code/picocalc_lvgl_graphics_demo/lv_conf.h | 148 ++++ .../lv_port_disp_picocalc_ILI9488.c | 122 +++ .../lv_port_disp_picocalc_ILI9488.h | 56 ++ .../lv_port_indev_picocalc_kb.c | 151 ++++ .../lv_port_indev_picocalc_kb.h | 48 ++ Code/picocalc_lvgl_graphics_demo/main.c | 79 ++ .../pico_sdk_import.cmake | 73 ++ 20 files changed, 1995 insertions(+) create mode 100644 .gitmodules create mode 100644 Code/picocalc_lvgl_graphics_demo/.gitignore create mode 100644 Code/picocalc_lvgl_graphics_demo/CMakeLists.txt create mode 160000 Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl create mode 100644 Code/picocalc_lvgl_graphics_demo/i2ckbd/CMakeLists.txt create mode 100644 Code/picocalc_lvgl_graphics_demo/i2ckbd/i2ckbd.c create mode 100644 Code/picocalc_lvgl_graphics_demo/i2ckbd/i2ckbd.h create mode 100644 Code/picocalc_lvgl_graphics_demo/lcdspi/CMakeLists.txt create mode 100644 Code/picocalc_lvgl_graphics_demo/lcdspi/fonts/font1.h create mode 100644 Code/picocalc_lvgl_graphics_demo/lcdspi/lcdspi.c create mode 100644 Code/picocalc_lvgl_graphics_demo/lcdspi/lcdspi.h create mode 100644 Code/picocalc_lvgl_graphics_demo/lib/lvgl/CMakeLists.txt create mode 160000 Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl create mode 100644 Code/picocalc_lvgl_graphics_demo/lv_conf.h create mode 100644 Code/picocalc_lvgl_graphics_demo/lv_port_disp_picocalc_ILI9488.c create mode 100644 Code/picocalc_lvgl_graphics_demo/lv_port_disp_picocalc_ILI9488.h create mode 100644 Code/picocalc_lvgl_graphics_demo/lv_port_indev_picocalc_kb.c create mode 100644 Code/picocalc_lvgl_graphics_demo/lv_port_indev_picocalc_kb.h create mode 100644 Code/picocalc_lvgl_graphics_demo/main.c create mode 100644 Code/picocalc_lvgl_graphics_demo/pico_sdk_import.cmake diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a751b67 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl"] + path = Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl + url = https://github.com/lvgl/lvgl.git diff --git a/Code/picocalc_lvgl_graphics_demo/.gitignore b/Code/picocalc_lvgl_graphics_demo/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/Code/picocalc_lvgl_graphics_demo/CMakeLists.txt b/Code/picocalc_lvgl_graphics_demo/CMakeLists.txt new file mode 100644 index 0000000..0b9dd90 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/CMakeLists.txt @@ -0,0 +1,70 @@ +cmake_minimum_required(VERSION 3.16) + +# Setup board for Pico 1 +set(PICO_BOARD pico) + +# Setup board for Pico 2W +# set(PICO_BOARD pico2) + +include(pico_sdk_import.cmake) + +project(pico_lvgl_display_demo) +set(CMAKE_C_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) + +pico_sdk_init() + +include_directories( + ${CMAKE_CURRENT_LIST_DIR} +) + + + +add_subdirectory(i2ckbd) +add_subdirectory(lcdspi) +add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/lib/lvgl lvgl) + + +add_executable(pico_lvgl_display_demo + main.c + lv_port_indev_picocalc_kb.c + lv_port_disp_picocalc_ILI9488.c +) + +target_compile_options(pico_lvgl_display_demo PRIVATE -DPICOMITE + -DPICO_HEAP_SIZE=0x1000 + -DGUICONTROLS + -DPICO_CORE0_STACK_SIZE=0x1000 + ) + +target_compile_definitions(pico_lvgl_display_demo PRIVATE LV_USE_DEMO_WIDGETS=1) + +target_include_directories(pico_lvgl_display_demo PRIVATE + ${CMAKE_CURRENT_LIST_DIR} + ${CMAKE_CURRENT_LIST_DIR}/lib/lvgl/lvgl + ${CMAKE_CURRENT_LIST_DIR}/lib/lvgl/lvgl/src + ${CMAKE_CURRENT_LIST_DIR}/lib/lvgl/lvgl/demos +) + + +target_link_libraries(pico_lvgl_display_demo + pico_stdlib + hardware_flash + hardware_irq + hardware_adc + hardware_pwm + hardware_i2c + hardware_spi + hardware_dma + hardware_exception + hardware_pio + pico_multicore + i2ckbd + lcdspi + lvgl + lvgl_demos +) + +pico_enable_stdio_usb(pico_lvgl_display_demo 0) +pico_enable_stdio_uart(pico_lvgl_display_demo 1) +pico_add_extra_outputs(pico_lvgl_display_demo) diff --git a/Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl b/Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl new file mode 160000 index 0000000..b88fb67 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl @@ -0,0 +1 @@ +Subproject commit b88fb674d3e54e27d05ef7595a77052c20453698 diff --git a/Code/picocalc_lvgl_graphics_demo/i2ckbd/CMakeLists.txt b/Code/picocalc_lvgl_graphics_demo/i2ckbd/CMakeLists.txt new file mode 100644 index 0000000..d7d7a22 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/i2ckbd/CMakeLists.txt @@ -0,0 +1,20 @@ +# Generated Cmake Pico project file + +cmake_minimum_required(VERSION 3.13) + +set(CMAKE_C_STANDARD 11) + +project(i2ckbd + VERSION 0.0.1 + DESCRIPTION "i2ckbd for picocalc." + ) + +add_library(i2ckbd INTERFACE) + +target_sources(i2ckbd INTERFACE + i2ckbd.c + ) + +target_link_libraries(i2ckbd INTERFACE pico_stdlib hardware_spi hardware_i2c) + +target_include_directories(i2ckbd INTERFACE ${CMAKE_CURRENT_LIST_DIR}) \ No newline at end of file diff --git a/Code/picocalc_lvgl_graphics_demo/i2ckbd/i2ckbd.c b/Code/picocalc_lvgl_graphics_demo/i2ckbd/i2ckbd.c new file mode 100644 index 0000000..a403308 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/i2ckbd/i2ckbd.c @@ -0,0 +1,57 @@ +#include +#include +#include "i2ckbd.h" + +static uint8_t i2c_inited = 0; + +void init_i2c_kbd() { + gpio_set_function(I2C_KBD_SCL, GPIO_FUNC_I2C); + gpio_set_function(I2C_KBD_SDA, GPIO_FUNC_I2C); + i2c_init(I2C_KBD_MOD, I2C_KBD_SPEED); + gpio_pull_up(I2C_KBD_SCL); + gpio_pull_up(I2C_KBD_SDA); + + i2c_inited = 1; +} + +int read_i2c_kbd() { + int retval; + static int ctrlheld = 0; + uint16_t buff = 0; + unsigned char msg[2]; + int c = -1; + msg[0] = 0x09; + + if (i2c_inited == 0) return -1; + + retval = i2c_write_timeout_us(I2C_KBD_MOD, I2C_KBD_ADDR, msg, 1, false, 500000); + if (retval == PICO_ERROR_GENERIC || retval == PICO_ERROR_TIMEOUT) { + printf("i2c write error\n"); + return -1; + } + + retval = i2c_read_timeout_us(I2C_KBD_MOD, I2C_KBD_ADDR, (unsigned char *) &buff, 2, false, 500000); + if (retval == PICO_ERROR_GENERIC || retval == PICO_ERROR_TIMEOUT) { + printf("i2c read error read\n"); + return -1; + } + + if (buff != 0) { + if (buff == 0x7e03)ctrlheld = 0; + else if (buff == 0x7e02) { + ctrlheld = 1; + } else if ((buff & 0xff) == 1) {//pressed + c = buff >> 8; + int realc = -1; + switch (c) { + default: + realc = c; + break; + } + c = realc; + if (c >= 'a' && c <= 'z' && ctrlheld)c = c - 'a' + 1; + } + return c; + } + return 0; +} \ No newline at end of file diff --git a/Code/picocalc_lvgl_graphics_demo/i2ckbd/i2ckbd.h b/Code/picocalc_lvgl_graphics_demo/i2ckbd/i2ckbd.h new file mode 100644 index 0000000..0281abd --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/i2ckbd/i2ckbd.h @@ -0,0 +1,19 @@ +#ifndef I2C_KEYBOARD_H +#define I2C_KEYBOARD_H +#include +#include +#include +#include + +#define I2C_KBD_MOD i2c1 +#define I2C_KBD_SDA 6 +#define I2C_KBD_SCL 7 + +#define I2C_KBD_SPEED 400000 // if dual i2c, then the speed of keyboard i2c should be 10khz + +#define I2C_KBD_ADDR 0x1F + +void init_i2c_kbd(); +int read_i2c_kbd(); + +#endif \ No newline at end of file diff --git a/Code/picocalc_lvgl_graphics_demo/lcdspi/CMakeLists.txt b/Code/picocalc_lvgl_graphics_demo/lcdspi/CMakeLists.txt new file mode 100644 index 0000000..35f4078 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lcdspi/CMakeLists.txt @@ -0,0 +1,20 @@ +# Generated Cmake Pico project file + +cmake_minimum_required(VERSION 3.13) + +set(CMAKE_C_STANDARD 11) + +project(lcdspi + VERSION 0.0.1 + DESCRIPTION "lcdspi for rp2040." + ) + +add_library(lcdspi INTERFACE) + +target_sources(lcdspi INTERFACE + lcdspi.c + ) + +target_link_libraries(lcdspi INTERFACE pico_stdlib hardware_spi) + +target_include_directories(lcdspi INTERFACE ${CMAKE_CURRENT_LIST_DIR}) \ No newline at end of file diff --git a/Code/picocalc_lvgl_graphics_demo/lcdspi/fonts/font1.h b/Code/picocalc_lvgl_graphics_demo/lcdspi/fonts/font1.h new file mode 100644 index 0000000..749ad88 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lcdspi/fonts/font1.h @@ -0,0 +1,233 @@ +// font1.c +// Font type : Full (223 characters) +// Font size : 8x12 pixels +// Memory usage : 2680 bytes +// Font adapted from: http://www.rinkydinkelectronics.com/r_fonts.php + +const unsigned char font1[] ={ + 0x08,0x0C,0x20,0xE0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(32) + 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x10,0x00,0x00, // Chr$(33) ! + 0x00,0x24,0x24,0x24,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(34) " + 0x00,0x24,0x24,0x7E,0x24,0x24,0x24,0x7E,0x24,0x24,0x00,0x00, // Chr$(35) # + 0x00,0x10,0x3C,0x52,0x50,0x3C,0x12,0x52,0x3C,0x10,0x00,0x00, // Chr$(36) $ + 0x00,0x00,0x62,0x62,0x04,0x08,0x10,0x20,0x46,0x46,0x00,0x00, // Chr$(37) % + 0x00,0x00,0x38,0x44,0x44,0x38,0x4A,0x44,0x4C,0x3A,0x00,0x00, // Chr$(38) & + 0x00,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(39) ' + 0x00,0x0C,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x0C,0x00, // Chr$(40) ( + 0x00,0x30,0x08,0x04,0x04,0x04,0x04,0x04,0x04,0x08,0x30,0x00, // Chr$(41) ) + 0x00,0x42,0x24,0x18,0x7E,0x18,0x24,0x42,0x00,0x00,0x00,0x00, // Chr$(42) * + 0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x00,0x00,0x00, // Chr$(43) + + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x08,0x10,0x00, // Chr$(44) , + 0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(45) - + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00, // Chr$(46) . + 0x00,0x02,0x02,0x04,0x04,0x08,0x10,0x20,0x20,0x40,0x40,0x00, // Chr$(47) / + 0x00,0x3C,0x46,0x4E,0x4A,0x5A,0x52,0x72,0x62,0x3C,0x00,0x00, // Chr$(48) 0 + 0x00,0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00, // Chr$(49) 1 + 0x00,0x3C,0x42,0x02,0x02,0x04,0x08,0x10,0x20,0x7E,0x00,0x00, // Chr$(50) 2 + 0x00,0x3C,0x42,0x02,0x02,0x1C,0x02,0x02,0x42,0x3C,0x00,0x00, // Chr$(51) 3 + 0x00,0x04,0x44,0x44,0x44,0x7E,0x04,0x04,0x04,0x04,0x00,0x00, // Chr$(52) 4 + 0x00,0x7E,0x40,0x40,0x7C,0x02,0x02,0x02,0x42,0x3C,0x00,0x00, // Chr$(53) 5 + 0x00,0x18,0x20,0x40,0x40,0x7C,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(54) 6 + 0x00,0x7E,0x42,0x02,0x02,0x04,0x08,0x10,0x10,0x10,0x00,0x00, // Chr$(55) 7 + 0x00,0x3C,0x42,0x42,0x42,0x3C,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(56) 8 + 0x00,0x3C,0x42,0x42,0x42,0x3E,0x02,0x04,0x08,0x30,0x00,0x00, // Chr$(57) 9 + 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x00, // Chr$(58) : + 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x08,0x10,0x00, // Chr$(59) ; + 0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // Chr$(60) < + 0x00,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00, // Chr$(61) = + 0x00,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x00,0x00, // Chr$(62) > + 0x00,0x3C,0x42,0x02,0x06,0x08,0x10,0x10,0x00,0x10,0x10,0x00, // Chr$(63) ? + 0x00,0x3C,0x42,0x42,0x5E,0x56,0x5C,0x40,0x40,0x3C,0x00,0x00, // Chr$(64) @ + 0x00,0x18,0x24,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x00,0x00, // Chr$(65) A + 0x00,0x7C,0x42,0x42,0x42,0x7C,0x42,0x42,0x42,0x7C,0x00,0x00, // Chr$(66) B + 0x00,0x3C,0x42,0x40,0x40,0x40,0x40,0x40,0x42,0x3C,0x00,0x00, // Chr$(67) C + 0x00,0x78,0x44,0x42,0x42,0x42,0x42,0x42,0x44,0x78,0x00,0x00, // Chr$(68) D + 0x00,0x7E,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7E,0x00,0x00, // Chr$(69) E + 0x00,0x7E,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x40,0x00,0x00, // Chr$(70) F + 0x00,0x3C,0x42,0x40,0x40,0x40,0x4E,0x42,0x42,0x3E,0x00,0x00, // Chr$(71) G + 0x00,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0x00,0x00, // Chr$(72) H + 0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00, // Chr$(73) I + 0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x42,0x3C,0x00,0x00, // Chr$(74) J + 0x00,0x42,0x44,0x48,0x50,0x60,0x50,0x48,0x44,0x42,0x00,0x00, // Chr$(75) K + 0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7E,0x00,0x00, // Chr$(76) L + 0x00,0x42,0x66,0x66,0x5A,0x42,0x42,0x42,0x42,0x42,0x00,0x00, // Chr$(77) M + 0x00,0x42,0x62,0x62,0x52,0x5A,0x4A,0x46,0x46,0x42,0x00,0x00, // Chr$(78) N + 0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(79) O + 0x00,0x7C,0x42,0x42,0x42,0x7C,0x40,0x40,0x40,0x40,0x00,0x00, // Chr$(80) P + 0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x4A,0x44,0x3A,0x00,0x00, // Chr$(81) Q + 0x00,0x7C,0x42,0x42,0x42,0x7C,0x48,0x44,0x42,0x42,0x00,0x00, // Chr$(82) R + 0x00,0x3C,0x42,0x40,0x60,0x18,0x04,0x02,0x42,0x3C,0x00,0x00, // Chr$(83) S + 0x00,0x7E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(84) T + 0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(85) U + 0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x24,0x18,0x00,0x00, // Chr$(86) V + 0x00,0x42,0x42,0x42,0x42,0x42,0x5A,0x24,0x24,0x24,0x00,0x00, // Chr$(87) W + 0x00,0x42,0x42,0x24,0x24,0x18,0x24,0x24,0x42,0x42,0x00,0x00, // Chr$(88) X + 0x00,0x44,0x44,0x44,0x44,0x38,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(89) Y + 0x00,0x7E,0x02,0x02,0x04,0x18,0x20,0x40,0x40,0x7E,0x00,0x00, // Chr$(90) Z + 0x00,0x3C,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x00,0x00, // Chr$(91) [ + 0x00,0x40,0x40,0x20,0x20,0x10,0x08,0x04,0x04,0x02,0x02,0x00, // Chr$(92) backslash + 0x00,0x3C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x3C,0x00,0x00, // Chr$(93) ] + 0x00,0x10,0x28,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(94) ^ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00, // Chr$(95) _ + 0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(96) ` + 0x00,0x00,0x00,0x00,0x3C,0x02,0x3E,0x42,0x42,0x3E,0x00,0x00, // Chr$(97) a + 0x00,0x40,0x40,0x40,0x7C,0x42,0x42,0x42,0x42,0x7C,0x00,0x00, // Chr$(98) b + 0x00,0x00,0x00,0x00,0x3C,0x40,0x40,0x40,0x40,0x3C,0x00,0x00, // Chr$(99) c + 0x00,0x02,0x02,0x02,0x3E,0x42,0x42,0x42,0x42,0x3E,0x00,0x00, // Chr$(100) d + 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x7C,0x40,0x3C,0x00,0x00, // Chr$(101) e + 0x00,0x00,0x1C,0x20,0x20,0x7C,0x20,0x20,0x20,0x20,0x00,0x00, // Chr$(102) f + 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x3E,0x02,0x3C,0x00, // Chr$(103) g + 0x00,0x40,0x40,0x40,0x7C,0x42,0x42,0x42,0x42,0x42,0x00,0x00, // Chr$(104) h + 0x00,0x00,0x10,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(105) i + 0x00,0x00,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x44,0x38,0x00, // Chr$(106) j + 0x00,0x40,0x40,0x40,0x44,0x48,0x70,0x50,0x48,0x44,0x00,0x00, // Chr$(107) k + 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x00,0x00, // Chr$(108) l + 0x00,0x00,0x00,0x00,0x74,0x4A,0x4A,0x42,0x42,0x42,0x00,0x00, // Chr$(109) m + 0x00,0x00,0x00,0x00,0x78,0x44,0x44,0x44,0x44,0x44,0x00,0x00, // Chr$(110) n + 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(111) o + 0x00,0x00,0x00,0x00,0x7C,0x42,0x42,0x42,0x7C,0x40,0x40,0x00, // Chr$(112) p + 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x3C,0x06,0x00, // Chr$(113) q + 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x40,0x40,0x40,0x00,0x00, // Chr$(114) r + 0x00,0x00,0x00,0x00,0x1E,0x20,0x1C,0x02,0x02,0x3C,0x00,0x00, // Chr$(115) s + 0x00,0x00,0x00,0x10,0x7C,0x10,0x10,0x10,0x10,0x08,0x00,0x00, // Chr$(116) t + 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(117) u + 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00, // Chr$(118) v + 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x5A,0x24,0x24,0x00,0x00, // Chr$(119) w + 0x00,0x00,0x00,0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00,0x00, // Chr$(120) x + 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x3E,0x02,0x42,0x3C,0x00, // Chr$(121) y + 0x00,0x00,0x00,0x00,0x7E,0x04,0x08,0x10,0x20,0x7E,0x00,0x00, // Chr$(122) z + 0x00,0x1C,0x20,0x10,0x10,0x60,0x10,0x10,0x20,0x1C,0x00,0x00, // Chr$(123) { + 0x00,0x10,0x10,0x10,0x10,0x00,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(124) | + 0x00,0x38,0x04,0x08,0x08,0x06,0x08,0x08,0x04,0x38,0x00,0x00, // Chr$(125) } + 0x00,0x22,0x5A,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(126) ~ + 0x00,0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x7E,0x00,0x00,0x00, // Chr$(127)  + 0x00,0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xFF,0x00, // Chr$(128) € + 0x00,0xFF,0x81,0x81,0x85,0x85,0xA9,0x91,0x81,0x81,0xFF,0x00, // Chr$(129)  + 0x00,0xFF,0x81,0xA5,0xA5,0x99,0x99,0xA5,0xA5,0x81,0xFF,0x00, // Chr$(130) ‚ + 0x00,0xFF,0x81,0x81,0x81,0x99,0x99,0x81,0x81,0x81,0xFF,0x00, // Chr$(131) ƒ + 0x00,0xFF,0x81,0x81,0x81,0x81,0x81,0xBD,0x81,0x81,0xFF,0x00, // Chr$(132) „ + 0x00,0xFF,0x81,0x99,0x99,0x99,0x99,0x81,0x99,0x81,0xFF,0x00, // Chr$(133) … + 0x00,0xFF,0x81,0x99,0xA5,0x89,0x89,0x81,0x89,0x81,0xFF,0x00, // Chr$(134) † + 0x00,0x3E,0x7F,0x7F,0x6B,0x7F,0x6B,0x77,0x7F,0x3E,0x00,0x00, // Chr$(135) ‡ + 0x00,0x3E,0x63,0x41,0x55,0x41,0x55,0x49,0x63,0x3E,0x00,0x00, // Chr$(136) ˆ + 0x00,0x00,0x08,0x1C,0x3E,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x00, // Chr$(137) ‰ + 0x00,0x00,0x00,0x18,0x18,0x66,0x66,0x18,0x18,0x3C,0x00,0x00, // Chr$(138) Š + 0x00,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x18,0x3C,0x00,0x00, // Chr$(139) ‹ + 0x00,0x00,0x36,0x3E,0x7F,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x00, // Chr$(140) Œ + 0xFF,0xFF,0xC3,0x81,0x99,0xBD,0xBD,0x99,0x81,0xC3,0xFF,0xFF, // Chr$(141)  + 0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00, // Chr$(142) Ž + 0x00,0x1F,0x19,0x1F,0x18,0x18,0x18,0x38,0x78,0x30,0x00,0x00, // Chr$(143)  + 0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00, // Chr$(144)  + 0x00,0x00,0x00,0x24,0x66,0xFF,0xFF,0x66,0x24,0x00,0x00,0x00, // Chr$(145) ‘ + 0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00, // Chr$(146) ’ + 0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00, // Chr$(147) “ + 0x00,0x00,0x00,0x08,0x0C,0xFE,0xFE,0x0C,0x08,0x00,0x00,0x00, // Chr$(148) ” + 0x00,0x00,0x00,0x10,0x30,0x7F,0x7F,0x30,0x10,0x00,0x00,0x00, // Chr$(149) • + 0x00,0x00,0x08,0x2A,0x49,0x49,0x49,0x41,0x41,0x3E,0x00,0x00, // Chr$(150) – + 0x1C,0x22,0x41,0x5D,0x49,0x2A,0x1C,0x00,0x1C,0x00,0x1C,0x00, // Chr$(151) — + 0x18,0x18,0x00,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x18,0x00,0x00, // Chr$(152) ˜ + 0xF8,0x8C,0xBE,0x8F,0xE3,0x85,0xF5,0xF5,0xF3,0xFF,0x00,0x00, // Chr$(153) ™ + 0x00,0x18,0x24,0x42,0x42,0x42,0x7E,0x7E,0x24,0x24,0x24,0x24, // Chr$(154) š + 0x00,0x18,0x3C,0x7E,0x7E,0x7E,0x7E,0x7E,0x24,0x24,0x24,0x24, // Chr$(155) › + 0x00,0x20,0x64,0xE2,0xE9,0xE5,0xE9,0xE2,0x64,0x20,0x00,0x00, // Chr$(156) œ + 0x00,0x3F,0x4B,0x4B,0x4B,0x3B,0x0B,0x0B,0x0B,0x0B,0x00,0x00, // Chr$(157)  + 0x00,0x7E,0x44,0x48,0x6E,0x24,0x28,0x50,0x60,0x40,0x00,0x00, // Chr$(158) ž + 0x00,0x00,0x21,0x36,0x1E,0x3C,0xFE,0x1B,0x10,0x10,0x00,0x00, // Chr$(159) Ÿ + 0x00,0x3C,0x42,0x81,0xA5,0xA5,0xA5,0x81,0x42,0x3C,0x00,0x00, // Chr$(160)   + 0x00,0x3C,0x42,0x91,0x99,0x9D,0x99,0x91,0x42,0x3C,0x00,0x00, // Chr$(161) ¡ + 0x00,0x3C,0x42,0x81,0xBD,0xBD,0xBD,0x81,0x42,0x3C,0x00,0x00, // Chr$(162) ¢ + 0x00,0x00,0x38,0x44,0x44,0x44,0x3C,0x06,0x03,0x01,0x00,0x00, // Chr$(163) £ + 0x00,0x0C,0x10,0x20,0x7C,0x20,0x20,0x7C,0x20,0x10,0x0C,0x00, // Chr$(164) ¤ + 0x00,0x00,0x1A,0x26,0x42,0x81,0x42,0x42,0x42,0x7E,0x00,0x00, // Chr$(165) ¥ + 0x00,0x00,0x3C,0x24,0xFF,0x42,0x42,0x42,0x42,0x7E,0x00,0x00, // Chr$(166) ¦ + 0x00,0x18,0x66,0x42,0x81,0xC3,0xC3,0x42,0x00,0x00,0x00,0x00, // Chr$(167) § + 0x00,0x00,0xFF,0x81,0x81,0x81,0x81,0xFF,0x18,0x3C,0x00,0x00, // Chr$(168) ¨ + 0x00,0x18,0x3C,0x3C,0x3C,0x3C,0x18,0x00,0x18,0x18,0x00,0x00, // Chr$(169) © + 0x28,0x56,0x41,0x83,0xFE,0x0C,0x10,0x10,0x20,0x00,0x00,0x00, // Chr$(170) ª + 0x00,0x30,0x48,0x48,0x48,0x4A,0x32,0x02,0x02,0x02,0x02,0x00, // Chr$(171) « + 0x18,0x24,0x66,0x5A,0x66,0x18,0x38,0x18,0x38,0x18,0x38,0x00, // Chr$(172) ¬ + 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF, // Chr$(173) ­ + 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, // Chr$(174) ® + 0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33, // Chr$(175) ¯ + 0x24,0x92,0x49,0x24,0x92,0x49,0x24,0x92,0x49,0x24,0x92,0x49, // Chr$(176) ° + 0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA, // Chr$(177) ± + 0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6, // Chr$(178) ² + 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(179) ³ + 0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(180) ´ + 0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0xF8,0x18,0x18,0x18,0x18, // Chr$(181) µ + 0x66,0x66,0x66,0x66,0x66,0xE6,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(182) ¶ + 0x00,0x00,0x00,0x00,0x00,0xFE,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(183) · + 0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0xF8,0x18,0x18,0x18,0x18, // Chr$(184) ¸ + 0x66,0x66,0x66,0x66,0xE6,0x06,0x06,0xE6,0x66,0x66,0x66,0x66, // Chr$(185) ¹ + 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(186) º + 0x00,0x00,0x00,0x00,0xFE,0x06,0x06,0xE6,0x66,0x66,0x66,0x66, // Chr$(187) » + 0x66,0x66,0x66,0x66,0xE6,0x06,0x06,0xFE,0x00,0x00,0x00,0x00, // Chr$(188) ¼ + 0x66,0x66,0x66,0x66,0x66,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(189) ½ + 0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0xF8,0x00,0x00,0x00,0x00, // Chr$(190) ¾ + 0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(191) ¿ + 0x18,0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(192) À + 0x18,0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(193) Á + 0x00,0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(194)  + 0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(195) à + 0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(196) Ä + 0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(197) Å + 0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x1F,0x18,0x18,0x18,0x18, // Chr$(198) Æ + 0x66,0x66,0x66,0x66,0x66,0x67,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(199) Ç + 0x66,0x66,0x66,0x66,0x67,0x60,0x60,0x7F,0x00,0x00,0x00,0x00, // Chr$(200) È + 0x00,0x00,0x00,0x00,0x7F,0x60,0x60,0x67,0x66,0x66,0x66,0x66, // Chr$(201) É + 0x66,0x66,0x66,0x66,0xE7,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, // Chr$(202) Ê + 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xE7,0x66,0x66,0x66,0x66, // Chr$(203) Ë + 0x66,0x66,0x66,0x66,0x67,0x60,0x60,0x67,0x66,0x66,0x66,0x66, // Chr$(204) Ì + 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, // Chr$(205) Í + 0x66,0x66,0x66,0x66,0xE7,0x00,0x00,0xE7,0x66,0x66,0x66,0x66, // Chr$(206) Î + 0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, // Chr$(207) Ï + 0x66,0x66,0x66,0x66,0x66,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(208) Ð + 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x18,0x18,0x18,0x18, // Chr$(209) Ñ + 0x00,0x00,0x00,0x00,0x00,0xFF,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(210) Ò + 0x66,0x66,0x66,0x66,0x66,0x7F,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(211) Ó + 0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x1F,0x00,0x00,0x00,0x00, // Chr$(212) Ô + 0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x1F,0x18,0x18,0x18,0x18, // Chr$(213) Õ + 0x00,0x00,0x00,0x00,0x00,0x7F,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(214) Ö + 0x66,0x66,0x66,0x66,0x66,0xE7,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(215) × + 0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0xFF,0x18,0x18,0x18,0x18, // Chr$(216) Ø + 0x18,0x18,0x18,0x18,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(217) Ù + 0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(218) Ú + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // Chr$(219) Û + 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // Chr$(220) Ü + 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, // Chr$(221) Ý + 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, // Chr$(222) Þ + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(223) ß + 0x00,0x00,0x00,0x00,0x3A,0x44,0x44,0x44,0x44,0x3A,0x00,0x00, // Chr$(224) à + 0x00,0x38,0x44,0x44,0x58,0x44,0x44,0x44,0x78,0x40,0x40,0x00, // Chr$(225) á + 0x00,0x00,0x7E,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, // Chr$(226) â + 0x00,0x00,0x00,0x00,0x7C,0x28,0x28,0x28,0x28,0x68,0x00,0x00, // Chr$(227) ã + 0x00,0x7E,0x42,0x20,0x10,0x08,0x10,0x20,0x42,0x7E,0x00,0x00, // Chr$(228) ä + 0x00,0x00,0x00,0x00,0x3E,0x48,0x44,0x44,0x44,0x38,0x00,0x00, // Chr$(229) å + 0x00,0x00,0x00,0x24,0x24,0x24,0x24,0x3C,0x42,0x40,0x80,0x00, // Chr$(230) æ + 0x00,0x00,0x00,0x00,0x44,0xA8,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(231) ç + 0x00,0x00,0x7C,0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x7C,0x00, // Chr$(232) è + 0x00,0x00,0x18,0x24,0x42,0x42,0x7E,0x42,0x42,0x24,0x18,0x00, // Chr$(233) é + 0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x6C,0x28,0x6C,0x00,0x00, // Chr$(234) ê + 0x00,0x00,0x00,0x1C,0x20,0x38,0x44,0x44,0x44,0x38,0x00,0x00, // Chr$(235) ë + 0x00,0x00,0x00,0x00,0x00,0x6C,0x92,0x92,0x6C,0x00,0x00,0x00, // Chr$(236) ì + 0x00,0x00,0x00,0x00,0x02,0x6C,0x9A,0xB2,0x6C,0x80,0x00,0x00, // Chr$(237) í + 0x00,0x18,0x20,0x40,0x40,0x78,0x40,0x40,0x20,0x18,0x00,0x00, // Chr$(238) î + 0x00,0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x00,0x00, // Chr$(239) ï + 0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x00, // Chr$(240) ð + 0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x7C,0x00,0x00,0x00, // Chr$(241) ñ + 0x00,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x00,0x7E,0x00,0x00, // Chr$(242) ò + 0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,0x7E,0x00,0x00, // Chr$(243) ó + 0x40,0x41,0x42,0x44,0x48,0x10,0x26,0x49,0x02,0x04,0x0F,0x00, // Chr$(244) ô + 0x40,0x41,0x42,0x44,0x48,0x12,0x26,0x4A,0x0F,0x02,0x02,0x00, // Chr$(245) õ + 0x00,0x00,0x18,0x18,0x00,0x7E,0x00,0x18,0x18,0x00,0x00,0x00, // Chr$(246) ö + 0x00,0x00,0x22,0x52,0x4C,0x00,0x22,0x52,0x4C,0x00,0x00,0x00, // Chr$(247) ÷ + 0x00,0x20,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(248) ø + 0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(249) ù + 0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(250) ú + 0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x48,0x28,0x18,0x08,0x00, // Chr$(251) û + 0x00,0x3C,0x12,0x12,0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(252) ü + 0x00,0x18,0x24,0x08,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(253) ý + 0x00,0x00,0x00,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x00,0x00,0x00, // Chr$(254) þ + 0x00,0x00,0x10,0x54,0x28,0xC6,0x28,0x54,0x10,0x00,0x00,0x00 // Chr$(255) ÿ +}; diff --git a/Code/picocalc_lvgl_graphics_demo/lcdspi/lcdspi.c b/Code/picocalc_lvgl_graphics_demo/lcdspi/lcdspi.c new file mode 100644 index 0000000..a3da45e --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lcdspi/lcdspi.c @@ -0,0 +1,730 @@ +#include +#include +#include + +#include +#include "hardware/timer.h" +#include +#include + +#include "lcdspi.h" +#include "i2ckbd.h" +#include "pico/multicore.h" +////////////////////**************************************fonts + +#include "fonts/font1.h" +unsigned char *MainFont = (unsigned char *) font1; + +static int gui_fcolour; +static int gui_bcolour; +static short current_x = 0, current_y = 0; // the current default position for the next char to be written +static short gui_font_width, gui_font_height; +static short hres = 320; // Horizontal resolution for ILI9488 +static short vres = 320; // Vertical resolution for ILI9488 +static char s_height; +static char s_width; +int lcd_char_pos = 0; +unsigned char lcd_buffer[320 * 3] = {0};// 1440 = 480*3, 320*3 = 960 + +void __not_in_flash_func(spi_write_fast)(spi_inst_t *spi, const uint8_t *src, size_t len) { + // Write to TX FIFO whilst ignoring RX, then clean up afterward. When RX + // is full, PL022 inhibits RX pushes, and sets a sticky flag on + // push-on-full, but continues shifting. Safe if SSPIMSC_RORIM is not set. + for (size_t i = 0; i < len; ++i) { + while (!spi_is_writable(spi)) + tight_loop_contents(); + spi_get_hw(spi)->dr = (uint32_t) src[i]; + } +} + +void __not_in_flash_func(spi_finish)(spi_inst_t *spi) { + // Drain RX FIFO, then wait for shifting to finish (which may be *after* + // TX FIFO drains), then drain RX FIFO again + while (spi_is_readable(spi)) + (void) spi_get_hw(spi)->dr; + while (spi_get_hw(spi)->sr & SPI_SSPSR_BSY_BITS) + tight_loop_contents(); + while (spi_is_readable(spi)) + (void) spi_get_hw(spi)->dr; + + // Don't leave overrun flag set + spi_get_hw(spi)->icr = SPI_SSPICR_RORIC_BITS; +} + +void set_font() { + + gui_font_width = MainFont[0]; + gui_font_height = MainFont[1]; + + s_height = vres / gui_font_height; + s_width = hres / gui_font_width; +} + +void define_region_spi(int xstart, int ystart, int xend, int yend, int rw) { + unsigned char coord[4]; + lcd_spi_lower_cs(); + gpio_put(Pico_LCD_DC, 0);//gpio_put(Pico_LCD_DC,0); + hw_send_spi(&(uint8_t) {ILI9341_COLADDRSET}, 1); + gpio_put(Pico_LCD_DC, 1); + coord[0] = xstart >> 8; + coord[1] = xstart; + coord[2] = xend >> 8; + coord[3] = xend; + hw_send_spi(coord, 4);// HAL_SPI_Transmit(&hspi3,coord,4,500); + gpio_put(Pico_LCD_DC, 0); + hw_send_spi(&(uint8_t) {ILI9341_PAGEADDRSET}, 1); + gpio_put(Pico_LCD_DC, 1); + coord[0] = ystart >> 8; + coord[1] = ystart; + coord[2] = yend >> 8; + coord[3] = yend; + hw_send_spi(coord, 4);// HAL_SPI_Transmit(&hspi3,coord,4,500); + gpio_put(Pico_LCD_DC, 0); + if (rw) { + hw_send_spi(&(uint8_t) {ILI9341_MEMORYWRITE}, 1); + } else { + hw_send_spi(&(uint8_t) {ILI9341_RAMRD}, 1); + } + gpio_put(Pico_LCD_DC, 1); +} + +void read_buffer_spi(int x1, int y1, int x2, int y2, unsigned char *p) { + int r, N, t; + unsigned char h, l; +// PInt(x1);PIntComma(y1);PIntComma(x2);PIntComma(y2);PRet(); + // make sure the coordinates are kept within the display area + if (x2 <= x1) { + t = x1; + x1 = x2; + x2 = t; + } + if (y2 <= y1) { + t = y1; + y1 = y2; + y2 = t; + } + if (x1 < 0) x1 = 0; + if (x1 >= hres) x1 = hres - 1; + if (x2 < 0) x2 = 0; + if (x2 >= hres) x2 = hres - 1; + if (y1 < 0) y1 = 0; + if (y1 >= vres) y1 = vres - 1; + if (y2 < 0) y2 = 0; + if (y2 >= vres) y2 = vres - 1; + N = (x2 - x1 + 1) * (y2 - y1 + 1) * 3; + + define_region_spi(x1, y1, x2, y2, 0); + + //spi_init(Pico_LCD_SPI_MOD, 6000000); + spi_set_baudrate(Pico_LCD_SPI_MOD, 6000000); + //spi_read_data_len(p, 1); + hw_read_spi((uint8_t *) p, 1); + r = 0; + hw_read_spi((uint8_t *) p, N); + gpio_put(Pico_LCD_DC, 0); + lcd_spi_raise_cs(); + spi_set_baudrate(Pico_LCD_SPI_MOD, LCD_SPI_SPEED); + r = 0; + + while (N) { + h = (uint8_t) p[r + 2]; + l = (uint8_t) p[r]; + p[r] = h;//(h & 0xF8); + p[r + 2] = l;//(l & 0xF8); + r += 3; + N -= 3; + } +} + +void draw_buffer_spi(int x1, int y1, int x2, int y2, unsigned char *p) { + int i, t; + unsigned char q[3]; + + // Boundary checking + if (x2 <= x1) { + t = x1; + x1 = x2; + x2 = t; + } + if (y2 <= y1) { + t = y1; + y1 = y2; + y2 = t; + } + if (x1 < 0) x1 = 0; + if (x1 >= hres) x1 = hres - 1; + if (x2 < 0) x2 = 0; + if (x2 >= hres) x2 = hres - 1; + if (y1 < 0) y1 = 0; + if (y1 >= vres) y1 = vres - 1; + if (y2 < 0) y2 = 0; + if (y2 >= vres) y2 = vres - 1; + + // Calculate total number of pixels + int pixelCount = (x2 - x1 + 1) * (y2 - y1 + 1); + uint16_t *pixelBuffer = (uint16_t *)p; + + define_region_spi(x1, y1, x2, y2, 1); + + for (i = 0; i < pixelCount; i++) { + uint16_t pixel = pixelBuffer[i]; + + // Extract RGB565 components + uint8_t r5 = (pixel >> 11) & 0x1F; + uint8_t g6 = (pixel >> 5) & 0x3F; + uint8_t b5 = pixel & 0x1F; + + // Convert to 8-bit values (scaling approximation) + uint8_t r8 = (r5 << 3) | (r5 >> 2); + uint8_t g8 = (g6 << 2) | (g6 >> 4); + uint8_t b8 = (b5 << 3) | (b5 >> 2); + +#ifdef ILI9488 + // Convert each RGB565 pixel to RGB888 (3 bytes per pixel) for ILI9488 + uint8_t rgb[3]; + rgb[0] = r8; // Red + rgb[1] = g8; // Green + rgb[2] = b8; // Blue + hw_send_spi(rgb, 3); +#else + // For other controllers or if using 16-bit mode, retain the original conversion + hw_send_spi(q, 2); +#endif + } + + lcd_spi_raise_cs(); +} + +//Print the bitmap of a char on the video output +// x, y - the top left of the char +// width, height - size of the char's bitmap +// scale - how much to scale the bitmap +// fc, bc - foreground and background colour +// bitmap - pointer to the bitmap +void draw_bitmap_spi(int x1, int y1, int width, int height, int scale, int fc, int bc, unsigned char *bitmap) { + int i, j, k, m, n; + char f[3], b[3]; + int vertCoord, horizCoord, XStart, XEnd, YEnd; + char *p = 0; + union colourmap { + char rgbbytes[4]; + unsigned int rgb; + } c; + + if (x1 >= hres || y1 >= vres || x1 + width * scale < 0 || y1 + height * scale < 0)return; + // adjust when part of the bitmap is outside the displayable coordinates + vertCoord = y1; + if (y1 < 0) y1 = 0; // the y coord is above the top of the screen + XStart = x1; + if (XStart < 0) XStart = 0; // the x coord is to the left of the left marginn + XEnd = x1 + (width * scale) - 1; + if (XEnd >= hres) XEnd = hres - 1; // the width of the bitmap will extend beyond the right margin + YEnd = y1 + (height * scale) - 1; + if (YEnd >= vres) YEnd = vres - 1;// the height of the bitmap will extend beyond the bottom margin + +#ifdef ILI9488 + // convert the colours to 565 format + f[0] = (fc >> 16); + f[1] = (fc >> 8) & 0xFF; + f[2] = (fc & 0xFF); + b[0] = (bc >> 16); + b[1] = (bc >> 8) & 0xFF; + b[2] = (bc & 0xFF); + +#endif + //printf("draw_bitmap_spi-> XStart %d, y1 %d, XEnd %d, YEnd %d\n",XStart,y1,XEnd,YEnd); + define_region_spi(XStart, y1, XEnd, YEnd, 1); + + n = 0; + for (i = 0; i < height; i++) { // step thru the font scan line by line + for (j = 0; j < scale; j++) { // repeat lines to scale the font + if (vertCoord++ < 0) continue; // we are above the top of the screen + if (vertCoord > vres) { // we have extended beyond the bottom of the screen + lcd_spi_raise_cs(); //set CS high + return; + } + horizCoord = x1; + for (k = 0; k < width; k++) { // step through each bit in a scan line + for (m = 0; m < scale; m++) { // repeat pixels to scale in the x axis + if (horizCoord++ < 0) continue; // we have not reached the left margin + if (horizCoord > hres) continue; // we are beyond the right margin + if ((bitmap[((i * width) + k) / 8] >> (((height * width) - ((i * width) + k) - 1) % 8)) & 1) { + hw_send_spi((uint8_t *) &f, 3); + } else { + if (bc == -1) { + c.rgbbytes[0] = p[n]; + c.rgbbytes[1] = p[n + 1]; + c.rgbbytes[2] = p[n + 2]; +#ifdef ILI9488 + b[0] = c.rgbbytes[2]; + b[1] = c.rgbbytes[1]; + b[2] = c.rgbbytes[0]; +#endif + } + hw_send_spi((uint8_t *) &b, 3); + } + n += 3; + } + } + } + } + lcd_spi_raise_cs(); //set CS high + +} + +// Draw a filled rectangle +// this is the basic drawing promitive used by most drawing routines +// x1, y1, x2, y2 - the coordinates +// c - the colour +void draw_rect_spi(int x1, int y1, int x2, int y2, int c) { + // convert the colours to 565 format + unsigned char col[3]; + if (x1 == x2 && y1 == y2) { + if (x1 < 0) return; + if (x1 >= hres) return; + if (y1 < 0) return; + if (y1 >= vres) return; + define_region_spi(x1, y1, x2, y2, 1); +#ifdef ILI9488 + col[0] = (c >> 16); + col[1] = (c >> 8) & 0xFF; + col[2] = (c & 0xFF); +#endif + hw_send_spi(col, 3); + } else { + int i, t, y; + unsigned char *p; + // make sure the coordinates are kept within the display area + if (x2 <= x1) { + t = x1; + x1 = x2; + x2 = t; + } + if (y2 <= y1) { + t = y1; + y1 = y2; + y2 = t; + } + if (x1 < 0) x1 = 0; + if (x1 >= hres) x1 = hres - 1; + if (x2 < 0) x2 = 0; + if (x2 >= hres) x2 = hres - 1; + if (y1 < 0) y1 = 0; + if (y1 >= vres) y1 = vres - 1; + if (y2 < 0) y2 = 0; + if (y2 >= vres) y2 = vres - 1; + define_region_spi(x1, y1, x2, y2, 1); +#ifdef ILI9488 + i = x2 - x1 + 1; + i *= 3; + p = lcd_buffer; + col[0] = (c >> 16); + col[1] = (c >> 8) & 0xFF; + col[2] = (c & 0xFF); + for (t = 0; t < i; t += 3) { + p[t] = col[0]; + p[t + 1] = col[1]; + p[t + 2] = col[2]; + } + for (y = y1; y <= y2; y++) { + spi_write_fast(Pico_LCD_SPI_MOD, p, i); + } +#endif + } + spi_finish(Pico_LCD_SPI_MOD); + lcd_spi_raise_cs(); +} + +/****************************************************************************************** + Print a char on the LCD display + Any characters not in the font will print as a space. + The char is printed at the current location defined by current_x and current_y +*****************************************************************************************/ +void lcd_print_char( int fc, int bc, char c, int orientation) { + unsigned char *p, *fp, *np = NULL; + int modx, mody, scale = 0x01; + int height, width; + + // to get the +, - and = chars for font 6 we fudge them by scaling up font 1 + fp = (unsigned char *) MainFont; + + height = fp[1]; + width = fp[0]; + modx = mody = 0; + //printf("fp %d, c %d ,height %d width %d\n",fp,c, height,width); + + if (c >= fp[2] && c < fp[2] + fp[3]) { + p = fp + 4 + (int) (((c - fp[2]) * height * width) / 8); + //printf("p = %d\n",p); + np = p; + + draw_bitmap_spi(current_x + modx, current_y + mody, width, height, scale, fc, bc, np); + } else { + draw_rect_spi(current_x + modx, current_y + mody, current_x + modx + (width * scale), + current_y + mody + (height * scale), bc); + } + + if (orientation == ORIENT_NORMAL) current_x += width * scale; + +} + +unsigned char scrollbuff[LCD_WIDTH * 3]; + +void scroll_lcd_spi(int lines) { + if (lines == 0)return; + if (lines >= 0) { + for (int i = 0; i < vres - lines; i++) { + read_buffer_spi(0, i + lines, hres - 1, i + lines, scrollbuff); + draw_buffer_spi(0, i, hres - 1, i, scrollbuff); + } + draw_rect_spi(0, vres - lines, hres - 1, vres - 1, gui_bcolour); // erase the lines to be scrolled off + } else { + lines = -lines; + for (int i = vres - 1; i >= lines; i--) { + read_buffer_spi(0, i - lines, hres - 1, i - lines, scrollbuff); + draw_buffer_spi(0, i, hres - 1, i, scrollbuff); + } + draw_rect_spi(0, 0, hres - 1, lines - 1, gui_bcolour); // erase the lines introduced at the top + } + +} + +void display_put_c(char c) { + // if it is printable and it is going to take us off the right hand end of the screen do a CRLF + if (c >= MainFont[2] && c < MainFont[2] + MainFont[3]) { + if (current_x + gui_font_width > hres) { + display_put_c('\r'); + display_put_c('\n'); + } + } + + // handle the standard control chars + switch (c) { + case '\b': + current_x -= gui_font_width; + //if (current_x < 0) current_x = 0; + if (current_x < 0) { //Go to end of previous line + current_y -= gui_font_height; //Go up one line + if (current_y < 0) current_y = 0; + current_x = (s_width - 1) * gui_font_width; //go to last character + } + return; + case '\r': + current_x = 0; + return; + case '\n': + current_x = 0; + current_y += gui_font_height; + if (current_y + gui_font_height >= vres) { + scroll_lcd_spi(current_y + gui_font_height - vres); + current_y -= (current_y + gui_font_height - vres); + } + return; + case '\t': + do { + display_put_c(' '); + } while ((current_x / gui_font_width) % 2);// 2 3 4 8 + return; + } + lcd_print_char(gui_fcolour, gui_bcolour, c, ORIENT_NORMAL);// print it +} + +/*** + * +****//// +char lcd_put_char(char c, int flush) { + lcd_putc(0, c); + if (isprint(c)) lcd_char_pos++; + if (c == '\r') { + lcd_char_pos = 1; + } + return c; +} + +void lcd_print_string(char *s) { + while (*s) { + if (s[1])lcd_put_char(*s, 0); + else lcd_put_char(*s, 1); + s++; + } + fflush(stdout); +} + +///////=----------------------------------------===////// +void lcd_clear() { + draw_rect_spi(0, 0, hres - 1, vres - 1, BLACK); +} + +void lcd_putc(uint8_t devn, uint8_t c) { + display_put_c(c); +} + +int lcd_getc(uint8_t devn) { + //i2c keyboard + int c = read_i2c_kbd(); + return c; +} + +unsigned char __not_in_flash_func(hw1_swap_spi)(unsigned char data_out) { + unsigned char data_in = 0; + spi_write_read_blocking(spi1, &data_out, &data_in, 1); + return data_in; +} + +void hw_read_spi(unsigned char *buff, int cnt) { + spi_read_blocking(Pico_LCD_SPI_MOD, 0xff, buff, cnt); +} + +void hw_send_spi(const unsigned char *buff, int cnt) { + + spi_write_blocking(Pico_LCD_SPI_MOD, buff, cnt); + +} + +void pin_set_bit(int pin, unsigned int offset) { + switch (offset) { + case LATCLR: + gpio_set_pulls(pin, false, false); + gpio_pull_down(pin); + gpio_put(pin, 0); + return; + case LATSET: + gpio_set_pulls(pin, false, false); + gpio_pull_up(pin); + gpio_put(pin, 1); + return; + case LATINV: + gpio_xor_mask(1 << pin); + return; + case TRISSET: + gpio_set_dir(pin, GPIO_IN); + sleep_us(2); + return; + case TRISCLR: + gpio_set_dir(pin, GPIO_OUT); + gpio_set_drive_strength(pin, GPIO_DRIVE_STRENGTH_12MA); + sleep_us(2); + return; + case CNPUSET: + gpio_set_pulls(pin, true, false); + return; + case CNPDSET: + gpio_set_pulls(pin, false, true); + return; + case CNPUCLR: + case CNPDCLR: + gpio_set_pulls(pin, false, false); + return; + case ODCCLR: + gpio_set_dir(pin, GPIO_OUT); + gpio_put(pin, 0); + sleep_us(2); + return; + case ODCSET: + gpio_set_pulls(pin, true, false); + gpio_set_dir(pin, GPIO_IN); + sleep_us(2); + return; + case ANSELCLR: + gpio_set_function(pin, GPIO_FUNC_SIO); + gpio_set_dir(pin, GPIO_IN); + return; + default: + break; + //printf("Unknown pin_set_bit command"); + } +} + +//important for read lcd memory +void reset_controller(void) { + pin_set_bit(Pico_LCD_RST, LATSET); + sleep_us(10000); + pin_set_bit(Pico_LCD_RST, LATCLR); + sleep_us(10000); + pin_set_bit(Pico_LCD_RST, LATSET); + sleep_us(200000); +} + + +void pico_lcd_init() { +#ifdef ILI9488 + reset_controller(); + + hres = 320; + vres = 320; + + spi_write_command(0xE0); // Positive Gamma Control + spi_write_data(0x00); + spi_write_data(0x03); + spi_write_data(0x09); + spi_write_data(0x08); + spi_write_data(0x16); + spi_write_data(0x0A); + spi_write_data(0x3F); + spi_write_data(0x78); + spi_write_data(0x4C); + spi_write_data(0x09); + spi_write_data(0x0A); + spi_write_data(0x08); + spi_write_data(0x16); + spi_write_data(0x1A); + spi_write_data(0x0F); + + spi_write_command(0XE1); // Negative Gamma Control + spi_write_data(0x00); + spi_write_data(0x16); + spi_write_data(0x19); + spi_write_data(0x03); + spi_write_data(0x0F); + spi_write_data(0x05); + spi_write_data(0x32); + spi_write_data(0x45); + spi_write_data(0x46); + spi_write_data(0x04); + spi_write_data(0x0E); + spi_write_data(0x0D); + spi_write_data(0x35); + spi_write_data(0x37); + spi_write_data(0x0F); + + spi_write_command(0XC0); // Power Control 1 + spi_write_data(0x17); + spi_write_data(0x15); + + spi_write_command(0xC1); // Power Control 2 + spi_write_data(0x41); + + spi_write_command(0xC5); // VCOM Control + spi_write_data(0x00); + spi_write_data(0x12); + spi_write_data(0x80); + + spi_write_command(TFT_MADCTL); // Memory Access Control + spi_write_data(0x48); // MX, BGR + + spi_write_command(0x3A); // Pixel Interface Format + spi_write_data(0x66); // 18/24-bit colour for SPI (RGB666/RGB888) + + spi_write_command(0xB0); // Interface Mode Control + spi_write_data(0x00); + + spi_write_command(0xB1); // Frame Rate Control + spi_write_data(0xA0); + + spi_write_command(TFT_INVON); + + spi_write_command(0xB4); // Display Inversion Control + spi_write_data(0x02); + + spi_write_command(0xB6); // Display Function Control + spi_write_data(0x02); + spi_write_data(0x02); + spi_write_data(0x3B); + + spi_write_command(0xB7); // Entry Mode Set + spi_write_data(0xC6); + spi_write_command(0xE9); + spi_write_data(0x00); + + spi_write_command(0xF7); // Adjust Control 3 + spi_write_data(0xA9); + spi_write_data(0x51); + spi_write_data(0x2C); + spi_write_data(0x82); + + spi_write_command(TFT_SLPOUT); //Exit Sleep + sleep_ms(120); + + spi_write_command(TFT_DISPON); //Display on + sleep_ms(120); + + spi_write_command(TFT_MADCTL); + spi_write_cd(ILI9341_MEMCONTROL, 1, ILI9341_Portrait); +#endif +} + +void lcd_spi_raise_cs(void) { + gpio_put(Pico_LCD_CS, 1); +} + +void lcd_spi_lower_cs(void) { + + gpio_put(Pico_LCD_CS, 0); + +} + +void spi_write_data(unsigned char data) { + gpio_put(Pico_LCD_DC, 1); + lcd_spi_lower_cs(); + hw_send_spi(&data, 1); + lcd_spi_raise_cs(); +} + +void spi_write_data24(uint32_t data) { + uint8_t data_array[3]; + data_array[0] = data >> 16; + data_array[1] = (data >> 8) & 0xFF; + data_array[2] = data & 0xFF; + + + gpio_put(Pico_LCD_DC, 1); // Data mode + gpio_put(Pico_LCD_CS, 0); + spi_write_blocking(Pico_LCD_SPI_MOD, data_array, 3); + gpio_put(Pico_LCD_CS, 1); +} + +void spi_write_command(unsigned char data) { + gpio_put(Pico_LCD_DC, 0); + gpio_put(Pico_LCD_CS, 0); + + spi_write_blocking(Pico_LCD_SPI_MOD, &data, 1); + + gpio_put(Pico_LCD_CS, 1); +} + +void spi_write_cd(unsigned char command, int data, ...) { + int i; + va_list ap; + va_start(ap, data); + spi_write_command(command); + for (i = 0; i < data; i++) spi_write_data((char) va_arg(ap, int)); + va_end(ap); +} + +void lcd_spi_init() { + // init GPIO + gpio_init(Pico_LCD_SCK); + gpio_init(Pico_LCD_TX); + gpio_init(Pico_LCD_RX); + gpio_init(Pico_LCD_CS); + gpio_init(Pico_LCD_DC); + gpio_init(Pico_LCD_RST); + + gpio_set_dir(Pico_LCD_SCK, GPIO_OUT); + gpio_set_dir(Pico_LCD_TX, GPIO_OUT); + //gpio_set_dir(Pico_LCD_RX, GPIO_IN); + gpio_set_dir(Pico_LCD_CS, GPIO_OUT); + gpio_set_dir(Pico_LCD_DC, GPIO_OUT); + gpio_set_dir(Pico_LCD_RST, GPIO_OUT); + + // init SPI + spi_init(Pico_LCD_SPI_MOD, LCD_SPI_SPEED); + gpio_set_function(Pico_LCD_SCK, GPIO_FUNC_SPI); + gpio_set_function(Pico_LCD_TX, GPIO_FUNC_SPI); + gpio_set_function(Pico_LCD_RX, GPIO_FUNC_SPI); + gpio_set_input_hysteresis_enabled(Pico_LCD_RX, true); + + gpio_put(Pico_LCD_CS, 1); + gpio_put(Pico_LCD_RST, 1); +} + + +void lcd_init() { + lcd_spi_init(); + pico_lcd_init(); + + set_font(); + gui_fcolour = GREEN; + gui_bcolour = BLACK; + +} diff --git a/Code/picocalc_lvgl_graphics_demo/lcdspi/lcdspi.h b/Code/picocalc_lvgl_graphics_demo/lcdspi/lcdspi.h new file mode 100644 index 0000000..3fe3f0f --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lcdspi/lcdspi.h @@ -0,0 +1,146 @@ +#ifndef LCDSPI_H +#define LCDSPI_H +#include "pico/multicore.h" +#include + +//#define LCD_SPI_SPEED 6000000 +#define LCD_SPI_SPEED 25000000 +//#define LCD_SPI_SPEED 50000000 + +#define Pico_LCD_SCK 10 // +#define Pico_LCD_TX 11 // MOSI +#define Pico_LCD_RX 12 // MISO +#define Pico_LCD_CS 13 // +#define Pico_LCD_DC 14 +#define Pico_LCD_RST 15 + +#define ILI9488 1 +#ifdef ILI9488 +#define LCD_WIDTH 320 +#define LCD_HEIGHT 320 +#endif + +#define PIXFMT_BGR 1 + +#define TFT_SLPOUT 0x11 +#define TFT_INVOFF 0x20 +#define TFT_INVON 0x21 + +#define TFT_DISPOFF 0x28 +#define TFT_DISPON 0x29 +#define TFT_MADCTL 0x36 + +#define ILI9341_MEMCONTROL 0x36 +#define ILI9341_MADCTL_MX 0x40 +#define ILI9341_MADCTL_BGR 0x08 + +#define ILI9341_COLADDRSET 0x2A +#define ILI9341_PAGEADDRSET 0x2B +#define ILI9341_MEMORYWRITE 0x2C +#define ILI9341_RAMRD 0x2E + +#define ILI9341_Portrait ILI9341_MADCTL_MX | ILI9341_MADCTL_BGR + +#define ORIENT_NORMAL 0 + +#define RGB(red, green, blue) (unsigned int) (((red & 0b11111111) << 16) | ((green & 0b11111111) << 8) | (blue & 0b11111111)) +#define WHITE RGB(255, 255, 255) //0b1111 +#define YELLOW RGB(255, 255, 0) //0b1110 +#define LILAC RGB(255, 128, 255) //0b1101 +#define BROWN RGB(255, 128, 0) //0b1100 +#define FUCHSIA RGB(255, 64, 255) //0b1011 +#define RUST RGB(255, 64, 0) //0b1010 +#define MAGENTA RGB(255, 0, 255) //0b1001 +#define RED RGB(255, 0, 0) //0b1000 +#define CYAN RGB(0, 255, 255) //0b0111 +#define GREEN RGB(0, 255, 0) //0b0110 +#define CERULEAN RGB(0, 128, 255) //0b0101 +#define MIDGREEN RGB(0, 128, 0) //0b0100 +#define COBALT RGB(0, 64, 255) //0b0011 +#define MYRTLE RGB(0, 64, 0) //0b0010 +#define BLUE RGB(0, 0, 255) //0b0001 +#define BLACK RGB(0, 0, 0) //0b0000 +#define BROWN RGB(255, 128, 0) +#define GRAY RGB(128, 128, 128) +#define LITEGRAY RGB(210, 210, 210) +#define ORANGE RGB(0xff, 0xA5, 0) +#define PINK RGB(0xFF, 0xA0, 0xAB) +#define GOLD RGB(0xFF, 0xD7, 0x00) +#define SALMON RGB(0xFA, 0x80, 0x72) +#define BEIGE RGB(0xF5, 0xF5, 0xDC) + +//Pico spi0 or spi1 must match GPIO pins used above. +#define Pico_LCD_SPI_MOD spi1 +#define nop asm("NOP") +//xmit_byte_multi == HW1SendSPI + + +#define PORTCLR 1 +#define PORTSET 2 +#define PORTINV 3 +#define LAT 4 +#define LATCLR 5 +#define LATSET 6 +#define LATINV 7 +#define ODC 8 +#define ODCCLR 9 +#define ODCSET 10 +#define CNPU 12 +#define CNPUCLR 13 +#define CNPUSET 14 +#define CNPUINV 15 +#define CNPD 16 +#define CNPDCLR 17 +#define CNPDSET 18 + +#define ANSELCLR -7 +#define ANSELSET -6 +#define ANSELINV -5 +#define TRIS -4 +#define TRISCLR -3 +#define TRISSET -2 + +extern void __not_in_flash_func(spi_write_fast)(spi_inst_t *spi, const uint8_t *src, size_t len); +extern void __not_in_flash_func(spi_finish)(spi_inst_t *spi); +extern void hw_read_spi(unsigned char *buff, int cnt); +extern void hw_send_spi(const unsigned char *buff, int cnt); +extern unsigned char __not_in_flash_func(hw1_swap_spi)(unsigned char data_out); + +extern void lcd_spi_raise_cs(void); +extern void lcd_spi_lower_cs(void); +extern void spi_write_data(unsigned char data); +extern void spi_write_command(unsigned char data); +extern void spi_write_cd(unsigned char command, int data, ...); +extern void spi_write_data24(uint32_t data); + +extern void spi_draw_pixel(uint16_t x, uint16_t y, uint16_t color) ; +extern void lcd_putc(uint8_t devn, uint8_t c); +extern int lcd_getc(uint8_t devn); +extern void lcd_sleeping(uint8_t devn); + + +void draw_rect_spi(int x1, int y1, int x2, int y2, int c); +void define_region_spi(int xstart, int ystart, int xend, int yend, int rw); + + +//Print the bitmap of a char on the video output +// x, y - the top left of the char +// width, height - size of the char's bitmap +// scale - how much to scale the bitmap +// fc, bc - foreground and background colour +// bitmap - pointer to the bitmap +void draw_bitmap_spi(int x1, int y1, int width, int height, int scale, int fc, int bc, unsigned char *bitmap); +void draw_buffer_spi(int x1, int y1, int x2, int y2, unsigned char *p); + + +extern char lcd_put_char(char c, int flush); +extern void lcd_print_string(char* s); + +extern void lcd_spi_init(); +extern void lcd_init(); +extern void lcd_clear(); +extern void reset_controller(void); +extern void pin_set_bit(int pin, unsigned int offset); + + +#endif diff --git a/Code/picocalc_lvgl_graphics_demo/lib/lvgl/CMakeLists.txt b/Code/picocalc_lvgl_graphics_demo/lib/lvgl/CMakeLists.txt new file mode 100644 index 0000000..872edc3 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lib/lvgl/CMakeLists.txt @@ -0,0 +1,17 @@ +file(GLOB_RECURSE LVGL_SOURCES lvgl/src/*.c lvgl/port/*.c) +add_library(lvgl ${LVGL_SOURCES}) + +set_property(TARGET lvgl APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES +$ +) + +# Add LVGL demo sources +file(GLOB_RECURSE LVGL_DEMO_SOURCES lvgl/demos/*.c) +add_library(lvgl_demos ${LVGL_DEMO_SOURCES}) + +set_property(TARGET lvgl_demos APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES +$ +) + +# Link lvgl library to lvgl_demos +target_link_libraries(lvgl_demos PRIVATE lvgl) diff --git a/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl b/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl new file mode 160000 index 0000000..04ffa24 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl @@ -0,0 +1 @@ +Subproject commit 04ffa24f4bca05af35de82947e215f4cf1e4f84d diff --git a/Code/picocalc_lvgl_graphics_demo/lv_conf.h b/Code/picocalc_lvgl_graphics_demo/lv_conf.h new file mode 100644 index 0000000..606a772 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lv_conf.h @@ -0,0 +1,148 @@ +/** + * @file lv_conf.h + * Configuration file for LVGL v8.3.0 + * + * Author: LVGL, Hsuan Han Lai + * Date: 2025-03-31 + * Description: LVGL configuration file for the PicoCalc (Raspberry Pi Pico with ILI9488 display) + * + */ + + #ifndef LV_CONF_H + #define LV_CONF_H + + #include + + /*==================== + COLOR SETTINGS + *====================*/ + #define LV_COLOR_DEPTH 16 /*16-bit color depth*/ + #define LV_COLOR_16_SWAP 0 + #define LV_COLOR_MIX_ROUND_OFS (128) + + /*==================== + MEMORY SETTINGS + *====================*/ + #define LV_MEM_SIZE (48 * 1024U) /*48KB memory pool*/ + #define LV_MEM_CUSTOM 0 + + /*==================== + HAL SETTINGS + *====================*/ + #define LV_TICK_CUSTOM 0 + #if LV_TICK_CUSTOM + #define LV_TICK_CUSTOM_INCLUDE "pico/stdlib.h" + #define LV_TICK_CUSTOM_SYS_TIME_EXPR (to_ms_since_boot(get_absolute_time())) + #endif + + /*==================== + DISPLAY SETTINGS + *====================*/ + #define LV_HOR_RES_MAX 320 /*ILI9488 typical width (when oriented vertically)*/ + #define LV_VER_RES_MAX 320 /*ILI9488 typical height*/ + + /* Use 2 buffers (1/10 screen size) */ + #define LV_DISP_DOUBLE_BUFFER 0 + #define LV_DISP_BUF_SIZE (LV_HOR_RES_MAX * LV_VER_RES_MAX / 10) + + /*=================== + * INPUT DEVICE SETTINGS + *===================*/ + #define LV_INDEV_DEF_READ_PERIOD 30 + + /*=================== + * FEATURE CONFIGURATION + *===================*/ + #define LV_USE_ASSERT_NULL 1 + #define LV_USE_ASSERT_MALLOC 1 + #define LV_USE_LOG 1 + #if LV_USE_LOG + #define LV_LOG_PRINTF 1 + #endif + + /*=================== + * FONT USAGE + *===================*/ + #define LV_FONT_MONTSERRAT_12 1 + #define LV_FONT_MONTSERRAT_14 1 + #define LV_FONT_DEFAULT &lv_font_montserrat_14 + + /*=================== + * THEME USAGE + *===================*/ + #define LV_USE_THEME_DEFAULT 1 + + /*=================== + * WIDGET USAGE + *===================*/ + #define LV_USE_LABEL 1 + #define LV_USE_BTN 1 + #define LV_USE_SLIDER 1 + #define LV_USE_IMG 1 + #define LV_USE_ARC 1 + #define LV_USE_BAR 1 + #define LV_USE_CHART 1 + #define LV_USE_CHECKBOX 1 + #define LV_USE_DROPDOWN 1 + #define LV_USE_LINE 1 + #define LV_USE_ROLLER 1 + #define LV_USE_SWITCH 1 + #define LV_USE_TABLE 1 + #define LV_USE_TEXTAREA 1 + /* Add other widgets as needed */ + + /*=================== + * LAYOUT USAGE + *===================*/ + #define LV_USE_GRID 1 + #define LV_USE_FLEX 1 + + /*=================== + * DEMO USAGE + ====================*/ + +/* Show some widget. It might be required to increase `LV_MEM_SIZE` */ +#define LV_USE_DEMO_WIDGETS 1 + +/* Demonstrate the usage of encoder and keyboard */ +#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0 + +/* Benchmark your system */ +#define LV_USE_DEMO_BENCHMARK 0 + +/* Stress test for LVGL */ +#define LV_USE_DEMO_STRESS 0 + +/* Music player demo */ +#define LV_USE_DEMO_MUSIC 0 +#if LV_USE_DEMO_MUSIC +# define LV_DEMO_MUSIC_SQUARE 0 +# define LV_DEMO_MUSIC_LANDSCAPE 0 +# define LV_DEMO_MUSIC_ROUND 0 +# define LV_DEMO_MUSIC_LARGE 0 +# define LV_DEMO_MUSIC_AUTO_PLAY 0 +#endif + +/* Flex layout demo */ +#define LV_USE_DEMO_FLEX_LAYOUT 0 + +/* Smart-phone like multi-language demo */ +#define LV_USE_DEMO_MULTILANG 0 + +/* Widget transformation demo */ +#define LV_USE_DEMO_TRANSFORM 0 + +/* Demonstrate scroll settings */ +#define LV_USE_DEMO_SCROLL 0 + + + /*================== + * COMPILER SETTINGS + *==================*/ + #ifdef __cplusplus + #define LV_EXTERN_C extern "C" + #else + #define LV_EXTERN_C + #endif + + #endif /*LV_CONF_H*/ diff --git a/Code/picocalc_lvgl_graphics_demo/lv_port_disp_picocalc_ILI9488.c b/Code/picocalc_lvgl_graphics_demo/lv_port_disp_picocalc_ILI9488.c new file mode 100644 index 0000000..c831294 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lv_port_disp_picocalc_ILI9488.c @@ -0,0 +1,122 @@ +/** + * @file lv_port_disp.c + * + */ + +/*Copy this file as "lv_port_disp.c" and set this value to "1" to enable content*/ +#if 1 + +/********************* + * INCLUDES + *********************/ +#include "lv_port_disp_picocalc_ILI9488.h" +#include +#include "lcdspi/lcdspi.h" + + + +/********************* + * DEFINES + *********************/ +#define LV_DISP_ROT_NONE 0 + +#ifndef MY_DISP_HOR_RES + #define MY_DISP_HOR_RES 320 +#endif + +#ifndef MY_DISP_VER_RES + #define MY_DISP_VER_RES 320 +#endif + +#define BYTE_PER_PIXEL (LV_COLOR_FORMAT_GET_SIZE(LV_COLOR_FORMAT_RGB565)) /*will be 2 for RGB565 */ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * STATIC PROTOTYPES + **********************/ +static void disp_init(void); + +static void disp_flush(lv_display_t * disp, const lv_area_t * area, uint8_t * px_map); + +/********************** + * STATIC VARIABLES + **********************/ + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +void lv_port_disp_init(void) +{ + /*------------------------- + * Initialize your display + * -----------------------*/ + disp_init(); + + /*------------------------------------ + * Create a display and set a flush_cb + * -----------------------------------*/ + lv_display_t * disp = lv_display_create(MY_DISP_HOR_RES, MY_DISP_VER_RES); + lv_display_set_flush_cb(disp, disp_flush); + + /* One buffer for partial rendering */ + LV_ATTRIBUTE_MEM_ALIGN + static uint8_t buf_1[MY_DISP_HOR_RES * 10 * BYTE_PER_PIXEL]; /*A buffer for 10 rows*/ + lv_display_set_buffers(disp, buf_1, NULL, sizeof(buf_1), LV_DISPLAY_RENDER_MODE_PARTIAL); +} + +/********************** + * STATIC FUNCTIONS + **********************/ + +/*Initialize your display and the required peripherals.*/ +static void disp_init(void) +{ + /* Initialize the custom LCD SPI interface */ + lcd_init(); +} + +volatile bool disp_flush_enabled = true; + +/* Enable updating the screen (the flushing process) when disp_flush() is called by LVGL + */ +void disp_enable_update(void) +{ + disp_flush_enabled = true; +} + +/* Disable updating the screen (the flushing process) when disp_flush() is called by LVGL + */ +void disp_disable_update(void) +{ + disp_flush_enabled = false; +} + +/*Flush the content of the internal buffer the specific area on the display. + *`px_map` contains the rendered image as raw pixel map and it should be copied to `area` on the display. + *You can use DMA or any hardware acceleration to do this operation in the background but + *'lv_display_flush_ready()' has to be called when it's finished.*/ +static void disp_flush(lv_display_t * disp_drv, const lv_area_t * area, uint8_t * px_map) +{ + if(disp_flush_enabled) { + /* Use the lcdspi function to transfer the rendered area to the screen */ + draw_buffer_spi(area->x1, area->y1, area->x2, area->y2, px_map); + } + + /*IMPORTANT!!! + *Inform the graphics library that you are ready with the flushing*/ + lv_display_flush_ready(disp_drv); +} + +#else /*Enable this file at the top*/ + +/*This dummy typedef exists purely to silence -Wpedantic.*/ +typedef int keep_pedantic_happy; +#endif diff --git a/Code/picocalc_lvgl_graphics_demo/lv_port_disp_picocalc_ILI9488.h b/Code/picocalc_lvgl_graphics_demo/lv_port_disp_picocalc_ILI9488.h new file mode 100644 index 0000000..f04c18c --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lv_port_disp_picocalc_ILI9488.h @@ -0,0 +1,56 @@ +/** + * @file lv_port_disp_picocalc_ILI9488.h + * + */ + +#if 1 + +#ifndef LV_PORT_DISP_PICOCALC_ILI9488_H +#define LV_PORT_DISP_PICOCALC_ILI9488_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ +#if defined(LV_LVGL_H_INCLUDE_SIMPLE) +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * GLOBAL PROTOTYPES + **********************/ +/* Initialize low level display driver */ +void lv_port_disp_init(void); + +/* Enable updating the screen (the flushing process) when disp_flush() is called by LVGL + */ +void disp_enable_update(void); + +/* Disable updating the screen (the flushing process) when disp_flush() is called by LVGL + */ +void disp_disable_update(void); + +/********************** + * MACROS + **********************/ + +#ifdef __cplusplus +} /*extern "C"*/ +#endif + +#endif /*LV_PORT_DISP_PICOCALC_ILI9488_H*/ + +#endif /*Disable/Enable content*/ diff --git a/Code/picocalc_lvgl_graphics_demo/lv_port_indev_picocalc_kb.c b/Code/picocalc_lvgl_graphics_demo/lv_port_indev_picocalc_kb.c new file mode 100644 index 0000000..e008eec --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lv_port_indev_picocalc_kb.c @@ -0,0 +1,151 @@ +/** + * @file lv_port_indev_templ.c + * + */ + +/*Copy this file as "lv_port_indev.c" and set this value to "1" to enable content*/ + +/********************* + * INCLUDES + *********************/ +#include "i2ckbd.h" +#include +#include +#include +#include "lv_port_indev_picocalc_kb.h" + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * STATIC PROTOTYPES + **********************/ +static void keypad_init(void); +static void keypad_read(lv_indev_t * indev, lv_indev_data_t * data); +static int keypad_get_key(void); + + +/********************** + * STATIC VARIABLES + **********************/ +lv_indev_t * indev_keypad; +static lv_group_t *g; /* Group for keyboard navigation */ + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ + +void lv_port_indev_init(void) +{ + /** + * Here you will find example implementation of input devices supported by LittelvGL: + * - Touchpad + * - Mouse (with cursor support) + * - Keypad (supports GUI usage only with key) + * - Encoder (supports GUI usage only with: left, right, push) + * - Button (external buttons to press points on the screen) + * + * The `..._read()` function are only examples. + * You should shape them according to your hardware + */ + + + /*------------------ + * Keypad + * -----------------*/ + + keypad_init(); + + /*Register a keypad input device*/ + indev_keypad = lv_indev_create(); + lv_indev_set_type(indev_keypad, LV_INDEV_TYPE_KEYPAD); + lv_indev_set_read_cb(indev_keypad, keypad_read); + + /*Create a group for keyboard navigation*/ + g = lv_group_create(); + lv_group_set_default(g); + lv_group_set_wrap(g, true); + lv_indev_set_group(indev_keypad, g); + + /* + * For keyboard navigation to work: + * 1. Objects must be added to this group either: + * - Automatically if they support default grouping + * - Manually using lv_group_add_obj(g, obj) + * 2. The group receives key events from the input device + * 3. The group navigates focus among objects when arrow keys are pressed + * 4. Focused objects receive other key events (like Enter) + */ +} + +/********************** + * STATIC FUNCTIONS + **********************/ + +static void keypad_init(void) +{ + init_i2c_kbd(); +} + +static void keypad_read(lv_indev_t * indev_drv, lv_indev_data_t * data) +{ + static uint32_t last_key = 0; + static bool pending_release = false; + + /* Check if we need to send a release event for the previous key */ + if(pending_release) { + data->state = LV_INDEV_STATE_RELEASED; + data->key = last_key; + pending_release = false; + return; + } + + /*Get whether the a key is pressed and save the pressed key*/ + int r = keypad_get_key(); + + if (r > 0) { + printf("Key event %x\n", r); + + uint32_t act_key = 0; + /*Translate the keys to LVGL control characters according to your key definitions*/ + switch(r) { + case 0xb5: + act_key = LV_KEY_NEXT; + break; + case 0xb6: + act_key = LV_KEY_PREV; + break; + default: + act_key = r; + break; + } + + data->state = LV_INDEV_STATE_PRESSED; + data->key = act_key; + last_key = act_key; + pending_release = true; + } + else { + data->state = LV_INDEV_STATE_RELEASED; + data->key = 0; + } +} + +static int keypad_get_key(void) +{ + int key_code = read_i2c_kbd(); + if (key_code < 0) { + return 0; + } + + return key_code; +} diff --git a/Code/picocalc_lvgl_graphics_demo/lv_port_indev_picocalc_kb.h b/Code/picocalc_lvgl_graphics_demo/lv_port_indev_picocalc_kb.h new file mode 100644 index 0000000..d4b0b2a --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/lv_port_indev_picocalc_kb.h @@ -0,0 +1,48 @@ + +/** + * @file lv_port_indev_picocalc_kb.h + * + */ + +#if 1 + +#ifndef LV_PORT_INDEV_PICOCALC_KB_H +#define LV_PORT_INDEV_PICOCALC_KB_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ +#if defined(LV_LVGL_H_INCLUDE_SIMPLE) +#include "lvgl.h" +#else +#include "lvgl/lvgl.h" +#endif + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * GLOBAL PROTOTYPES + **********************/ +void lv_port_indev_init(void); + +/********************** + * MACROS + **********************/ + +#ifdef __cplusplus +} /*extern "C"*/ +#endif + +#endif /*LV_PORT_INDEV_PICOCALC_KB_H*/ + +#endif /*Disable/Enable content*/ diff --git a/Code/picocalc_lvgl_graphics_demo/main.c b/Code/picocalc_lvgl_graphics_demo/main.c new file mode 100644 index 0000000..29260ad --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/main.c @@ -0,0 +1,79 @@ +/** + * PicoCalc LVGL Graphics Demo + * + * Demo App Uses LVGL to show demos on the PicoCalc. + * Implements basic keyboard input and display driver. + * + * Author: HsuahHanLai + * https://www.hsuanhanlai.com/ + */ + +#include +#include +#include "pico/stdlib.h" +#include "hardware/gpio.h" + + +#include "lv_conf.h" +#include "lvgl/lvgl.h" +#include "lv_port_indev_picocalc_kb.h" +#include "lv_port_disp_picocalc_ILI9488.h" +#include "lvgl/demos/lv_demos.h" + + +#define ILI9488 1 +#define USE_DEFAULT_DEMO 1 + +#define BYTE_PER_PIXEL (LV_COLOR_FORMAT_GET_SIZE(LV_COLOR_FORMAT_RGB565)) /*will be 2 for RGB565 */ + + +const unsigned int LEDPIN = 25; + +int main() +{ + // Initialize standard I/O + stdio_init_all(); + + // Initialize LED + gpio_init(LEDPIN); + gpio_set_dir(LEDPIN, GPIO_OUT); + + // Initialize LVGL + lv_init(); + + // Initialize the custom display driver + lv_port_disp_init(); + + // Initialize the keyboard input device (implementation in lv_port_indev_kbd.c) + lv_port_indev_init(); + + + +#ifdef USE_DEFAULT_DEMO + // Initialize and run LVGL demo + lv_demo_widgets(); // Replace with the correct demo function if needed +#else + // Create a screen + lv_obj_t *screen = lv_obj_create(NULL); + + // Create a text box + lv_obj_t *textbox = lv_textarea_create(screen); + lv_obj_set_size(textbox, 200, 50); // Set size of the text box + lv_obj_align(textbox, LV_ALIGN_CENTER, 0, 0); // Center the text box on the screen + + // Enable keyboard input for the text box + lv_textarea_set_placeholder_text(textbox, "Enter text..."); + lv_textarea_set_one_line(textbox, true); // Set to single-line mode + + // Load the screen + lv_scr_load(screen); +#endif + + // Main loop + while (1) + { + lv_timer_handler(); + lv_tick_inc(5); // Increment LVGL tick by 5 milliseconds + sleep_ms(1); // Sleep for 5 milliseconds} + } +} diff --git a/Code/picocalc_lvgl_graphics_demo/pico_sdk_import.cmake b/Code/picocalc_lvgl_graphics_demo/pico_sdk_import.cmake new file mode 100644 index 0000000..65f8a6f --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/pico_sdk_import.cmake @@ -0,0 +1,73 @@ +# This is a copy of /external/pico_sdk_import.cmake + +# This can be dropped into an external project to help locate this SDK +# It should be include()ed prior to project() + +if (DEFINED ENV{PICO_SDK_PATH} AND (NOT PICO_SDK_PATH)) + set(PICO_SDK_PATH $ENV{PICO_SDK_PATH}) + message("Using PICO_SDK_PATH from environment ('${PICO_SDK_PATH}')") +endif () + +if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT} AND (NOT PICO_SDK_FETCH_FROM_GIT)) + set(PICO_SDK_FETCH_FROM_GIT $ENV{PICO_SDK_FETCH_FROM_GIT}) + message("Using PICO_SDK_FETCH_FROM_GIT from environment ('${PICO_SDK_FETCH_FROM_GIT}')") +endif () + +if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_PATH)) + set(PICO_SDK_FETCH_FROM_GIT_PATH $ENV{PICO_SDK_FETCH_FROM_GIT_PATH}) + message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')") +endif () + +set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the Raspberry Pi Pico SDK") +set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of SDK from git if not otherwise locatable") +set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK") + +if (NOT PICO_SDK_PATH) + if (PICO_SDK_FETCH_FROM_GIT) + include(FetchContent) + set(FETCHCONTENT_BASE_DIR_SAVE ${FETCHCONTENT_BASE_DIR}) + if (PICO_SDK_FETCH_FROM_GIT_PATH) + get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_SDK_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}") + endif () + # GIT_SUBMODULES_RECURSE was added in 3.17 + if (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.17.0") + FetchContent_Declare( + pico_sdk + GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk + GIT_TAG master + GIT_SUBMODULES_RECURSE FALSE + ) + else () + FetchContent_Declare( + pico_sdk + GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk + GIT_TAG master + ) + endif () + + if (NOT pico_sdk) + message("Downloading Raspberry Pi Pico SDK") + FetchContent_Populate(pico_sdk) + set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR}) + endif () + set(FETCHCONTENT_BASE_DIR ${FETCHCONTENT_BASE_DIR_SAVE}) + else () + message(FATAL_ERROR + "SDK location was not specified. Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT to on to fetch from git." + ) + endif () +endif () + +get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}") +if (NOT EXISTS ${PICO_SDK_PATH}) + message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' not found") +endif () + +set(PICO_SDK_INIT_CMAKE_FILE ${PICO_SDK_PATH}/pico_sdk_init.cmake) +if (NOT EXISTS ${PICO_SDK_INIT_CMAKE_FILE}) + message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' does not appear to contain the Raspberry Pi Pico SDK") +endif () + +set(PICO_SDK_PATH ${PICO_SDK_PATH} CACHE PATH "Path to the Raspberry Pi Pico SDK" FORCE) + +include(${PICO_SDK_INIT_CMAKE_FILE}) From 626795fd7e616324c8fe4691957be1589f0500c3 Mon Sep 17 00:00:00 2001 From: Edward Lai Date: Mon, 31 Mar 2025 18:12:12 +0800 Subject: [PATCH 2/7] update submodule --- .gitmodules | 4 ++-- Code/picocalc_lvgl_graphics_demo/.gitignore | 4 +++- .../Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl | 1 - 3 files changed, 5 insertions(+), 4 deletions(-) delete mode 160000 Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl diff --git a/.gitmodules b/.gitmodules index a751b67..84ff5d9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl"] - path = Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl +[submodule "lvgl"] + path = Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl url = https://github.com/lvgl/lvgl.git diff --git a/Code/picocalc_lvgl_graphics_demo/.gitignore b/Code/picocalc_lvgl_graphics_demo/.gitignore index 567609b..b966db8 100644 --- a/Code/picocalc_lvgl_graphics_demo/.gitignore +++ b/Code/picocalc_lvgl_graphics_demo/.gitignore @@ -1 +1,3 @@ -build/ +.idea +cmake-* +build \ No newline at end of file diff --git a/Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl b/Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl deleted file mode 160000 index b88fb67..0000000 --- a/Code/picocalc_lvgl_graphics_demo/Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b88fb674d3e54e27d05ef7595a77052c20453698 From 90433485aa5d3ec5516df7067e68e2b0e354665f Mon Sep 17 00:00:00 2001 From: Edward Lai Date: Mon, 31 Mar 2025 18:23:26 +0800 Subject: [PATCH 3/7] update submodule loc and branch --- .gitmodules | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitmodules b/.gitmodules index 84ff5d9..56935c5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,4 @@ [submodule "lvgl"] path = Code/picocalc_lvgl_graphics_demo/lib/lvgl/lvgl url = https://github.com/lvgl/lvgl.git + branch = release/v9.2 \ No newline at end of file From 938163a1fd96f4662435b52e27a475697ef74480 Mon Sep 17 00:00:00 2001 From: Edward Lai Date: Mon, 31 Mar 2025 18:43:34 +0800 Subject: [PATCH 4/7] add README.md --- Code/picocalc_lvgl_graphics_demo/README.md | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Code/picocalc_lvgl_graphics_demo/README.md diff --git a/Code/picocalc_lvgl_graphics_demo/README.md b/Code/picocalc_lvgl_graphics_demo/README.md new file mode 100644 index 0000000..c8a1b03 --- /dev/null +++ b/Code/picocalc_lvgl_graphics_demo/README.md @@ -0,0 +1,89 @@ +# PicoCalc LVGL Graphics Demo + +This is a template demo app using LVGL graphic engine on PicoCalc. + +### TODOs +#### Done +- [x] Project support for both Pico1/2 Builds +- [x] Initial LVGL Project support +- [x] I2C Keyboard Porting for LVGL +- [x] SPI Display Porting for LVGL +- [x] Bitmap Driver flushing +#### TODO +- [ ] Improve Keyboard event processing + +## Building +``` shell +# onetime, cloning latest lvgl submodule +git submodule update --init --recursive + + +cd {to_this_demo_path} + +mkdir build +cd build +export PICO_SDK_PATH=/where/pico-sdk/is +cmake .. +make +``` + + +## Build for Pico 1(RP2040) or Pico 2(RP2350) +if you are using other pico board, you could select a board type from the `CMakeLists.txt` + +```cmake +# Setup board for Pico 1 +set(PICO_BOARD pico) + +# Setup board for Pico 2W +# set(PICO_BOARD pico2) +``` + +## How to Upload UF2 + +Uploading a UF2 file to the Raspberry Pi Pico on a Linux system is straightforward. Here’s how you can do it: + +### Step 1: Prepare Your Raspberry Pi Pico +Enter Bootloader Mode: + +- Hold down the BOOTSEL button on your Pico. +- While holding the button, connect the Pico to your Linux PC via USB. +- Release the BOOTSEL button. +- Check If the Pico Is Recognized: + +Your Pico should appear as a mass storage device named RPI-RP2. + +Verify using the following command: + +```bash +lsblk +``` + +You should see a new device (e.g., /media/$USER/RPI-RP2 or /run/media/$USER/RPI-RP2). + +### Step 2: Copy the UF2 File to the Pico +``` +cp your_firmware.uf2 /media/$USER/RPI-RP2/ +``` + +### Step 3: Run it +On PicoCalc, the default serial port of the Pico is the USB Type-C port, not its built-in Micro USB port. +So here is the standard running procedures: + +- Unplug the pico from Micro-USB cable +- Plug the pico via USB Type-C +- Press Power On on Top of the PicoCalc + + +If your firmware includes serial output, you can monitor it using **minicom** or **screen**: +```bash +screen /dev/ttyACM0 115200 +``` + +(Replace /dev/ttyACM0 with the correct serial port for your Pico.) + +The serial monitor of **Arduino IDE** is another great choice for PicoCalc serial output on both Linux and Windows. + + +#### Special thanks +[Hsuan Han Lai](https://github.com/adwuard) for initial porting and demo project for the PicoCalc From c19f61ab68d9ae385583a734bd97f5deea4bda68 Mon Sep 17 00:00:00 2001 From: Edward Lai Date: Mon, 31 Mar 2025 19:03:34 +0800 Subject: [PATCH 5/7] add lvgl app img --- Code/picocalc_lvgl_graphics_demo/README.md | 45 +++++++++++------- .../img/lvgl_demo.jpg | Bin 0 -> 227922 bytes 2 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 Code/picocalc_lvgl_graphics_demo/img/lvgl_demo.jpg diff --git a/Code/picocalc_lvgl_graphics_demo/README.md b/Code/picocalc_lvgl_graphics_demo/README.md index c8a1b03..4e8895e 100644 --- a/Code/picocalc_lvgl_graphics_demo/README.md +++ b/Code/picocalc_lvgl_graphics_demo/README.md @@ -1,30 +1,41 @@ # PicoCalc LVGL Graphics Demo -This is a template demo app using LVGL graphic engine on PicoCalc. +This repository provides a template demo application utilizing the LVGL graphics engine on the PicoCalc. -### TODOs -#### Done -- [x] Project support for both Pico1/2 Builds -- [x] Initial LVGL Project support -- [x] I2C Keyboard Porting for LVGL -- [x] SPI Display Porting for LVGL -- [x] Bitmap Driver flushing -#### TODO -- [ ] Improve Keyboard event processing -## Building -``` shell -# onetime, cloning latest lvgl submodule +![LVGL Demo](./img/lvgl_demo.jpg) + + +### Tasks +#### Completed +- [x] Added support for both Pico 1 and Pico 2 builds. +- [x] Integrated the LVGL project framework. +- [x] Ported I2C keyboard functionality for LVGL. +- [x] Implemented SPI display support for LVGL. +- [x] Enabled bitmap driver flushing. + +#### Todos +- [ ] eEnhance keyboard event processing. + +## Build Instructions +```bash +# Clone the LVGL submodule (one-time setup) git submodule update --init --recursive +# ------------------------------ +# Navigate to the demo project directory +cd {path_to_this_demo} -cd {to_this_demo_path} - +# Create and enter the build directory mkdir build cd build -export PICO_SDK_PATH=/where/pico-sdk/is + +# Set the PICO SDK path +export PICO_SDK_PATH=/path/to/pico-sdk + +# Configure and build the project cmake .. -make +make ``` diff --git a/Code/picocalc_lvgl_graphics_demo/img/lvgl_demo.jpg b/Code/picocalc_lvgl_graphics_demo/img/lvgl_demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..351d9ce9168d1d2660e1d270ecb4ad1ec589cdbe GIT binary patch literal 227922 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%0A%D5JKnkYq|4F4HOb&W{&0ZNrtk?5VBa^S+bEI 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
? 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 Date: Mon, 31 Mar 2025 19:05:06 +0800 Subject: [PATCH 6/7] update README --- Code/picocalc_lvgl_graphics_demo/README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/Code/picocalc_lvgl_graphics_demo/README.md b/Code/picocalc_lvgl_graphics_demo/README.md index 4e8895e..45fdc8f 100644 --- a/Code/picocalc_lvgl_graphics_demo/README.md +++ b/Code/picocalc_lvgl_graphics_demo/README.md @@ -3,9 +3,6 @@ This repository provides a template demo application utilizing the LVGL graphics engine on the PicoCalc. -![LVGL Demo](./img/lvgl_demo.jpg) - - ### Tasks #### Completed - [x] Added support for both Pico 1 and Pico 2 builds. From b9f794df3f4ee7e0ce9b07f2909efff874f310f5 Mon Sep 17 00:00:00 2001 From: Edward Lai Date: Mon, 31 Mar 2025 21:29:23 +0800 Subject: [PATCH 7/7] reduce animation --- Code/picocalc_lvgl_graphics_demo/lv_conf.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Code/picocalc_lvgl_graphics_demo/lv_conf.h b/Code/picocalc_lvgl_graphics_demo/lv_conf.h index 606a772..db97587 100644 --- a/Code/picocalc_lvgl_graphics_demo/lv_conf.h +++ b/Code/picocalc_lvgl_graphics_demo/lv_conf.h @@ -89,6 +89,7 @@ #define LV_USE_SWITCH 1 #define LV_USE_TABLE 1 #define LV_USE_TEXTAREA 1 + #define LV_USE_TABVIEW 1 /* Add other widgets as needed */ /*=================== @@ -97,6 +98,21 @@ #define LV_USE_GRID 1 #define LV_USE_FLEX 1 +/*=================== + * ANIMATION SETTINGS + *===================*/ +#define LV_USE_ANIMATION 0 +#define LV_USE_ANIM_IMG 0 +#define LV_USE_ANIM_SCALE 0 +#define LV_USE_ANIM_PATH 0 +#define LV_USE_ANIM_TIMELINE 0 +#define LV_USE_ANIM_CUSTOM 0 +#define LV_USE_ANIM_REPEAT 0 +#define LV_USE_ANIM_PAUSE 0 +#define LV_USE_ANIM_REVERSE 0 +#define LV_USE_ANIM_DELAY 0 +#define LV_USE_ANIM_SPEED 0 + /*=================== * DEMO USAGE ====================*/