From d25ba52e336038d92d6efccbdafd94d910a700bc Mon Sep 17 00:00:00 2001 From: Vilem Zavodny Date: Wed, 15 May 2024 15:30:19 +0200 Subject: [PATCH] bsp: New BSP for M5Dial --- .build-test-rules.yml | 2 +- .github/workflows/upload_component.yml | 2 +- .github/workflows/upload_component_noglib.yml | 3 +- README.md | 3 +- SquareLine/boards/v9/m5dial/image.png | Bin 0 -> 109720 bytes .../boards/v9/m5dial/main/idf_component.yml | 6 + SquareLine/boards/v9/m5dial/manifest.json | 20 + SquareLine/boards/v9/m5dial/partitions.csv | 5 + .../boards/v9/m5dial/sdkconfig.defaults | 11 + bsp/m5dial/CMakeLists.txt | 7 + bsp/m5dial/Kconfig | 65 +++ bsp/m5dial/LICENSE | 202 ++++++++++ bsp/m5dial/README.md | 35 ++ bsp/m5dial/idf_component.yml | 26 ++ bsp/m5dial/include/bsp/config.h | 16 + bsp/m5dial/include/bsp/display.h | 123 ++++++ bsp/m5dial/include/bsp/esp-bsp.h | 8 + bsp/m5dial/include/bsp/m5dial.h | 229 +++++++++++ bsp/m5dial/include/bsp/touch.h | 51 +++ bsp/m5dial/m5dial.c | 381 ++++++++++++++++++ bsp/m5dial/pic.webp | Bin 0 -> 104720 bytes bsp/m5dial/priv_include/bsp_err_check.h | 58 +++ docu/pics/m5dial.webp | Bin 0 -> 39436 bytes examples/bsp_ext.py | 3 +- examples/display/sdkconfig.bsp.m5dial | 25 ++ .../display_lvgl_demos/sdkconfig.bsp.m5dial | 38 ++ .../display_rotation/sdkconfig.bsp.m5dial | 25 ++ 27 files changed, 1339 insertions(+), 5 deletions(-) create mode 100644 SquareLine/boards/v9/m5dial/image.png create mode 100644 SquareLine/boards/v9/m5dial/main/idf_component.yml create mode 100644 SquareLine/boards/v9/m5dial/manifest.json create mode 100644 SquareLine/boards/v9/m5dial/partitions.csv create mode 100644 SquareLine/boards/v9/m5dial/sdkconfig.defaults create mode 100644 bsp/m5dial/CMakeLists.txt create mode 100644 bsp/m5dial/Kconfig create mode 100644 bsp/m5dial/LICENSE create mode 100644 bsp/m5dial/README.md create mode 100644 bsp/m5dial/idf_component.yml create mode 100644 bsp/m5dial/include/bsp/config.h create mode 100644 bsp/m5dial/include/bsp/display.h create mode 100644 bsp/m5dial/include/bsp/esp-bsp.h create mode 100644 bsp/m5dial/include/bsp/m5dial.h create mode 100644 bsp/m5dial/include/bsp/touch.h create mode 100644 bsp/m5dial/m5dial.c create mode 100644 bsp/m5dial/pic.webp create mode 100644 bsp/m5dial/priv_include/bsp_err_check.h create mode 100644 docu/pics/m5dial.webp create mode 100644 examples/display/sdkconfig.bsp.m5dial create mode 100644 examples/display_lvgl_demos/sdkconfig.bsp.m5dial create mode 100644 examples/display_rotation/sdkconfig.bsp.m5dial diff --git a/.build-test-rules.yml b/.build-test-rules.yml index 157a268e..49a6f505 100644 --- a/.build-test-rules.yml +++ b/.build-test-rules.yml @@ -1,6 +1,6 @@ examples: disable: - - if: IDF_VERSION_MAJOR < 5 and CONFIG_NAME in ["esp32_c3_lcdkit", "esp32_s3_lcd_ev_board", "esp32_s3_usb_otg", "m5stack_core_s3"] + - if: IDF_VERSION_MAJOR < 5 and CONFIG_NAME in ["esp32_c3_lcdkit", "esp32_s3_lcd_ev_board", "esp32_s3_usb_otg", "m5stack_core_s3", "m5dial"] reason: Example depends on BSP, which is supported only for IDF >= 5.0 - if: IDF_VERSION_MAJOR < 5 and IDF_TARGET in ["esp32c2", "esp32p4", "esp32c5", "esp32c6"] reason: Example depends on target, which is supported only for IDF >= 5.0 diff --git a/.github/workflows/upload_component.yml b/.github/workflows/upload_component.yml index 3ccaf8c9..f52ddd01 100644 --- a/.github/workflows/upload_component.yml +++ b/.github/workflows/upload_component.yml @@ -17,7 +17,7 @@ jobs: uses: espressif/upload-components-ci-action@v1 with: directories: > - bsp/esp32_azure_iot_kit;bsp/esp32_s2_kaluga_kit;bsp/esp_wrover_kit;bsp/esp-box;bsp/esp32_s3_usb_otg;bsp/esp32_s3_eye;bsp/esp32_s3_lcd_ev_board;bsp/esp32_s3_korvo_2;bsp/esp-box-lite;bsp/esp32_lyrat;bsp/esp32_c3_lcdkit;bsp/esp-box-3;bsp/esp_bsp_generic;bsp/esp32_s3_korvo_1;bsp/esp32_p4_function_ev_board;bsp/m5stack_core_s3; + bsp/esp32_azure_iot_kit;bsp/esp32_s2_kaluga_kit;bsp/esp_wrover_kit;bsp/esp-box;bsp/esp32_s3_usb_otg;bsp/esp32_s3_eye;bsp/esp32_s3_lcd_ev_board;bsp/esp32_s3_korvo_2;bsp/esp-box-lite;bsp/esp32_lyrat;bsp/esp32_c3_lcdkit;bsp/esp-box-3;bsp/esp_bsp_generic;bsp/esp32_s3_korvo_1;bsp/esp32_p4_function_ev_board;bsp/m5stack_core_s3;bsp/m5dial; components/bh1750;components/ds18b20;components/es8311;components/es7210;components/fbm320;components/hts221;components/mag3110;components/mpu6050;components/esp_lvgl_port;components/icm42670; components/lcd_touch/esp_lcd_touch;components/lcd_touch/esp_lcd_touch_ft5x06;components/lcd_touch/esp_lcd_touch_gt911;components/lcd_touch/esp_lcd_touch_tt21100;components/lcd_touch/esp_lcd_touch_gt1151;components/lcd_touch/esp_lcd_touch_cst816s; components/lcd/esp_lcd_gc9a01;components/lcd/esp_lcd_ili9341;components/lcd/esp_lcd_ra8875;components/lcd_touch/esp_lcd_touch_stmpe610;components/lcd/esp_lcd_sh1107;components/lcd/esp_lcd_st7796;components/lcd/esp_lcd_gc9503;components/lcd/esp_lcd_ssd1681;components/lcd/esp_lcd_ili9881c; diff --git a/.github/workflows/upload_component_noglib.yml b/.github/workflows/upload_component_noglib.yml index 5a5fd7eb..428d6d8c 100644 --- a/.github/workflows/upload_component_noglib.yml +++ b/.github/workflows/upload_component_noglib.yml @@ -16,7 +16,7 @@ jobs: - name: Upload noglib version of BSPs # TODO: Extend this part to all BSPs env: - BSPs: "bsp/esp32_s3_eye bsp/esp32_p4_function_ev_board bsp/m5stack_core_s3" + BSPs: "bsp/esp32_s3_eye bsp/esp32_p4_function_ev_board bsp/m5stack_core_s3 bsp/m5dial" run: | pip install idf-component-manager py-markdown-table --upgrade python .github/ci/bsp_noglib.py ${BSPs} @@ -26,6 +26,7 @@ jobs: bsp/esp32_s3_eye_noglib; bsp/esp32_p4_function_ev_board_noglib; bsp/m5stack_core_s3_noglib; + bsp/m5dial_noglib; namespace: "espressif" api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }} dry_run: ${{ github.ref_name != 'master' || github.repository_owner != 'espressif' }} diff --git a/README.md b/README.md index f3e3c222..744c91a3 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Board support packages for development boards using Espressif's SoCs, written in | [ESP-BOX-3](bsp/esp-box-3) | ESP32-S3 | LCD display with touch, audio codec + power amplifier,
accelerometer and gyroscope | | | [ESP32-S3-KORVO-1](bsp/esp32_s3_korvo_1) | ESP32-S3 | uSD card slot, microphone, audio codec + power amplifier, RGB led strip | | | [M5Stack CoreS3](bsp/m5stack_core_s3) | ESP32-S3 | LCD display with touch, uSD card slot, microphone, audio codec | | +| [M5Dial](bsp/m5dial) | ESP32-S3 | LCD display with touch and encoder | | ## LCD displays and TOUCH | [LVGL port](components/esp_lvgl_port) | [LCD drivers](LCD.md) | @@ -53,7 +54,7 @@ Best way to start with ESP-BSP is trying one of the [examples](examples) on your * `bsp/name-of-the-bsp.h`: Main include file of the BSP with public API * `bsp/esp-bsp.h`: Convenience include file with the same name for all BPSs * `bsp/display.h` and `bsp/touch.h`: Only for BSPs with LCD or touch controller. Contain low level initialization functions for usage without LVGL graphical library - * By default, BSPs with display are shipped with LVGL, if you are interested in BSP without LVGL you can use BSP versions with `noglib` suffix (eg. `esp32_s3_eye_noglib`). + * By default, BSPs with display are shipped with LVGL, if you are interested in BSP without LVGL you can use BSP versions with `noglib` suffix (eg. `esp32_s3_eye_noglib`). > **_NOTE:_** There can be only one BSP in a single esp-idf project. diff --git a/SquareLine/boards/v9/m5dial/image.png b/SquareLine/boards/v9/m5dial/image.png new file mode 100644 index 0000000000000000000000000000000000000000..32875ab2b1982f43fb0de061603d589860d160aa GIT binary patch literal 109720 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 CghWvQ literal 0 HcmV?d00001 diff --git a/SquareLine/boards/v9/m5dial/main/idf_component.yml b/SquareLine/boards/v9/m5dial/main/idf_component.yml new file mode 100644 index 00000000..9884ff05 --- /dev/null +++ b/SquareLine/boards/v9/m5dial/main/idf_component.yml @@ -0,0 +1,6 @@ +description: ESP-BSP SquareLine LVGL Example +targets: + - esp32s3 +dependencies: + idf: ">=5.0" + m5dial: "*" diff --git a/SquareLine/boards/v9/m5dial/manifest.json b/SquareLine/boards/v9/m5dial/manifest.json new file mode 100644 index 00000000..48a6c0cc --- /dev/null +++ b/SquareLine/boards/v9/m5dial/manifest.json @@ -0,0 +1,20 @@ +{ + "name":"M5Dial", + "version":"1.0.0", + "mcu":"ESP32S3", + + "screen_width":"240", + "screen_height":"240", + "screen_color_swap":true, + + "supported_lvgl_version":"9.1.*", + + "short_description":"As a versatile embedded development board, M5Dial integrates the necessary features and sensors for various smart home control applications. It features a 1.28-inch round TFT touchscreen, a rotary encoder, an RFID detection module, an RTC circuit, a buzzer, and under-screen buttons, enabling users to easily implement a wide range of creative projects.", + "long_description":"As a versatile embedded development board, M5Dial integrates the necessary features and sensors for various smart home control applications. It features a 1.28-inch round TFT touchscreen, a rotary encoder, an RFID detection module, an RTC circuit, a buzzer, and under-screen buttons, enabling users to easily implement a wide range of creative projects.", + + "placeholders": + { + "__ESP_BOARD_INCLUDE__": "bsp/esp-bsp.h", + "__ESP_BOARD_I2C_INIT__": "/* Initialize I2C (for touch and audio) */\n bsp_i2c_init();" + } +} diff --git a/SquareLine/boards/v9/m5dial/partitions.csv b/SquareLine/boards/v9/m5dial/partitions.csv new file mode 100644 index 00000000..7c211a41 --- /dev/null +++ b/SquareLine/boards/v9/m5dial/partitions.csv @@ -0,0 +1,5 @@ +# Name, Type, SubType, Offset, Size, Flags +# Note: if you change the phy_init or app partition offset, make sure to change the offset in Kconfig.projbuild +nvs, data, nvs, 0x9000, 0x6000, +phy_init, data, phy, 0xf000, 0x1000, +factory, app, factory, 0x10000, 8M, diff --git a/SquareLine/boards/v9/m5dial/sdkconfig.defaults b/SquareLine/boards/v9/m5dial/sdkconfig.defaults new file mode 100644 index 00000000..6071db68 --- /dev/null +++ b/SquareLine/boards/v9/m5dial/sdkconfig.defaults @@ -0,0 +1,11 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHSIZE_16MB=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/bsp/m5dial/CMakeLists.txt b/bsp/m5dial/CMakeLists.txt new file mode 100644 index 00000000..758a3f46 --- /dev/null +++ b/bsp/m5dial/CMakeLists.txt @@ -0,0 +1,7 @@ +idf_component_register( + SRCS "m5dial.c" + INCLUDE_DIRS "include" + PRIV_INCLUDE_DIRS "priv_include" + REQUIRES driver spiffs + PRIV_REQUIRES fatfs esp_lcd +) diff --git a/bsp/m5dial/Kconfig b/bsp/m5dial/Kconfig new file mode 100644 index 00000000..cf9c5a32 --- /dev/null +++ b/bsp/m5dial/Kconfig @@ -0,0 +1,65 @@ +menu "Board Support Package" + + config BSP_ERROR_CHECK + bool "Enable error check in BSP" + default y + help + Error check assert the application before returning the error code. + + menu "I2C" + config BSP_I2C_NUM + int "I2C peripheral index" + default 1 + range 0 1 + help + ESP32S3 has two I2C peripherals, pick the one you want to use. + + config BSP_I2C_FAST_MODE + bool "Enable I2C fast mode" + default n + help + I2C has two speed modes: normal (100kHz) and fast (400kHz). + + config BSP_I2C_CLK_SPEED_HZ + int + default 400000 if BSP_I2C_FAST_MODE + default 100000 + endmenu + + menu "SPIFFS - Virtual File System" + config BSP_SPIFFS_FORMAT_ON_MOUNT_FAIL + bool "Format SPIFFS if mounting fails" + default n + help + Format SPIFFS if it fails to mount the filesystem. + + config BSP_SPIFFS_MOUNT_POINT + string "SPIFFS mount point" + default "/spiffs" + help + Mount point of SPIFFS in the Virtual File System. + + config BSP_SPIFFS_PARTITION_LABEL + string "Partition label of SPIFFS" + default "storage" + help + Partition label which stores SPIFFS. + + config BSP_SPIFFS_MAX_FILES + int "Max files supported for SPIFFS VFS" + default 5 + help + Supported max files for SPIFFS in the Virtual File System. + endmenu + + menu "Display" + config BSP_DISPLAY_BRIGHTNESS_LEDC_CH + int "LEDC channel index" + default 1 + range 0 7 + help + LEDC channel is used to generate PWM signal that controls display brightness. + Set LEDC index that should be used. + endmenu + +endmenu diff --git a/bsp/m5dial/LICENSE b/bsp/m5dial/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/bsp/m5dial/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bsp/m5dial/README.md b/bsp/m5dial/README.md new file mode 100644 index 00000000..9037cb38 --- /dev/null +++ b/bsp/m5dial/README.md @@ -0,0 +1,35 @@ +# BSP: M5SDial + +[![Component Registry](https://components.espressif.com/components/espressif/m5dial/badge.svg)](https://components.espressif.com/components/espressif/m5dial ) + +* [Hardware Reference](https://docs.m5stack.com/en/core/M5Dial) + +![image](pic.webp) + +As a versatile embedded development board, M5Dial integrates the necessary features and sensors for various smart home control applications. It features a 1.28-inch round TFT touchscreen, a rotary encoder, an RFID detection module, an RTC circuit, a buzzer, and under-screen buttons, enabling users to easily implement a wide range of creative projects. + +The main controller of M5Dial is M5StampS3, a micro module based on the ESP32-S3 chip known for its high performance and low power consumption. It supports Wi-Fi, as well as various peripheral interfaces such as SPI, I2C, UART, ADC, and more. M5StampS3 also comes with 8MB of built-in Flash, providing sufficient storage space for users. + +The standout feature of M5Dial is its rotary encoder, which accurately records the position and direction of the knob, delivering a better interactive experience. Users can adjust settings such as volume, brightness, and menu options using the knob, or control home applications like lights, air conditioning, and curtains. The device's built-in display screen allows for displaying different interaction colors and effects. + +With its compact size and lightweight design, M5Dial is suitable for various embedded applications. Whether it's controlling home devices in the smart home domain or monitoring and controlling systems in industrial automation, M5Dial can be easily integrated to provide intelligent control and interaction capabilities. + +M5Dial also features RFID detection, enabling the recognition of RFID cards and tags operating at 13.56MHz. Users can utilize this function for applications such as access control, identity verification, and payments.Furthermore, M5Dial is equipped with an RTC circuit to maintain accurate time and date. Additionally, it includes an onboard buzzer and a physical button for device sound prompts and wake-up operations. + +M5Dial provides versatile power supply options to cater to various needs. It accommodates a wide range of input voltages, accepting 6-36V DC input. Additionally, it features a battery port with a built-in charging circuit, enabling seamless connection to external Lithium batteries. This adaptability allows users to power M5Dial via USB-C, the DC interface, or an external battery for on-the-go convenience. M5Dial also reserves two PORTA and PORTB interfaces, supporting the expansion of I2C and GPIO devices. Users can connect various sensors, actuators, displays, and other peripherals through these interfaces, adding more functionality and possibilities. + + +### Capabilities and dependencies +| Capability | Available | Component | Version| +|-------------|------------------|------------------------------------------------------------------------------------------------------------|--------| +| DISPLAY |:heavy_check_mark:| [espressif/esp_lcd_gc9a01](https://components.espressif.com/components/espressif/esp_lcd_gc9a01) | ^1 | +| LVGL_PORT |:heavy_check_mark:| [espressif/esp_lvgl_port](https://components.espressif.com/components/espressif/esp_lvgl_port) | ^2 | +| TOUCH |:heavy_check_mark:|[espressif/esp_lcd_touch_ft5x06](https://components.espressif.com/components/espressif/esp_lcd_touch_ft5x06)| ^1 | +| BUTTONS |:heavy_check_mark:| [espressif/button](https://components.espressif.com/components/espressif/button) |>=2,<4.0| +| KNOB |:heavy_check_mark:| [espressif/knob](https://components.espressif.com/components/espressif/knob) | ^0.1.3 | +| AUDIO | :x: | | | +|AUDIO_SPEAKER| :x: | | | +| AUDIO_MIC | :x: | | | +| SDCARD | :x: | | | +| IMU | :x: | | | + diff --git a/bsp/m5dial/idf_component.yml b/bsp/m5dial/idf_component.yml new file mode 100644 index 00000000..5228b775 --- /dev/null +++ b/bsp/m5dial/idf_component.yml @@ -0,0 +1,26 @@ +version: "1.0.0" +description: Board Support Package (BSP) for M5Dial +url: https://github.com/espressif/esp-bsp/tree/master/bsp/m5dial + +targets: + - esp32s3 + +tags: + - bsp + +dependencies: + idf: ">=5.0" + esp_lcd_gc9a01: "^1" + esp_lcd_touch_ft5x06: "^1" + + espressif/esp_lvgl_port: + version: "^2" + public: true + + button: + public: true + version: ">=2,<4.0" + + knob: + version: "^0.1.3" + public: true diff --git a/bsp/m5dial/include/bsp/config.h b/bsp/m5dial/include/bsp/config.h new file mode 100644 index 00000000..f3cb5ebe --- /dev/null +++ b/bsp/m5dial/include/bsp/config.h @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +/************************************************************************************************** + * BSP configuration + **************************************************************************************************/ +// By default, this BSP is shipped with LVGL graphical library. Enabling this option will exclude it. +// If you want to use BSP without LVGL, select BSP version with 'noglib' suffix. +#if !defined(BSP_CONFIG_NO_GRAPHIC_LIB) // Check if the symbol is not coming from compiler definitions (-D...) +#define BSP_CONFIG_NO_GRAPHIC_LIB (0) +#endif diff --git a/bsp/m5dial/include/bsp/display.h b/bsp/m5dial/include/bsp/display.h new file mode 100644 index 00000000..3429108e --- /dev/null +++ b/bsp/m5dial/include/bsp/display.h @@ -0,0 +1,123 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief BSP LCD + * + * This file offers API for basic LCD control. + * It is useful for users who want to use the LCD without the default Graphical Library LVGL. + * + * For standard LCD initialization with LVGL graphical library, you can call all-in-one function bsp_display_start(). + */ + +#pragma once +#include "esp_lcd_types.h" + +/* LCD color formats */ +#define ESP_LCD_COLOR_FORMAT_RGB565 (1) +#define ESP_LCD_COLOR_FORMAT_RGB888 (2) + +/* LCD display color format */ +#define BSP_LCD_COLOR_FORMAT (ESP_LCD_COLOR_FORMAT_RGB565) +/* LCD display color bytes endianess */ +#define BSP_LCD_BIGENDIAN (1) +/* LCD display color bits */ +#define BSP_LCD_BITS_PER_PIXEL (16) +/* LCD display color space */ +#define BSP_LCD_COLOR_SPACE (ESP_LCD_COLOR_SPACE_BGR) +/* LCD definition */ +#define BSP_LCD_H_RES (240) +#define BSP_LCD_V_RES (240) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief BSP display configuration structure + * + */ +typedef struct { + int max_transfer_sz; /*!< Maximum transfer size, in bytes. */ +} bsp_display_config_t; + +/** + * @brief Create new display panel + * + * For maximum flexibility, this function performs only reset and initialization of the display. + * You must turn on the display explicitly by calling esp_lcd_panel_disp_on_off(). + * The display's backlight is not turned on either. You can use bsp_display_backlight_on/off(), + * bsp_display_brightness_set() (on supported boards) or implement your own backlight control. + * + * If you want to free resources allocated by this function, you can use esp_lcd API, ie.: + * + * \code{.c} + * esp_lcd_panel_del(panel); + * esp_lcd_panel_io_del(io); + * spi_bus_free(spi_num_from_configuration); + * \endcode + * + * @param[in] config display configuration + * @param[out] ret_panel esp_lcd panel handle + * @param[out] ret_io esp_lcd IO handle + * @return + * - ESP_OK On success + * - Else esp_lcd failure + */ +esp_err_t bsp_display_new(const bsp_display_config_t *config, esp_lcd_panel_handle_t *ret_panel, esp_lcd_panel_io_handle_t *ret_io); + +/** + * @brief Initialize display's brightness + * + * Brightness is controlled with PWM signal to a pin controlling backlight. + * + * @return + * - ESP_OK On success + * - ESP_ERR_INVALID_ARG Parameter error + */ +esp_err_t bsp_display_brightness_init(void); + +/** + * @brief Set display's brightness + * + * Brightness is controlled with PWM signal to a pin controlling backlight. + * Brightness must be already initialized by calling bsp_display_brightness_init() or bsp_display_new() + * + * @param[in] brightness_percent Brightness in [%] + * @return + * - ESP_OK On success + * - ESP_ERR_INVALID_ARG Parameter error + */ +esp_err_t bsp_display_brightness_set(int brightness_percent); + +/** + * @brief Turn on display backlight + * + * Brightness is controlled with PWM signal to a pin controlling backlight. + * Brightness must be already initialized by calling bsp_display_brightness_init() or bsp_display_new() + * + * @return + * - ESP_OK On success + * - ESP_ERR_INVALID_ARG Parameter error + */ +esp_err_t bsp_display_backlight_on(void); + +/** + * @brief Turn off display backlight + * + * Brightness is controlled with PWM signal to a pin controlling backlight. + * Brightness must be already initialized by calling bsp_display_brightness_init() or bsp_display_new() + * + * @return + * - ESP_OK On success + * - ESP_ERR_INVALID_ARG Parameter error + */ +esp_err_t bsp_display_backlight_off(void); + +#ifdef __cplusplus +} +#endif diff --git a/bsp/m5dial/include/bsp/esp-bsp.h b/bsp/m5dial/include/bsp/esp-bsp.h new file mode 100644 index 00000000..1cb9dac4 --- /dev/null +++ b/bsp/m5dial/include/bsp/esp-bsp.h @@ -0,0 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once +#include "bsp/m5dial.h" diff --git a/bsp/m5dial/include/bsp/m5dial.h b/bsp/m5dial/include/bsp/m5dial.h new file mode 100644 index 00000000..476f181b --- /dev/null +++ b/bsp/m5dial/include/bsp/m5dial.h @@ -0,0 +1,229 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief ESP BSP: M5Dial + */ + +#pragma once + +#include "sdkconfig.h" +#include "driver/gpio.h" +#include "driver/i2c.h" +#include "bsp/config.h" +#include "bsp/display.h" + +#if (BSP_CONFIG_NO_GRAPHIC_LIB == 0) +#include "lvgl.h" +#include "esp_lvgl_port.h" +#endif // BSP_CONFIG_NO_GRAPHIC_LIB == 0 + +/************************************************************************************************** + * BSP Capabilities + **************************************************************************************************/ + +#define BSP_CAPS_DISPLAY 1 +#define BSP_CAPS_TOUCH 1 +#define BSP_CAPS_BUTTONS 1 +#define BSP_CAPS_KNOB 1 +#define BSP_CAPS_AUDIO 0 +#define BSP_CAPS_AUDIO_SPEAKER 0 +#define BSP_CAPS_AUDIO_MIC 0 +#define BSP_CAPS_SDCARD 0 +#define BSP_CAPS_IMU 0 + +/************************************************************************************************** + * M5Dial pinout + **************************************************************************************************/ +/* I2C */ +#define BSP_I2C_SCL (GPIO_NUM_12) +#define BSP_I2C_SDA (GPIO_NUM_11) + +/* Encoder */ +#define BSP_ENCODER_A (GPIO_NUM_41) +#define BSP_ENCODER_B (GPIO_NUM_40) + +/* Display */ +#define BSP_LCD_MOSI (GPIO_NUM_5) +#define BSP_LCD_MISO (GPIO_NUM_NC) +#define BSP_LCD_PCLK (GPIO_NUM_6) +#define BSP_LCD_CS (GPIO_NUM_7) +#define BSP_LCD_DC (GPIO_NUM_4) +#define BSP_LCD_RST (GPIO_NUM_8) +#define BSP_LCD_BACKLIGHT (GPIO_NUM_9) +#define BSP_LCD_TOUCH_INT (GPIO_NUM_14) + +/* Buttons */ +typedef enum { + BSP_BTN_PRESS = GPIO_NUM_42, +} bsp_button_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/************************************************************************************************** + * + * I2C interface + * + * There are multiple devices connected to I2C peripheral: + * - LCD Touch controller + **************************************************************************************************/ +#define BSP_I2C_NUM CONFIG_BSP_I2C_NUM + +/** + * @brief Init I2C driver + * + * @return + * - ESP_OK On success + * - ESP_ERR_INVALID_ARG I2C parameter error + * - ESP_FAIL I2C driver installation error + * + */ +esp_err_t bsp_i2c_init(void); + +/** + * @brief Deinit I2C driver and free its resources + * + * @return + * - ESP_OK On success + * - ESP_ERR_INVALID_ARG I2C parameter error + * + */ +esp_err_t bsp_i2c_deinit(void); + +/************************************************************************************************** + * + * SPIFFS + * + * After mounting the SPIFFS, it can be accessed with stdio functions ie.: + * \code{.c} + * FILE* f = fopen(BSP_SPIFFS_MOUNT_POINT"/hello.txt", "w"); + * fprintf(f, "Hello World!\n"); + * fclose(f); + * \endcode + **************************************************************************************************/ +#define BSP_SPIFFS_MOUNT_POINT CONFIG_BSP_SPIFFS_MOUNT_POINT + +/** + * @brief Mount SPIFFS to virtual file system + * + * @return + * - ESP_OK on success + * - ESP_ERR_INVALID_STATE if esp_vfs_spiffs_register was already called + * - ESP_ERR_NO_MEM if memory can not be allocated + * - ESP_FAIL if partition can not be mounted + * - other error codes + */ +esp_err_t bsp_spiffs_mount(void); + +/** + * @brief Unmount SPIFFS from virtual file system + * + * @return + * - ESP_OK on success + * - ESP_ERR_NOT_FOUND if the partition table does not contain SPIFFS partition with given label + * - ESP_ERR_INVALID_STATE if esp_vfs_spiffs_unregister was already called + * - ESP_ERR_NO_MEM if memory can not be allocated + * - ESP_FAIL if partition can not be mounted + * - other error codes + */ +esp_err_t bsp_spiffs_unmount(void); + +/************************************************************************************************** + * + * LCD interface + * + * M5Dial is shipped with 1.28inch GC9A01 round display controller. + * It features 16-bit colors, 240x240 resolution and capacitive touch controller. + * + * LVGL is used as graphics library. LVGL is NOT thread safe, therefore the user must take LVGL mutex + * by calling bsp_display_lock() before calling and LVGL API (lv_...) and then give the mutex with + * bsp_display_unlock(). + * + * Display's backlight must be enabled explicitly by calling bsp_display_backlight_on() + **************************************************************************************************/ +#define BSP_LCD_PIXEL_CLOCK_HZ (40 * 1000 * 1000) +#define BSP_LCD_SPI_NUM (SPI3_HOST) + + +#if (BSP_CONFIG_NO_GRAPHIC_LIB == 0) +#define BSP_LCD_DRAW_BUFF_SIZE (BSP_LCD_H_RES * 50) +#define BSP_LCD_DRAW_BUFF_DOUBLE (1) + +/** + * @brief BSP display configuration structure + */ +typedef struct { + lvgl_port_cfg_t lvgl_port_cfg; /*!< LVGL port configuration */ + uint32_t buffer_size; /*!< Size of the buffer for the screen in pixels */ + bool double_buffer; /*!< True, if should be allocated two buffers */ + struct { + unsigned int buff_dma: 1; /*!< Allocated LVGL buffer will be DMA capable */ + unsigned int buff_spiram: 1; /*!< Allocated LVGL buffer will be in PSRAM */ + } flags; +} bsp_display_cfg_t; +/** + * @brief Initialize display + * + * This function initializes SPI, display controller and starts LVGL handling task. + * LCD backlight must be enabled separately by calling bsp_display_brightness_set() + * + * @return Pointer to LVGL display or NULL when error occured + */ +lv_display_t *bsp_display_start(void); + +/** + * @brief Initialize display + * + * This function initializes SPI, display controller and starts LVGL handling task. + * LCD backlight must be enabled separately by calling bsp_display_brightness_set() + * + * @param cfg display configuration + * + * @return Pointer to LVGL display or NULL when error occured + */ +lv_display_t *bsp_display_start_with_config(const bsp_display_cfg_t *cfg); + +/** + * @brief Get pointer to input device (touch, buttons, ...) + * + * @note The LVGL input device is initialized in bsp_display_start() function. + * + * @return Pointer to LVGL input device or NULL when not initialized + */ +lv_indev_t *bsp_display_get_input_dev(void); + +/** + * @brief Take LVGL mutex + * + * @param timeout_ms Timeout in [ms]. 0 will block indefinitely. + * @return true Mutex was taken + * @return false Mutex was NOT taken + */ +bool bsp_display_lock(uint32_t timeout_ms); + +/** + * @brief Give LVGL mutex + * + */ +void bsp_display_unlock(void); + +/** + * @brief Rotate screen + * + * Display must be already initialized by calling bsp_display_start() + * + * @param[in] disp Pointer to LVGL display + * @param[in] rotation Angle of the display rotation + */ +void bsp_display_rotate(lv_display_t *disp, lv_display_rotation_t rotation); +#endif // BSP_CONFIG_NO_GRAPHIC_LIB == 0 + +#ifdef __cplusplus +} +#endif diff --git a/bsp/m5dial/include/bsp/touch.h b/bsp/m5dial/include/bsp/touch.h new file mode 100644 index 00000000..095e8ce1 --- /dev/null +++ b/bsp/m5dial/include/bsp/touch.h @@ -0,0 +1,51 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief BSP Touchscreen + * + * This file offers API for basic touchscreen initialization. + * It is useful for users who want to use the touchscreen without the default Graphical Library LVGL. + * + * For standard LCD initialization with LVGL graphical library, you can call all-in-one function bsp_display_start(). + */ + +#pragma once +#include "esp_lcd_touch.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief BSP touch configuration structure + * + */ +typedef struct { + void *dummy; /*!< Prepared for future use. */ +} bsp_touch_config_t; + +/** + * @brief Create new touchscreen + * + * If you want to free resources allocated by this function, you can use esp_lcd_touch API, ie.: + * + * \code{.c} + * esp_lcd_touch_del(tp); + * \endcode + * + * @param[in] config touch configuration + * @param[out] ret_touch esp_lcd_touch touchscreen handle + * @return + * - ESP_OK On success + * - Else esp_lcd_touch failure + */ +esp_err_t bsp_touch_new(const bsp_touch_config_t *config, esp_lcd_touch_handle_t *ret_touch); + +#ifdef __cplusplus +} +#endif diff --git a/bsp/m5dial/m5dial.c b/bsp/m5dial/m5dial.c new file mode 100644 index 00000000..fe4820ff --- /dev/null +++ b/bsp/m5dial/m5dial.c @@ -0,0 +1,381 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "driver/gpio.h" +#include "driver/ledc.h" +#include "driver/spi_master.h" +#include "esp_err.h" +#include "esp_log.h" +#include "esp_check.h" +#include "esp_spiffs.h" +#include "esp_lcd_panel_io.h" +#include "esp_lcd_panel_vendor.h" +#include "esp_lcd_panel_ops.h" +#include "esp_vfs_fat.h" +#include "driver/i2c.h" + +#include "bsp/m5dial.h" +#include "bsp/display.h" +#include "bsp/touch.h" +#include "iot_knob.h" +#include "esp_lcd_gc9a01.h" +#include "esp_lcd_touch_ft5x06.h" +#include "esp_lvgl_port.h" +#include "bsp_err_check.h" + +static const char *TAG = "M5Dial"; + +#if (BSP_CONFIG_NO_GRAPHIC_LIB == 0) +static lv_display_t *disp; +static lv_indev_t *disp_indev_touch = NULL; +static lv_indev_t *disp_indev_enc = NULL; +#endif // BSP_CONFIG_NO_GRAPHIC_LIB == 0 +static esp_lcd_touch_handle_t tp; // LCD touch handle +static bool i2c_initialized = false; +static bool spi_initialized = false; + +static const button_config_t bsp_encoder_btn_config = { + .type = BUTTON_TYPE_GPIO, + .gpio_button_config.active_level = false, + .gpio_button_config.gpio_num = BSP_BTN_PRESS, +}; + +static const knob_config_t bsp_encoder_a_b_config = { + .default_direction = 0, + .gpio_encoder_a = BSP_ENCODER_A, + .gpio_encoder_b = BSP_ENCODER_B, +}; + +esp_err_t bsp_i2c_init(void) +{ + /* I2C was initialized before */ + if (i2c_initialized) { + return ESP_OK; + } + + const i2c_config_t i2c_conf = { + .mode = I2C_MODE_MASTER, + .sda_io_num = BSP_I2C_SDA, + .sda_pullup_en = GPIO_PULLUP_ENABLE, + .scl_io_num = BSP_I2C_SCL, + .scl_pullup_en = GPIO_PULLUP_ENABLE, + .master.clk_speed = CONFIG_BSP_I2C_CLK_SPEED_HZ + }; + BSP_ERROR_CHECK_RETURN_ERR(i2c_param_config(BSP_I2C_NUM, &i2c_conf)); + BSP_ERROR_CHECK_RETURN_ERR(i2c_driver_install(BSP_I2C_NUM, i2c_conf.mode, 0, 0, 0)); + + i2c_initialized = true; + + return ESP_OK; +} + +esp_err_t bsp_i2c_deinit(void) +{ + BSP_ERROR_CHECK_RETURN_ERR(i2c_driver_delete(BSP_I2C_NUM)); + i2c_initialized = false; + return ESP_OK; +} + +static esp_err_t bsp_spi_init(uint32_t max_transfer_sz) +{ + /* SPI was initialized before */ + if (spi_initialized) { + return ESP_OK; + } + + ESP_LOGD(TAG, "Initialize SPI bus"); + const spi_bus_config_t buscfg = { + .sclk_io_num = BSP_LCD_PCLK, + .mosi_io_num = BSP_LCD_MOSI, + .miso_io_num = BSP_LCD_MISO, + .quadwp_io_num = GPIO_NUM_NC, + .quadhd_io_num = GPIO_NUM_NC, + .max_transfer_sz = max_transfer_sz, + }; + ESP_RETURN_ON_ERROR(spi_bus_initialize(BSP_LCD_SPI_NUM, &buscfg, SPI_DMA_CH_AUTO), TAG, "SPI init failed"); + + spi_initialized = true; + + return ESP_OK; +} + +esp_err_t bsp_spiffs_mount(void) +{ + esp_vfs_spiffs_conf_t conf = { + .base_path = CONFIG_BSP_SPIFFS_MOUNT_POINT, + .partition_label = CONFIG_BSP_SPIFFS_PARTITION_LABEL, + .max_files = CONFIG_BSP_SPIFFS_MAX_FILES, +#ifdef CONFIG_BSP_SPIFFS_FORMAT_ON_MOUNT_FAIL + .format_if_mount_failed = true, +#else + .format_if_mount_failed = false, +#endif + }; + + esp_err_t ret_val = esp_vfs_spiffs_register(&conf); + + BSP_ERROR_CHECK_RETURN_ERR(ret_val); + + size_t total = 0, used = 0; + ret_val = esp_spiffs_info(conf.partition_label, &total, &used); + if (ret_val != ESP_OK) { + ESP_LOGE(TAG, "Failed to get SPIFFS partition information (%s)", esp_err_to_name(ret_val)); + } else { + ESP_LOGI(TAG, "Partition size: total: %d, used: %d", total, used); + } + + return ret_val; +} + +esp_err_t bsp_spiffs_unmount(void) +{ + return esp_vfs_spiffs_unregister(CONFIG_BSP_SPIFFS_PARTITION_LABEL); +} + +// Bit number used to represent command and parameter +#define LCD_CMD_BITS 8 +#define LCD_PARAM_BITS 8 +#define LCD_LEDC_CH CONFIG_BSP_DISPLAY_BRIGHTNESS_LEDC_CH + +esp_err_t bsp_display_brightness_init(void) +{ + // Setup LEDC peripheral for PWM backlight control + const ledc_channel_config_t LCD_backlight_channel = { + .gpio_num = BSP_LCD_BACKLIGHT, + .speed_mode = LEDC_LOW_SPEED_MODE, + .channel = LCD_LEDC_CH, + .intr_type = LEDC_INTR_DISABLE, + .timer_sel = 1, + .duty = 0, + .hpoint = 0 + }; + const ledc_timer_config_t LCD_backlight_timer = { + .speed_mode = LEDC_LOW_SPEED_MODE, + .duty_resolution = LEDC_TIMER_10_BIT, + .timer_num = 1, + .freq_hz = 5000, + .clk_cfg = LEDC_AUTO_CLK + }; + + BSP_ERROR_CHECK_RETURN_ERR(ledc_timer_config(&LCD_backlight_timer)); + BSP_ERROR_CHECK_RETURN_ERR(ledc_channel_config(&LCD_backlight_channel)); + + return ESP_OK; +} + +esp_err_t bsp_display_brightness_set(int brightness_percent) +{ + if (brightness_percent > 100) { + brightness_percent = 100; + } + if (brightness_percent < 0) { + brightness_percent = 0; + } + + ESP_LOGI(TAG, "Setting LCD backlight: %d%%", brightness_percent); + uint32_t duty_cycle = (1023 * brightness_percent) / 100; // LEDC resolution set to 10bits, thus: 100% = 1023 + BSP_ERROR_CHECK_RETURN_ERR(ledc_set_duty(LEDC_LOW_SPEED_MODE, LCD_LEDC_CH, duty_cycle)); + BSP_ERROR_CHECK_RETURN_ERR(ledc_update_duty(LEDC_LOW_SPEED_MODE, LCD_LEDC_CH)); + + return ESP_OK; +} + +esp_err_t bsp_display_backlight_off(void) +{ + return bsp_display_brightness_set(0); +} + +esp_err_t bsp_display_backlight_on(void) +{ + return bsp_display_brightness_set(100); +} + +esp_err_t bsp_display_new(const bsp_display_config_t *config, esp_lcd_panel_handle_t *ret_panel, esp_lcd_panel_io_handle_t *ret_io) +{ + esp_err_t ret = ESP_OK; + assert(config != NULL && config->max_transfer_sz > 0); + + /* Initialize SPI */ + ESP_RETURN_ON_ERROR(bsp_spi_init(config->max_transfer_sz), TAG, ""); + + ESP_LOGD(TAG, "Install panel IO"); + const esp_lcd_panel_io_spi_config_t io_config = { + .dc_gpio_num = BSP_LCD_DC, + .cs_gpio_num = BSP_LCD_CS, + .pclk_hz = BSP_LCD_PIXEL_CLOCK_HZ, + .lcd_cmd_bits = LCD_CMD_BITS, + .lcd_param_bits = LCD_PARAM_BITS, + .spi_mode = 0, + .trans_queue_depth = 10, + }; + ESP_GOTO_ON_ERROR(esp_lcd_new_panel_io_spi((esp_lcd_spi_bus_handle_t)BSP_LCD_SPI_NUM, &io_config, ret_io), err, TAG, "New panel IO failed"); + + ESP_LOGD(TAG, "Install LCD driver"); + const esp_lcd_panel_dev_config_t panel_config = { + .reset_gpio_num = BSP_LCD_RST, // Shared with Touch reset + .color_space = BSP_LCD_COLOR_SPACE, + .bits_per_pixel = BSP_LCD_BITS_PER_PIXEL, + }; + ESP_GOTO_ON_ERROR(esp_lcd_new_panel_gc9a01(*ret_io, &panel_config, ret_panel), err, TAG, "New panel failed"); + + esp_lcd_panel_reset(*ret_panel); + esp_lcd_panel_init(*ret_panel); + esp_lcd_panel_invert_color(*ret_panel, true); + return ret; + +err: + if (*ret_panel) { + esp_lcd_panel_del(*ret_panel); + } + if (*ret_io) { + esp_lcd_panel_io_del(*ret_io); + } + spi_bus_free(BSP_LCD_SPI_NUM); + return ret; +} + +esp_err_t bsp_touch_new(const bsp_touch_config_t *config, esp_lcd_touch_handle_t *ret_touch) +{ + /* Initilize I2C */ + BSP_ERROR_CHECK_RETURN_ERR(bsp_i2c_init()); + + /* Initialize touch */ + const esp_lcd_touch_config_t tp_cfg = { + .x_max = BSP_LCD_H_RES, + .y_max = BSP_LCD_V_RES, + .rst_gpio_num = GPIO_NUM_NC, // Shared with LCD reset + .int_gpio_num = BSP_LCD_TOUCH_INT, + .levels = { + .reset = 0, + .interrupt = 0, + }, + .flags = { + .swap_xy = 0, + .mirror_x = 0, + .mirror_y = 0, + }, + }; + esp_lcd_panel_io_handle_t tp_io_handle = NULL; + const esp_lcd_panel_io_i2c_config_t tp_io_config = ESP_LCD_TOUCH_IO_I2C_FT5x06_CONFIG(); + ESP_RETURN_ON_ERROR(esp_lcd_new_panel_io_i2c((esp_lcd_i2c_bus_handle_t)BSP_I2C_NUM, &tp_io_config, &tp_io_handle), TAG, ""); + return esp_lcd_touch_new_i2c_ft5x06(tp_io_handle, &tp_cfg, ret_touch); +} + +#if (BSP_CONFIG_NO_GRAPHIC_LIB == 0) +static lv_display_t *bsp_display_lcd_init(const bsp_display_cfg_t *cfg) +{ + assert(cfg != NULL); + esp_lcd_panel_io_handle_t io_handle = NULL; + esp_lcd_panel_handle_t panel_handle = NULL; + const bsp_display_config_t bsp_disp_cfg = { + .max_transfer_sz = BSP_LCD_DRAW_BUFF_SIZE * sizeof(uint16_t), + }; + BSP_ERROR_CHECK_RETURN_NULL(bsp_display_new(&bsp_disp_cfg, &panel_handle, &io_handle)); + + esp_lcd_panel_disp_on_off(panel_handle, true); + + /* Add LCD screen */ + ESP_LOGD(TAG, "Add LCD screen"); + const lvgl_port_display_cfg_t disp_cfg = { + .io_handle = io_handle, + .panel_handle = panel_handle, + .buffer_size = cfg->buffer_size, + .double_buffer = cfg->double_buffer, + .hres = BSP_LCD_H_RES, + .vres = BSP_LCD_V_RES, + .monochrome = false, + /* Rotation values must be same as used in esp_lcd for initial settings of the screen */ + .rotation = { + .swap_xy = false, + .mirror_x = true, + .mirror_y = false, + }, + .flags = { + .buff_dma = cfg->flags.buff_dma, + .buff_spiram = cfg->flags.buff_spiram, +#if LVGL_VERSION_MAJOR >= 9 + .swap_bytes = (BSP_LCD_BIGENDIAN ? true : false), +#endif + } + }; + + return lvgl_port_add_disp(&disp_cfg); +} + +static lv_indev_t *bsp_display_indev_encoder_init(lv_display_t *disp) +{ + const lvgl_port_encoder_cfg_t encoder = { + .disp = disp, + .encoder_a_b = &bsp_encoder_a_b_config, + .encoder_enter = &bsp_encoder_btn_config + }; + + return lvgl_port_add_encoder(&encoder); +} + +static lv_indev_t *bsp_display_indev_touch_init(lv_display_t *disp) +{ + BSP_ERROR_CHECK_RETURN_NULL(bsp_touch_new(NULL, &tp)); + assert(tp); + + /* Add touch input (for selected screen) */ + const lvgl_port_touch_cfg_t touch_cfg = { + .disp = disp, + .handle = tp, + }; + + return lvgl_port_add_touch(&touch_cfg); +} + +lv_display_t *bsp_display_start(void) +{ + bsp_display_cfg_t cfg = { + .lvgl_port_cfg = ESP_LVGL_PORT_INIT_CONFIG(), + .buffer_size = BSP_LCD_DRAW_BUFF_SIZE, + .double_buffer = BSP_LCD_DRAW_BUFF_DOUBLE, + .flags = { + .buff_dma = true, + .buff_spiram = false, + } + }; + return bsp_display_start_with_config(&cfg); +} + +lv_display_t *bsp_display_start_with_config(const bsp_display_cfg_t *cfg) +{ + assert(cfg != NULL); + BSP_ERROR_CHECK_RETURN_NULL(lvgl_port_init(&cfg->lvgl_port_cfg)); + + BSP_ERROR_CHECK_RETURN_NULL(bsp_display_brightness_init()); + + BSP_NULL_CHECK(disp = bsp_display_lcd_init(cfg), NULL); + + BSP_NULL_CHECK(disp_indev_touch = bsp_display_indev_touch_init(disp), NULL); + BSP_NULL_CHECK(disp_indev_enc = bsp_display_indev_encoder_init(disp), NULL); + + return disp; +} + +lv_indev_t *bsp_display_get_input_dev(void) +{ + return disp_indev_enc; +} + +void bsp_display_rotate(lv_display_t *disp, lv_display_rotation_t rotation) +{ + lv_disp_set_rotation(disp, rotation); +} + +bool bsp_display_lock(uint32_t timeout_ms) +{ + return lvgl_port_lock(timeout_ms); +} + +void bsp_display_unlock(void) +{ + lvgl_port_unlock(); +} +#endif // (BSP_CONFIG_NO_GRAPHIC_LIB == 0) diff --git a/bsp/m5dial/pic.webp b/bsp/m5dial/pic.webp new file mode 100644 index 0000000000000000000000000000000000000000..812417646e64a9995926466b1d594bc43cfdf619 GIT binary patch literal 104720 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 literal 0 HcmV?d00001 diff --git a/bsp/m5dial/priv_include/bsp_err_check.h b/bsp/m5dial/priv_include/bsp_err_check.h new file mode 100644 index 00000000..cf2f36eb --- /dev/null +++ b/bsp/m5dial/priv_include/bsp_err_check.h @@ -0,0 +1,58 @@ +/* + * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "esp_check.h" +#include "sdkconfig.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Assert on error, if selected in menuconfig. Otherwise return error code. */ +#if CONFIG_BSP_ERROR_CHECK +#define BSP_ERROR_CHECK_RETURN_ERR(x) ESP_ERROR_CHECK(x) +#define BSP_ERROR_CHECK_RETURN_NULL(x) ESP_ERROR_CHECK(x) +#define BSP_ERROR_CHECK(x, ret) ESP_ERROR_CHECK(x) +#define BSP_NULL_CHECK(x, ret) assert(x) +#define BSP_NULL_CHECK_GOTO(x, goto_tag) assert(x) +#else +#define BSP_ERROR_CHECK_RETURN_ERR(x) do { \ + esp_err_t err_rc_ = (x); \ + if (unlikely(err_rc_ != ESP_OK)) { \ + return err_rc_; \ + } \ + } while(0) + +#define BSP_ERROR_CHECK_RETURN_NULL(x) do { \ + if (unlikely((x) != ESP_OK)) { \ + return NULL; \ + } \ + } while(0) + +#define BSP_NULL_CHECK(x, ret) do { \ + if ((x) == NULL) { \ + return ret; \ + } \ + } while(0) + +#define BSP_ERROR_CHECK(x, ret) do { \ + if (unlikely((x) != ESP_OK)) { \ + return ret; \ + } \ + } while(0) + +#define BSP_NULL_CHECK_GOTO(x, goto_tag) do { \ + if ((x) == NULL) { \ + goto goto_tag; \ + } \ + } while(0) +#endif + +#ifdef __cplusplus +} +#endif diff --git a/docu/pics/m5dial.webp b/docu/pics/m5dial.webp new file mode 100644 index 0000000000000000000000000000000000000000..6dc6de7250c44c994c7cdb7b3ef7c13c07ac8c9b GIT binary patch literal 39436 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 a%v6l#|Jwb(djFgtgbU`_xMR)-;NJlIS?~J* literal 0 HcmV?d00001 diff --git a/examples/bsp_ext.py b/examples/bsp_ext.py index f1be4fbf..1ed1b2c9 100644 --- a/examples/bsp_ext.py +++ b/examples/bsp_ext.py @@ -58,7 +58,8 @@ def set_bsp_callback(action: str, ctx: Context, args: PropertyDict, **kwargs: st 'esp_bsp_generic', 'esp32_s3_korvo_1', 'esp32_p4_function_ev_board', - 'm5stack_core_s3' + 'm5stack_core_s3', + 'm5dial' } if bsp == '': diff --git a/examples/display/sdkconfig.bsp.m5dial b/examples/display/sdkconfig.bsp.m5dial new file mode 100644 index 00000000..08ebacc7 --- /dev/null +++ b/examples/display/sdkconfig.bsp.m5dial @@ -0,0 +1,25 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_lvgl_demos/sdkconfig.bsp.m5dial b/examples/display_lvgl_demos/sdkconfig.bsp.m5dial new file mode 100644 index 00000000..c4b5d537 --- /dev/null +++ b/examples/display_lvgl_demos/sdkconfig.bsp.m5dial @@ -0,0 +1,38 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_COMPILER_OPTIMIZATION_PERF=y +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y +CONFIG_FREERTOS_HZ=1000 +CONFIG_LV_MEM_SIZE_KILOBYTES=48 +CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y +CONFIG_LV_FONT_MONTSERRAT_12=y +CONFIG_LV_FONT_MONTSERRAT_16=y +CONFIG_LV_USE_DEMO_WIDGETS=y +CONFIG_LV_USE_DEMO_BENCHMARK=y +CONFIG_LV_USE_DEMO_STRESS=y +CONFIG_LV_USE_DEMO_MUSIC=y +CONFIG_LV_DEMO_MUSIC_AUTO_PLAY=y +CONFIG_LV_DEMO_MUSIC_ROUND=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y diff --git a/examples/display_rotation/sdkconfig.bsp.m5dial b/examples/display_rotation/sdkconfig.bsp.m5dial new file mode 100644 index 00000000..08ebacc7 --- /dev/null +++ b/examples/display_rotation/sdkconfig.bsp.m5dial @@ -0,0 +1,25 @@ +# This file was generated using idf.py save-defconfig. It can be edited manually. +# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration +# +CONFIG_IDF_TARGET="esp32s3" +CONFIG_ESPTOOLPY_FLASHMODE_QIO=y +CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y + +## LVGL8 ## +CONFIG_LV_USE_PERF_MONITOR=y +CONFIG_LV_COLOR_16_SWAP=y +CONFIG_LV_MEM_CUSTOM=y +CONFIG_LV_MEMCPY_MEMSET_STD=y + +## LVGL9 ## +CONFIG_LV_CONF_SKIP=y + +#CLIB default +CONFIG_LV_USE_CLIB_MALLOC=y +CONFIG_LV_USE_CLIB_SPRINTF=y +CONFIG_LV_USE_CLIB_STRING=y + +# Performance monitor +CONFIG_LV_USE_OBSERVER=y +CONFIG_LV_USE_SYSMON=y +CONFIG_LV_USE_PERF_MONITOR=y