From 4975dc8db475795a439c484ec260a6890f196348 Mon Sep 17 00:00:00 2001 From: Lucker <gqpeng@listenai.com> Date: Thu, 27 Jun 2024 11:59:58 +0800 Subject: [PATCH] =?UTF-8?q?samples:=20driver:=20display=5Fkscan:=20?= =?UTF-8?q?=E9=80=82=E9=85=8D=E5=A4=9A=E6=A8=A1=E6=80=81=E6=9D=BF=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- samples/driver/display_kscan/CMakeLists.txt | 4 +- samples/driver/display_kscan/README.rst | 49 +++++++++++++++++-- .../boards/csk6011a_nano.overlay | 2 - samples/driver/display_kscan/prj.conf | 2 + samples/driver/display_kscan/sample.yaml | 4 +- samples/driver/display_kscan/src/main.c | 12 +++-- 6 files changed, 60 insertions(+), 13 deletions(-) diff --git a/samples/driver/display_kscan/CMakeLists.txt b/samples/driver/display_kscan/CMakeLists.txt index eed81e0566..886028479c 100644 --- a/samples/driver/display_kscan/CMakeLists.txt +++ b/samples/driver/display_kscan/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.20.0) -set(SUPPORT_BOARDS csk6012_nano csk6011a_nano) +set(SUPPORT_BOARDS csk6012_nano csk6011a_nano csk6_duomotai_devkit) if(NOT ${BOARD} IN_LIST SUPPORT_BOARDS) message("Please choose one of the following boards:") foreach(item ${SUPPORT_BOARDS}) @@ -15,3 +15,5 @@ find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(display) target_sources(app PRIVATE src/main.c) + + diff --git a/samples/driver/display_kscan/README.rst b/samples/driver/display_kscan/README.rst index de8429cda4..5c52daf7d4 100644 --- a/samples/driver/display_kscan/README.rst +++ b/samples/driver/display_kscan/README.rst @@ -1,5 +1,48 @@ -.. _display-sample: +简介 +===================== -Display Sample -############## +本文演示了如何在Zephyr RTOSä¸ä½¿ç”¨æ˜¾ç¤ºé©±åŠ¨å’Œé”®ç›˜æ‰«æ设备。è¿è¡Œè¯¥ä»£ç åŽï¼Œå°†åœ¨å±å¹•ä¸Šæ˜¾ç¤ºå›¾å½¢ï¼Œå¹¶é€šè¿‡æ—¥å¿—输出å“应触摸按键事件。 + +构建æ¥éª¤ +===================== + +lisa zep build -b csk6_duomotai_devkit ./samples/driver/display_kscan/ -p + +功能说明 +===================== + +1. 获å–显示设备å¥æŸ„ + +:: + + display_dev = DEVICE_DT_GET(DT_INST(0, sitronix_st7789v)); + +2. 获å–显示设备能力 + +:: + + display_get_capabilities(display_dev, &capabilities); + +3. åˆå§‹åŒ–键盘扫æ设备 + +:: + + kscan_init(); + +4. 填充缓冲区并写入显示设备 + +:: + + fill_buffer_fnc(TOP_LEFT, 0, buf, buf_size); + display_write(display_dev, x, y, &buf_desc, buf); + +5. 打开显示设备的显示 + +:: + + display_blanking_off(display_dev); + +è¿è¡Œ +====================== +按下开å‘æ¿å¤ä½æŒ‰é’®ï¼Œè¿è¡Œç¨‹åºã€‚程åºå°†åˆå§‹åŒ–显示设备和键盘扫æ设备,在显示å±ä¸Šç»˜åˆ¶å½©è‰²æ–¹å—,并å“应触摸按键事件。 diff --git a/samples/driver/display_kscan/boards/csk6011a_nano.overlay b/samples/driver/display_kscan/boards/csk6011a_nano.overlay index cca288adce..b448237281 100644 --- a/samples/driver/display_kscan/boards/csk6011a_nano.overlay +++ b/samples/driver/display_kscan/boards/csk6011a_nano.overlay @@ -88,5 +88,3 @@ int-gpios = <&gpiob 11 0>; }; }; - - diff --git a/samples/driver/display_kscan/prj.conf b/samples/driver/display_kscan/prj.conf index 8394e87bbe..1abc7ef5d3 100644 --- a/samples/driver/display_kscan/prj.conf +++ b/samples/driver/display_kscan/prj.conf @@ -11,3 +11,5 @@ CONFIG_KSCAN=y CONFIG_I2C=y CONFIG_KSCAN_FT5336=y CONFIG_KSCAN_FT5336_INTERRUPT=y + + diff --git a/samples/driver/display_kscan/sample.yaml b/samples/driver/display_kscan/sample.yaml index d80248a53f..77f7c11c68 100644 --- a/samples/driver/display_kscan/sample.yaml +++ b/samples/driver/display_kscan/sample.yaml @@ -3,11 +3,11 @@ sample: name: display_sample tests: sample.board.csk6.display.kscan: - platform_allow: csk6011a_nano + platform_allow: csk6011a_nano csk6_duomotai_devkit tags: csk6 harness: console harness_config: fixture: display_st7789_ft5336 type: one_line regex: - - "Display sample for" \ No newline at end of file + - "Display sample for" diff --git a/samples/driver/display_kscan/src/main.c b/samples/driver/display_kscan/src/main.c index 314bc61156..3b76f2fb39 100644 --- a/samples/driver/display_kscan/src/main.c +++ b/samples/driver/display_kscan/src/main.c @@ -59,7 +59,7 @@ LOG_MODULE_REGISTER(sample, LOG_LEVEL_INF); #ifdef CONFIG_ARCH_POSIX #define RETURN_FROM_MAIN(exit_code) posix_exit_main(exit_code) #else -#define RETURN_FROM_MAIN(exit_code) return +#define RETURN_FROM_MAIN(exit_code) return exit_code #endif enum corner { @@ -213,7 +213,7 @@ static void fill_buffer_mono(enum corner corner, uint8_t grey, uint8_t *buf, siz memset(buf, color, buf_size); } -void main(void) +int main(void) { size_t x; size_t y; @@ -236,7 +236,7 @@ void main(void) if (display_dev == NULL) { LOG_ERR("Device not found. Aborting sample."); - RETURN_FROM_MAIN(1); + RETURN_FROM_MAIN(-1); } display_get_capabilities(display_dev, &capabilities); @@ -291,14 +291,14 @@ void main(void) break; default: LOG_ERR("Unsupported pixel format. Aborting sample."); - RETURN_FROM_MAIN(1); + RETURN_FROM_MAIN(-1); } buf = k_malloc(buf_size); if (buf == NULL) { LOG_ERR("Could not allocate memory. Aborting sample."); - RETURN_FROM_MAIN(1); + RETURN_FROM_MAIN(-1); } (void)memset(buf, 0xFFu, buf_size); @@ -351,3 +351,5 @@ void main(void) RETURN_FROM_MAIN(0); } + + -- GitLab