├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── Makefile ├── README.md ├── components └── m5stickc-idf │ ├── CMakeLists.txt │ ├── component.mk │ ├── include │ ├── button.h │ ├── i2smic.h │ └── m5stickc.h │ ├── m5stickc.c │ └── util │ ├── AXP192.c │ ├── MPU6886.c │ ├── button.c │ ├── font │ ├── DefaultFont.c │ ├── DejaVuSans18.c │ ├── DejaVuSans24.c │ ├── SmallFont.c │ ├── Ubuntu16.c │ ├── comic24.c │ ├── def_small.c │ ├── default_tiny_9pt.c │ ├── minya24.c │ └── tooney32.c │ ├── i2smic.c │ ├── include │ ├── AXP192.h │ ├── MPU6886.h │ ├── axp192_reg.h │ ├── spi_master_lobo.h │ ├── stmpe610.h │ ├── tft.h │ ├── tftspi.h │ └── wire.h │ ├── spi_master_lobo.c │ ├── tft.c │ ├── tftspi.c │ └── wire.c ├── main ├── CMakeLists.txt ├── Kconfig.projbuild ├── component.mk └── main.c └── sdkconfig /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | build/ 3 | 4 | sdkconfig\.old 5 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(m5stickc) 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 M5Stack 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This is a project Makefile. It is assumed the directory this Makefile resides in is a 3 | # project subdirectory. 4 | # 5 | 6 | PROJECT_NAME := m5stickc 7 | include $(IDF_PATH)/make/project.mk 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # M5stickC-IDF 2 | 3 | > ESP-IDF component to work with M5StickC 4 | > inf: This item is only available for ESP IDF versions below 3.3 5 | > Compiler Environment:esp-idf-v3.2.3 6 | > TFT lib base [loboris TFT library ](https://github.com/loboris/ESP32_TFT_library) 7 | 8 | --- 9 | ## File Tree 10 | ``` 11 | . 12 | ├── components 13 | │   └── m5stickc-idf 14 | │   ├── include 15 | │   │   ├── button.h 16 | │   │   ├── i2smic.h 17 | │   │   └── m5stickc.h 18 | │   ├── util 19 | │   │   ├── font 20 | │   │   │   ├── DefaultFont.c 21 | │   │   │   ├── DejaVuSans18.c 22 | │   │   │   ├── DejaVuSans24.c 23 | │   │   │   ├── SmallFont.c 24 | │   │   │   ├── Ubuntu16.c 25 | │   │   │   ├── comic24.c 26 | │   │   │   ├── def_small.c 27 | │   │   │   ├── default_tiny_9pt.c 28 | │   │   │   ├── minya24.c 29 | │   │   │   └── tooney32.c 30 | │   │   ├── include 31 | │   │   │   ├── AXP192.h 32 | │   │   │   ├── MPU6886.h 33 | │   │   │   ├── axp192_reg.h 34 | │   │   │   ├── spi_master_lobo.h 35 | │   │   │   ├── stmpe610.h 36 | │   │   │   ├── tft.h 37 | │   │   │   ├── tftspi.h 38 | │   │   │   └── wire.h 39 | │   │   ├── AXP192.c 40 | │   │   ├── MPU6886.c 41 | │   │   ├── i2smic.c 42 | │   │   ├── spi_master_lobo.c 43 | │   │   ├── tft.c 44 | │   │   ├── tftspi.c 45 | │   │   └── wire.c 46 | │   ├── CMakeLists.txt 47 | │   ├── LICENSE 48 | │   ├── button.c 49 | │   ├── component.mk 50 | │   └── m5stickc.c 51 | ├── main 52 | │   ├── CMakeLists.txt 53 | │   ├── Kconfig.projbuild 54 | │   ├── component.mk 55 | │   └── main.c 56 | ├── CMakeLists.txt 57 | ├── Makefile 58 | └── sdkconfig 59 | ``` 60 | 61 | ## Versions 62 | * Version 0.0.1 2019-10-21@Hades 63 | * Creat this project 64 | * Add LCD Device Library 65 | * Add Wire(I2C) Library 66 | * Add AXP192 Library 67 | * Add MPU6886 Library 68 | --- 69 | * Version 0.0.2 2019-10-22@Hades 70 | * Edit AXP192 Library 71 | ```C 72 | float AXP192GetVinVoltage(wire_t *wire) 73 | ``` 74 | 75 | * Edit main-Examples 76 | * Add Demo for LCD 77 | * Add Demo for AXP192 78 | * Add Demo for MPU6886 79 | * Add Demo for Button 80 | --- 81 | * Version 1.0.1 2019-10-23@Hades 82 | 83 | * remove power.c & power.h 84 | * remove event.c & event.h 85 | * remove display.c & display.h 86 | 87 | * Edit I2S micophone Examles 88 | ```C 89 | void MicRecordTest() 90 | ``` 91 | * edit m5stick.c 92 | -------------------------------------------------------------------------------- /components/m5stickc-idf/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(m5stickc) 7 | -------------------------------------------------------------------------------- /components/m5stickc-idf/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Main Makefile. This is basically the same as a component makefile. 3 | # 4 | # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) 5 | 6 | COMPONENT_SRCDIRS := . ./util ./util/font 7 | COMPONENT_ADD_INCLUDEDIRS := . ./include ./util ./util/include -------------------------------------------------------------------------------- /components/m5stickc-idf/include/button.h: -------------------------------------------------------------------------------- 1 | /** 2 | * button.h 3 | * 4 | * (C) 2019 - Hades2001 5 | * This code is licensed under the MIT License. 6 | */ 7 | 8 | #ifndef _BUTTON_H_ 9 | #define _BUTTON_H_ 10 | 11 | #ifdef __cplusplus 12 | extern "C" 13 | { 14 | #endif 15 | 16 | #include "esp_system.h" 17 | #include "esp_log.h" 18 | #include "esp_event_loop.h" 19 | #include "m5stickc.h" 20 | 21 | #include "freertos/FreeRTOS.h" 22 | #include "freertos/task.h" 23 | #include "freertos/event_groups.h" 24 | 25 | #define BUTTON_BUTTON_A_GPIO GPIO_NUM_37 26 | #define BUTTON_BUTTON_B_GPIO GPIO_NUM_39 27 | 28 | ESP_EVENT_DECLARE_BASE(BUTTON_A_EVENT_BASE); /*!< BASE event of button A */ 29 | ESP_EVENT_DECLARE_BASE(BUTTON_B_EVENT_BASE); /*!< BASE event of button B */ 30 | 31 | #define BUTTON_TASK_STACK_DEPTH 2048 32 | 33 | /*!< event_group flag bits */ 34 | #define BUTTON_PLUSED_BIT 0x01U 35 | #define BUTTON_RELESED_BIT 0x02U 36 | 37 | /*!< Time constants */ 38 | #define BUTTON_COUNT_TIME 10 39 | #define BUTTON_PRESS_TIME 2000 40 | 41 | typedef enum 42 | { 43 | BUTTON_PRESSED_EVENT = 0, /*!< Normal button press */ 44 | BUTTON_HOLDPRESS_EVENT, /*!< Button hold */ 45 | EVENT_MAX 46 | } button_event_id_t; 47 | 48 | typedef struct 49 | { 50 | gpio_num_t gpionumber; 51 | 52 | uint32_t Countime; /*!< Button debounce time */ 53 | uint32_t Pressedtime; /*!< Button hold time */ 54 | 55 | esp_event_base_t esp_event_base; /*!< Button event base */ 56 | EventGroupHandle_t event_group; /*!< Event group handle */ 57 | TaskHandle_t task; /*!< Button task handle */ 58 | 59 | #if defined(CONFIG_SUPPORT_STATIC_ALLOCATION) 60 | StaticEventGroup_t event_group_buffer; /*!< Event group buffer for static allocation */ 61 | StaticTask_t task_buffer; /*!< Task buffer for static allocation */ 62 | StackType_t task_stack[M5BUTTON_TASK_STACK_DEPTH]; /*!< Task stack for static allocation */ 63 | #endif // STATIC_ALLOCATION 64 | 65 | } button_t; 66 | 67 | 68 | extern button_t button_a; 69 | extern button_t button_b; 70 | extern esp_err_t ButtonInit(); 71 | 72 | #ifdef __cplusplus 73 | } 74 | #endif 75 | 76 | #endif // _M5BUTTON_H_ -------------------------------------------------------------------------------- /components/m5stickc-idf/include/i2smic.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/m5stack/M5StickC-IDF/8d34a2ff711ef06ce663929511d4157ec8ae4b85/components/m5stickc-idf/include/i2smic.h -------------------------------------------------------------------------------- /components/m5stickc-idf/include/m5stickc.h: -------------------------------------------------------------------------------- 1 | /** 2 | * m5stickc.c 3 | * 4 | * (C) 2019 - Hades2001 5 | * This code is licensed under the MIT License. 6 | */ 7 | 8 | #ifndef _STICKC_H_ 9 | #define _STICKC_H_ 10 | 11 | #include "esp_system.h" 12 | #include "esp_err.h" 13 | #include "esp_log.h" 14 | 15 | #include "button.h" 16 | #include "util/include/wire.h" 17 | #include "util/include/MPU6886.h" 18 | #include "util/include/AXP192.h" 19 | #include "util/include/spi_master_lobo.h" 20 | #include "util/include/tftspi.h" 21 | #include "util/include/tft.h" 22 | 23 | extern esp_event_loop_handle_t event_loop; /*!< Event loop for M5 device-specific events */ 24 | extern spi_lobo_device_handle_t m5_display_spi; /*!< SPI device handle */ 25 | 26 | #define M5DISPLAY_TYPE DISP_TYPE_ST7735S /*!< Display type for display driver */ 27 | #define M5DISPLAY_WIDTH 160 /*!< Display width in pixels after rotation */ 28 | #define M5DISPLAY_HEIGHT 80 /*!< Display height in pixels after rotation */ 29 | 30 | 31 | 32 | #ifdef __cplusplus 33 | extern "C" { 34 | #endif 35 | 36 | 37 | /** 38 | * @brief Initialize M5StickC 39 | * 40 | * Initializes power management, display and buttons. 41 | * 42 | * @return ESP_OK success 43 | * ESP_FAIL errors found 44 | */ 45 | esp_err_t M5Init(); 46 | esp_err_t EventInit(); 47 | 48 | #ifdef __cplusplus 49 | } 50 | #endif 51 | 52 | #endif // _M5STICKC_H_ 53 | -------------------------------------------------------------------------------- /components/m5stickc-idf/m5stickc.c: -------------------------------------------------------------------------------- 1 | /** 2 | * m5stickc.h 3 | * 4 | * (C) 2019 - Hades2001 5 | * This code is licensed under the MIT License. 6 | */ 7 | 8 | #include "m5stickc.h" 9 | 10 | static const char *TAG = "M5StickC"; 11 | 12 | esp_event_loop_handle_t event_loop; 13 | spi_lobo_device_handle_t m5_display_spi; 14 | 15 | uint8_t axp192_init_list[28] = { 16 | 'A', 'X', 'P', 17 | 0x06, 0, 11, 18 | 0x10, 0xff, //1 19 | 0x28, 0xCC, //2 20 | 0x82, 0xff, //3 21 | 0x33, 0xC1, //4 22 | 0xB8, 0x80, //5 23 | 0x12, 0x4D, //6 24 | 0x36, 0x0C, //7 25 | 0x90, 0x02, //8 26 | 0x30, 0xec, //9 27 | 0x39, 0xFC, //10 28 | 0x35, 0xA2, //11 29 | }; 30 | 31 | esp_err_t EventInit() 32 | { 33 | esp_event_loop_args_t loop_args = { 34 | .queue_size = 5, 35 | .task_name = "event_loop", 36 | .task_priority = 10, 37 | .task_stack_size = 2048, 38 | .task_core_id = 0}; 39 | 40 | esp_err_t e = esp_event_loop_create(&loop_args, &event_loop); 41 | if (e == ESP_OK) 42 | { 43 | ESP_LOGD(TAG, "Event loop created"); 44 | return ESP_OK; 45 | } 46 | else 47 | { 48 | ESP_LOGE(TAG, "Error creating event loop: %s", esp_err_to_name(e)); 49 | return ESP_FAIL; 50 | } 51 | } 52 | 53 | 54 | esp_err_t M5DisplayInit() 55 | { 56 | esp_err_t e; 57 | 58 | tft_disp_type = M5DISPLAY_TYPE; 59 | _width = 80; // smaller dimension 60 | _height = 160; // larger dimension 61 | max_rdclock = 25000000; 62 | 63 | TFT_PinsInit(); 64 | 65 | spi_lobo_bus_config_t buscfg = {}; 66 | buscfg.miso_io_num = PIN_NUM_MISO; // set SPI MISO pin 67 | buscfg.mosi_io_num = PIN_NUM_MOSI; // set SPI MOSI pin 68 | buscfg.sclk_io_num = PIN_NUM_CLK; // set SPI CLK pin 69 | buscfg.quadwp_io_num = -1; 70 | buscfg.quadhd_io_num = -1; 71 | buscfg.max_transfer_sz = 6 * 1024; 72 | 73 | spi_lobo_device_interface_config_t devcfg = {}; 74 | devcfg.clock_speed_hz = 25000000; // Initial clock out at 8 MHz 75 | devcfg.mode = 0; // SPI mode 0 76 | devcfg.spics_io_num = -1; // we will use external CS pin 77 | devcfg.spics_ext_io_num = PIN_NUM_CS; // external CS pin 78 | devcfg.flags = LB_SPI_DEVICE_HALFDUPLEX; // ALWAYS SET to HALF DUPLEX MODE!! for display spi 79 | 80 | e = spi_lobo_bus_add_device(TFT_HSPI_HOST, &buscfg, &devcfg, &m5_display_spi); 81 | if (e != ESP_OK) 82 | { 83 | ESP_LOGE(TAG, "Error adding display to SPI bus: %s", esp_err_to_name(e)); 84 | return ESP_FAIL; 85 | } 86 | 87 | disp_spi = m5_display_spi; 88 | 89 | // ==== Test select/deselect ==== 90 | spi_lobo_device_select(m5_display_spi, 1); 91 | spi_lobo_device_deselect(m5_display_spi); 92 | 93 | // Pin reset 94 | gpio_set_level((gpio_num_t)PIN_NUM_RST, 1); 95 | vTaskDelay(5 / portTICK_PERIOD_MS); 96 | gpio_set_level((gpio_num_t)PIN_NUM_RST, 0); 97 | vTaskDelay(20 / portTICK_PERIOD_MS); 98 | gpio_set_level((gpio_num_t)PIN_NUM_RST, 1); 99 | 100 | TFT_display_init(); 101 | TFT_invertDisplay(INVERT_ON); 102 | 103 | // ==== Set SPI clock used for display operations ==== 104 | spi_lobo_set_speed(m5_display_spi, DEFAULT_SPI_CLOCK); 105 | 106 | font_rotate = 0; 107 | text_wrap = 0; 108 | font_transparent = 0; 109 | font_forceFixed = 0; 110 | gray_scale = 0; 111 | TFT_setGammaCurve(DEFAULT_GAMMA_CURVE); 112 | TFT_setRotation(LANDSCAPE); 113 | TFT_setFont(DEFAULT_FONT, NULL); 114 | TFT_resetclipwin(); 115 | 116 | return ESP_OK; 117 | } 118 | 119 | esp_err_t M5Init() 120 | { 121 | esp_err_t e; 122 | uint8_t error_count = 0; 123 | 124 | EventInit(); 125 | 126 | ESP_LOGI(TAG, "Setting up I2C"); 127 | e = InitI2CWire(&wire0); 128 | if (e == ESP_OK) 129 | { 130 | AxpInitFromList(&wire0, axp192_init_list); 131 | } 132 | else 133 | { 134 | ESP_LOGE(TAG, "Error setting up I2C: %s", esp_err_to_name(e)); 135 | ++error_count; 136 | } 137 | // Init button 138 | e = ButtonInit(); 139 | if (e == ESP_OK) 140 | { 141 | ESP_LOGD(TAG, "Button initialized"); 142 | } 143 | else 144 | { 145 | ESP_LOGE(TAG, "Error initializing button"); 146 | ++error_count; 147 | } 148 | 149 | MPU6886Init(); 150 | 151 | // Init display 152 | e = M5DisplayInit(); 153 | if (e == ESP_OK) 154 | { 155 | ESP_LOGD(TAG, "Display initialized"); 156 | } 157 | else 158 | { 159 | ESP_LOGE(TAG, "Error initializing display"); 160 | ++error_count; 161 | } 162 | 163 | if (error_count == 0) 164 | { 165 | ESP_LOGD(TAG, "M5StickC initialized successfully"); 166 | return ESP_OK; 167 | } 168 | else 169 | { 170 | ESP_LOGE(TAG, "%d errors found while initializing M5StickC", error_count); 171 | return ESP_FAIL; 172 | } 173 | } -------------------------------------------------------------------------------- /components/m5stickc-idf/util/AXP192.c: -------------------------------------------------------------------------------- 1 | #include "AXP192.h" 2 | 3 | int8_t AxpInitFromList(wire_t *wire, uint8_t *Buff) 4 | { 5 | uint16_t offset = 0; 6 | uint16_t size = 0; 7 | 8 | if ((Buff[0] != 'A') || (Buff[1] != 'X') || (Buff[2] != 'P')) 9 | { 10 | return -1; 11 | } 12 | else 13 | { 14 | offset = Buff[3]; 15 | size = (Buff[4] << 8) + Buff[5]; 16 | } 17 | 18 | for (int i = 0; i < size; i++) 19 | { 20 | AxpWriteByte(wire, Buff[offset + i * 2], Buff[offset + i * 2 + 1]); 21 | } 22 | return 0; 23 | } 24 | 25 | void AxpWriteByte(wire_t *wire, uint8_t Addr, uint8_t Data) 26 | { 27 | I2Cwirtebyte(wire, 0x34, Addr, Data); 28 | } 29 | 30 | uint8_t AxpRead8bit(wire_t *wire, uint8_t Addr) 31 | { 32 | uint8_t redata = I2Creadbyte(wire, 0x34, Addr); 33 | return redata; 34 | } 35 | 36 | uint16_t AxpRead12Bit(wire_t *wire, uint8_t Addr) 37 | { 38 | uint16_t Data = 0; 39 | uint8_t rd_buff[2]; 40 | I2CreadBuff(wire, 0x34, Addr, rd_buff, 2); 41 | Data = ((rd_buff[0] << 4) + rd_buff[1]); // 42 | return Data; 43 | } 44 | 45 | uint16_t AxpRead13Bit(wire_t *wire, uint8_t Addr) 46 | { 47 | uint16_t Data = 0; 48 | uint8_t rd_buff[2]; 49 | I2CreadBuff(wire, 0x34, Addr, rd_buff, 2); 50 | Data = ((rd_buff[0] << 5) + rd_buff[1]); // 51 | return Data; 52 | } 53 | 54 | uint16_t AxpRead16bit(wire_t *wire, uint8_t Addr) 55 | { 56 | uint16_t Data = 0; 57 | uint8_t rd_buff[2]; 58 | I2CreadBuff(wire, 0x34, Addr, rd_buff, 2); 59 | Data = ((rd_buff[0] << 8) + rd_buff[1]); // 60 | return Data; 61 | } 62 | 63 | uint32_t AxpRead24bit(wire_t *wire, uint8_t Addr) 64 | { 65 | uint32_t ReData = 0; 66 | for (int i = 0; i < 3; i++) 67 | { 68 | ReData <<= 8; 69 | ReData |= I2Creadbyte(wire, 0x34, Addr + i); 70 | } 71 | return ReData; 72 | } 73 | 74 | uint32_t AxpRead32bit(wire_t *wire, uint8_t Addr) 75 | { 76 | uint32_t ReData = 0; 77 | for (int i = 0; i < 4; i++) 78 | { 79 | ReData <<= 8; 80 | ReData |= I2Creadbyte(wire, 0x34, Addr + i); 81 | } 82 | return ReData; 83 | } 84 | 85 | void AxpReadBuff(wire_t *wire, uint8_t Addr, uint8_t Size, uint8_t *Buff) 86 | { 87 | I2CreadBuff(wire, 0x34, Addr, Buff, Size); 88 | } 89 | 90 | float AXP192GetBatVoltage(wire_t *wire) 91 | { 92 | float ADCLSB = 1.1 / 1000.0; 93 | uint16_t ReData = AxpRead12Bit(wire, 0x78); 94 | return ReData * ADCLSB; 95 | } 96 | 97 | float AXP192GetBatCurrent(wire_t *wire) 98 | { 99 | float ADCLSB = 0.5; 100 | uint16_t CurrentIn = AxpRead13Bit(wire, 0x7A); 101 | uint16_t CurrentOut = AxpRead13Bit(wire, 0x7C); 102 | return (CurrentOut - CurrentIn) * ADCLSB; 103 | } 104 | 105 | float AXP192GetVinVoltage(wire_t *wire) 106 | { 107 | float ADCLSB = 1.7/1000; 108 | uint16_t ReData = AxpRead12Bit(wire, 0x56); 109 | return ReData * ADCLSB; 110 | } 111 | 112 | float AXP192GetVinCurrent(wire_t *wire) 113 | { 114 | float ADCLSB = 0.625; 115 | uint16_t ReData = AxpRead12Bit(wire, 0x58); 116 | return ReData * ADCLSB; 117 | } 118 | 119 | float AXP192GetVBusVoltage(wire_t *wire) 120 | { 121 | float ADCLSB = 1.7; 122 | uint16_t ReData = AxpRead12Bit(wire, 0x5A); 123 | return ReData * ADCLSB; 124 | } 125 | 126 | float AXP192GetVBusCurrent(wire_t *wire) 127 | { 128 | float ADCLSB = 0.375; 129 | uint16_t ReData = AxpRead12Bit(wire, 0x5C); 130 | return ReData * ADCLSB; 131 | } 132 | 133 | float AXP192GetTempInAXP192(wire_t *wire) 134 | { 135 | float ADCLSB = 0.1; 136 | const float OFFSET_DEG_C = -144.7; 137 | uint16_t ReData = AxpRead12Bit(wire, 0x5E); 138 | return OFFSET_DEG_C + ReData * ADCLSB; 139 | } 140 | 141 | float AXP192GetBatPower(wire_t *wire) 142 | { 143 | float VoltageLSB = 1.1; 144 | float CurrentLCS = 0.5; 145 | uint32_t ReData = AxpRead24bit(wire, 0x70); 146 | return ReData * VoltageLSB * CurrentLCS / 1000.0; 147 | } 148 | 149 | float AXP192GetBatChargeCurrent(wire_t *wire) 150 | { 151 | float ADCLSB = 0.5; 152 | uint16_t ReData = AxpRead12Bit(wire, 0x7A); 153 | return ReData * ADCLSB; 154 | } 155 | 156 | float AXP192GetAPSVoltage(wire_t *wire) 157 | { 158 | float ADCLSB = 1.4; 159 | uint16_t ReData = AxpRead12Bit(wire, 0x7E); 160 | return ReData * ADCLSB; 161 | } 162 | 163 | float AXP192GetBatCoulomInput(wire_t *wire) 164 | { 165 | uint32_t ReData = AxpRead32bit(wire, 0xB0); 166 | return ReData * 65536 * 0.5 / 3600 / 25.0; 167 | } 168 | 169 | float AXP192GetBatCoulomOut(wire_t *wire) 170 | { 171 | uint32_t ReData = AxpRead32bit(wire, 0xB4); 172 | return ReData * 65536 * 0.5 / 3600 / 25.0; 173 | } 174 | 175 | void AXP192SetCouloClear(wire_t *wire) 176 | { 177 | AxpWriteByte(wire, 0xB8, 0x20); 178 | } 179 | 180 | void AXP192SetLDO2(wire_t *wire, bool State) 181 | { 182 | uint8_t buf = AxpRead8bit(wire, 0x12); 183 | if (State == true) 184 | { 185 | buf = (1 << 2) | buf; 186 | } 187 | else 188 | { 189 | buf = ~(1 << 2) & buf; 190 | } 191 | AxpWriteByte(wire, 0x12, buf); 192 | } -------------------------------------------------------------------------------- /components/m5stickc-idf/util/MPU6886.c: -------------------------------------------------------------------------------- 1 | #include "MPU6886.h" 2 | 3 | enum Gscale Gyscale = GFS_2000DPS; 4 | enum Ascale Acscale = AFS_8G; 5 | 6 | void MPU6886I2C_Read_NBytes(uint8_t driver_Addr, uint8_t start_Addr, uint8_t number_Bytes, uint8_t *read_Buffer) 7 | { 8 | I2CreadBuff(&wire0, driver_Addr, start_Addr, read_Buffer, number_Bytes); 9 | } 10 | 11 | void MPU6886I2C_Write_NBytes(uint8_t driver_Addr, uint8_t start_Addr, uint8_t number_Bytes, uint8_t *write_Buffer) 12 | { 13 | I2Cwirtebuff(&wire0, driver_Addr, start_Addr, write_Buffer, number_Bytes); 14 | } 15 | 16 | int MPU6886Init(void) 17 | { 18 | uint8_t tempdata[1]; 19 | uint8_t regdata; 20 | 21 | MPU6886I2C_Read_NBytes(MPU6886_ADDRESS, MPU6886_WHOAMI, 1, tempdata); 22 | if (tempdata[0] != 0x19) 23 | return -1; 24 | vTaskDelay(5 / portTICK_PERIOD_MS); 25 | 26 | regdata = 0x00; 27 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_PWR_MGMT_1, 1, ®data); 28 | vTaskDelay(10 / portTICK_PERIOD_MS); 29 | 30 | regdata = (0x01 << 7); 31 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_PWR_MGMT_1, 1, ®data); 32 | vTaskDelay(10 / portTICK_PERIOD_MS); 33 | 34 | regdata = (0x01 << 0); 35 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_PWR_MGMT_1, 1, ®data); 36 | vTaskDelay(10 / portTICK_PERIOD_MS); 37 | 38 | regdata = 0x10; 39 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_ACCEL_CONFIG, 1, ®data); 40 | vTaskDelay(10 / portTICK_PERIOD_MS); 41 | 42 | regdata = 0x18; 43 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_GYRO_CONFIG, 1, ®data); 44 | vTaskDelay(10 / portTICK_PERIOD_MS); 45 | 46 | regdata = 0x01; 47 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_CONFIG, 1, ®data); 48 | vTaskDelay(10 / portTICK_PERIOD_MS); 49 | 50 | regdata = 0x05; 51 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_SMPLRT_DIV, 1, ®data); 52 | vTaskDelay(10 / portTICK_PERIOD_MS); 53 | 54 | regdata = 0x00; 55 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_INT_ENABLE, 1, ®data); 56 | vTaskDelay(10 / portTICK_PERIOD_MS); 57 | 58 | regdata = 0x00; 59 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_ACCEL_CONFIG2, 1, ®data); 60 | vTaskDelay(10 / portTICK_PERIOD_MS); 61 | 62 | regdata = 0x00; 63 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_USER_CTRL, 1, ®data); 64 | vTaskDelay(10 / portTICK_PERIOD_MS); 65 | 66 | regdata = 0x00; 67 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_FIFO_EN, 1, ®data); 68 | vTaskDelay(10 / portTICK_PERIOD_MS); 69 | 70 | regdata = 0x22; 71 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_INT_PIN_CFG, 1, ®data); 72 | vTaskDelay(10 / portTICK_PERIOD_MS); 73 | 74 | regdata = 0x01; 75 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_INT_ENABLE, 1, ®data); 76 | 77 | vTaskDelay(100 / portTICK_PERIOD_MS); 78 | MPU6886getGres(); 79 | MPU6886getAres(); 80 | return 0; 81 | } 82 | 83 | void MPU6886getAccelAdc(int16_t *ax, int16_t *ay, int16_t *az) 84 | { 85 | uint8_t buf[6]; 86 | MPU6886I2C_Read_NBytes(MPU6886_ADDRESS, MPU6886_ACCEL_XOUT_H, 6, buf); 87 | 88 | *ax = ((int16_t)buf[0] << 8) | buf[1]; 89 | *ay = ((int16_t)buf[2] << 8) | buf[3]; 90 | *az = ((int16_t)buf[4] << 8) | buf[5]; 91 | } 92 | void MPU6886getGyroAdc(int16_t *gx, int16_t *gy, int16_t *gz) 93 | { 94 | 95 | uint8_t buf[6]; 96 | MPU6886I2C_Read_NBytes(MPU6886_ADDRESS, MPU6886_GYRO_XOUT_H, 6, buf); 97 | 98 | *gx = ((uint16_t)buf[0] << 8) | buf[1]; 99 | *gy = ((uint16_t)buf[2] << 8) | buf[3]; 100 | *gz = ((uint16_t)buf[4] << 8) | buf[5]; 101 | } 102 | 103 | void MPU6886getTempAdc(int16_t *t) 104 | { 105 | uint8_t buf[2]; 106 | MPU6886I2C_Read_NBytes(MPU6886_ADDRESS, MPU6886_TEMP_OUT_H, 2, buf); 107 | 108 | *t = ((uint16_t)buf[0] << 8) | buf[1]; 109 | } 110 | 111 | void MPU6886getGres() 112 | { 113 | switch (Gyscale) 114 | { 115 | // Possible gyro scales (and their register bit settings) are: 116 | case GFS_250DPS: 117 | gRes = 250.0 / 32768.0; 118 | break; 119 | case GFS_500DPS: 120 | gRes = 500.0 / 32768.0; 121 | break; 122 | case GFS_1000DPS: 123 | gRes = 1000.0 / 32768.0; 124 | break; 125 | case GFS_2000DPS: 126 | gRes = 2000.0 / 32768.0; 127 | break; 128 | } 129 | } 130 | 131 | void MPU6886getAres() 132 | { 133 | switch (Acscale) 134 | { 135 | // Possible accelerometer scales (and their register bit settings) are: 136 | // 2 Gs (00), 4 Gs (01), 8 Gs (10), and 16 Gs (11). 137 | // Here's a bit of an algorith to calculate DPS/(ADC tick) based on that 2-bit value: 138 | case AFS_2G: 139 | aRes = 2.0 / 32768.0; 140 | break; 141 | case AFS_4G: 142 | aRes = 4.0 / 32768.0; 143 | break; 144 | case AFS_8G: 145 | aRes = 8.0 / 32768.0; 146 | break; 147 | case AFS_16G: 148 | aRes = 16.0 / 32768.0; 149 | break; 150 | } 151 | } 152 | 153 | void MPU6886setFIFOEnable(bool enableflag) 154 | { 155 | uint8_t regdata = 0; 156 | if (enableflag) 157 | { 158 | regdata = 0x0c; 159 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_FIFO_ENABLE, 1, ®data); 160 | regdata = 0x40; 161 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_USER_CTRL, 1, ®data); 162 | //MPU6886_FIFO_ENABLE = 0x0C 163 | //MPU6886_USER_CTRL = 0x40 164 | } 165 | else 166 | { 167 | regdata = 0x00; 168 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_FIFO_ENABLE, 1, ®data); 169 | regdata = 0x00; 170 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_USER_CTRL, 1, ®data); 171 | } 172 | } 173 | 174 | uint8_t MPU6886ReadFIFO() 175 | { 176 | uint8_t ReData = 0; 177 | MPU6886I2C_Read_NBytes(MPU6886_ADDRESS, MPU6886_FIFO_R_W, 1, &ReData); 178 | return ReData; 179 | } 180 | 181 | void MPU6886ReadFIFOBuff(uint8_t *DataBuff, uint16_t Length) 182 | { 183 | MPU6886I2C_Read_NBytes(MPU6886_ADDRESS, MPU6886_FIFO_R_W, Length, DataBuff); 184 | } 185 | 186 | uint16_t MPU6886ReadFIFOCount() 187 | { 188 | uint8_t Buff[2]; 189 | uint16_t ReData = 0; 190 | MPU6886I2C_Read_NBytes(MPU6886_ADDRESS, MPU6886_FIFO_CONUTH, 2, Buff); 191 | ReData = Buff[0]; 192 | ReData <<= 8; 193 | ReData |= Buff[1]; 194 | return ReData; 195 | } 196 | 197 | void MPU6886SetGyroFsr(enum Gscale scale) 198 | { 199 | //return IIC_Write_Byte(MPU_GYRO_CFG_REG,scale<<3);//设置陀螺仪满量程范围 200 | unsigned char regdata; 201 | regdata = (scale << 3); 202 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_GYRO_CONFIG, 1, ®data); 203 | vTaskDelay(10 / portTICK_PERIOD_MS); 204 | 205 | Gyscale = scale; 206 | MPU6886getGres(); 207 | } 208 | 209 | void MPU6886SetAccelFsr(enum Ascale scale) 210 | { 211 | unsigned char regdata; 212 | regdata = (scale << 3); 213 | MPU6886I2C_Write_NBytes(MPU6886_ADDRESS, MPU6886_ACCEL_CONFIG, 1, ®data); 214 | vTaskDelay(10 / portTICK_PERIOD_MS); 215 | Acscale = scale; 216 | MPU6886getAres(); 217 | } 218 | 219 | void MPU6886getAccelData(float *ax, float *ay, float *az) 220 | { 221 | int16_t accX = 0; 222 | int16_t accY = 0; 223 | int16_t accZ = 0; 224 | MPU6886getAccelAdc(&accX, &accY, &accZ); 225 | 226 | *ax = (float)accX * aRes; 227 | *ay = (float)accY * aRes; 228 | *az = (float)accZ * aRes; 229 | } 230 | 231 | void MPU6886getGyroData(float *gx, float *gy, float *gz) 232 | { 233 | int16_t gyroX = 0; 234 | int16_t gyroY = 0; 235 | int16_t gyroZ = 0; 236 | MPU6886getGyroAdc(&gyroX, &gyroY, &gyroZ); 237 | 238 | *gx = (float)gyroX * gRes; 239 | *gy = (float)gyroY * gRes; 240 | *gz = (float)gyroZ * gRes; 241 | } 242 | 243 | void MPU6886getTempData(float *t) 244 | { 245 | 246 | int16_t temp = 0; 247 | MPU6886getTempAdc(&temp); 248 | 249 | *t = (float)temp / 326.8 + 25.0; 250 | } 251 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/button.c: -------------------------------------------------------------------------------- 1 | /** 2 | * button.c 3 | * 4 | * (C) 2019 - Hades2001 5 | * This code is licensed under the MIT License. 6 | */ 7 | 8 | #include "button.h" 9 | 10 | static const char *TAG = "button"; 11 | 12 | esp_err_t button_ioinit(button_t *button); 13 | void IRAM_ATTR button_isr_handler(void *arg); 14 | void button_task(void *pvParameter); 15 | 16 | ESP_EVENT_DEFINE_BASE(BUTTON_A_EVENT_BASE); 17 | ESP_EVENT_DEFINE_BASE(BUTTON_B_EVENT_BASE); 18 | 19 | button_t button_a = { 20 | .gpionumber = BUTTON_BUTTON_A_GPIO, 21 | .Countime = BUTTON_COUNT_TIME, 22 | .Pressedtime = BUTTON_PRESS_TIME 23 | }; 24 | 25 | button_t button_b = { 26 | .gpionumber = BUTTON_BUTTON_B_GPIO, 27 | .Countime = BUTTON_COUNT_TIME, 28 | .Pressedtime = BUTTON_PRESS_TIME 29 | }; 30 | 31 | void IRAM_ATTR button_isr_handler(void *arg) 32 | { 33 | BaseType_t xHigherPriorityTaskWoken = pdFALSE; 34 | 35 | button_t *button = (button_t *)arg; 36 | 37 | if (gpio_get_level(button->gpionumber) == 0) 38 | { 39 | xEventGroupSetBitsFromISR(button->event_group, BUTTON_PLUSED_BIT, &xHigherPriorityTaskWoken); 40 | } 41 | else 42 | { 43 | xEventGroupSetBitsFromISR(button->event_group, BUTTON_RELESED_BIT, &xHigherPriorityTaskWoken); 44 | } 45 | } 46 | 47 | bool button_is_pressed(button_t *button) 48 | { 49 | return (gpio_get_level(button->gpionumber) == 0) ? true : false; 50 | } 51 | 52 | esp_err_t button_ioinit(button_t *button) 53 | { 54 | esp_err_t e; 55 | 56 | if (button == NULL) 57 | { 58 | return ESP_ERR_INVALID_ARG; 59 | } 60 | 61 | // Set gpio as input 62 | gpio_pad_select_gpio(button->gpionumber); 63 | e = gpio_set_direction(button->gpionumber, GPIO_MODE_INPUT); 64 | if (e != ESP_OK) 65 | { 66 | return ESP_FAIL; 67 | } 68 | 69 | // Init event_group 70 | #if defined(CONFIG_SUPPORT_STATIC_ALLOCATION) 71 | button->event_group = xEventGroupCreateStatic(&(button->event_group_buffer)); 72 | #else 73 | button->event_group = xEventGroupCreate(); 74 | #endif 75 | if (button->event_group == NULL) 76 | { 77 | ESP_LOGE(TAG, "Error creating button event group"); 78 | return ESP_FAIL; 79 | } 80 | 81 | // Start task 82 | #if defined(CONFIG_SUPPORT_STATIC_ALLOCATION) 83 | button->task = xTaskCreateStatic(button_task, "button_task", BUTTON_TASK_STACK_DEPTH, (void *)button, 20, button->task_stack, &(button->task_buffer)); 84 | if (button->task == NULL) 85 | { 86 | ESP_LOGE(TAG, "Error creating button_task"); 87 | vEventGroupDelete(button->event_group); 88 | return ESP_FAIL; 89 | } 90 | #else 91 | BaseType_t r = xTaskCreate(button_task, "button_task", BUTTON_TASK_STACK_DEPTH, (void *)button, 3, &(button->task)); 92 | if (r != pdPASS) 93 | { 94 | ESP_LOGE(TAG, "Error creating button_task"); 95 | vEventGroupDelete(button->event_group); 96 | return ESP_FAIL; 97 | } 98 | #endif 99 | 100 | // Set interrupt type 101 | e = gpio_set_intr_type(button->gpionumber, GPIO_INTR_ANYEDGE); 102 | if (e != ESP_OK) 103 | { 104 | return e; 105 | } 106 | 107 | // Enable interrupt 108 | e = gpio_isr_handler_add(button->gpionumber, button_isr_handler, button); 109 | if (e != ESP_OK) 110 | { 111 | vTaskDelete(button->task); 112 | return ESP_FAIL; 113 | } 114 | 115 | return ESP_OK; 116 | } 117 | 118 | esp_err_t ButtonInit() 119 | { 120 | esp_err_t e; 121 | 122 | button_a.esp_event_base = BUTTON_A_EVENT_BASE; 123 | button_b.esp_event_base = BUTTON_B_EVENT_BASE; 124 | 125 | #define ESP_INTR_FLAG_DEFAULT 0 126 | 127 | e = gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT); 128 | if (e == ESP_ERR_INVALID_STATE) 129 | { 130 | ESP_LOGD(TAG, "ISR service already installed"); 131 | } 132 | else if (e == ESP_ERR_NO_MEM || e == ESP_ERR_NOT_FOUND) 133 | { 134 | ESP_LOGE(TAG, "Error installing ISR service"); 135 | return ESP_FAIL; 136 | } 137 | 138 | e = button_ioinit(&button_a); 139 | if (e == ESP_OK) 140 | { 141 | ESP_LOGD(TAG, "Button A enabled"); 142 | } 143 | else 144 | { 145 | ESP_LOGE(TAG, "Error enabling button A"); 146 | } 147 | 148 | e += button_ioinit(&button_b); // Notice += on error return to accumulate previous error 149 | if (e == ESP_OK) 150 | { 151 | ESP_LOGD(TAG, "Button B enabled"); 152 | } 153 | else 154 | { 155 | ESP_LOGE(TAG, "Error enabling button B"); 156 | } 157 | 158 | if (e != ESP_OK) 159 | { 160 | return ESP_FAIL; 161 | } 162 | return ESP_OK; 163 | } 164 | 165 | void button_task(void *pvParameter) 166 | { 167 | EventBits_t event; 168 | button_t *button = (button_t *)pvParameter; 169 | 170 | ESP_LOGD(TAG, "Button task started"); 171 | 172 | while (1) 173 | { 174 | event = xEventGroupWaitBits(button->event_group, BUTTON_PLUSED_BIT, pdTRUE, pdFALSE, portMAX_DELAY); 175 | 176 | if ((event & BUTTON_PLUSED_BIT) != 0) 177 | { 178 | vTaskDelay( button->Countime / portTICK_PERIOD_MS ); 179 | xEventGroupClearBits(button->event_group, BUTTON_RELESED_BIT); 180 | event = xEventGroupWaitBits(button->event_group, BUTTON_RELESED_BIT, pdTRUE, pdFALSE, button->Pressedtime); 181 | if ((event & BUTTON_RELESED_BIT) != 0) 182 | { 183 | esp_event_post_to(event_loop, button->esp_event_base, BUTTON_PRESSED_EVENT, NULL, 0, portMAX_DELAY); 184 | ESP_LOGD(TAG, "BUTTON_PRESSED_EVENT event"); 185 | } 186 | else 187 | { 188 | esp_event_post_to(event_loop, button->esp_event_base, BUTTON_HOLDPRESS_EVENT, NULL, 0, portMAX_DELAY); 189 | ESP_LOGD(TAG, "BUTTON_HOLDPRESS_EVENT event"); 190 | } 191 | } 192 | vTaskDelay( 10 / portTICK_PERIOD_MS); 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/DefaultFont.c: -------------------------------------------------------------------------------- 1 | // Default font 2 | 3 | // ======================================================================== 4 | // This comes with no warranty, implied or otherwise 5 | 6 | // This data structure was designed to support Proportional fonts 7 | // fonts. Individual characters do not have to be multiples of 8 bits wide. 8 | // Any width is fine and does not need to be fixed. 9 | 10 | // The data bits are packed to minimize data requirements, but the tradeoff 11 | // is that a header is required per character. 12 | 13 | // Header Format: 14 | // ------------------------------------------------ 15 | // Character Width (Used as a marker to indicate use this format. i.e.: = 0x00) 16 | // Character Height 17 | // First Character (Reserved. 0x00) 18 | // Number Of Characters (Reserved. 0x00) 19 | 20 | // Individual Character Format: 21 | // ---------------------------- 22 | // Character Code 23 | // Adjusted Y Offset (start Y of visible pixels) 24 | // Width (width of the visible pixels) 25 | // Height (height of the visible pixels) 26 | // xOffset (start X of visible pixels) 27 | // xDelta (the distance to move the cursor. Effective width of the character.) 28 | // Data[n] 29 | 30 | // NOTE: You can remove any of these characters if they are not needed in 31 | // your application. The first character number in each Glyph indicates 32 | // the ASCII character code. Therefore, these do not have to be sequential. 33 | // Just remove all the content for a particular character to save space. 34 | // ======================================================================== 35 | 36 | // dejavu 37 | // Point Size : 12 38 | // Memory usage : 1158 bytes 39 | // # characters : 95 40 | 41 | const unsigned char tft_DefaultFont[] = 42 | { 43 | 0x00, 0x0B, 0x86, 0x04, 44 | 45 | // ' ' 46 | 0x20,0x0A,0x00,0x00,0x00,0x04, 47 | 48 | // '!' 49 | 0x21,0x01,0x01,0x09,0x02,0x05, 50 | 0xFD,0x80, 51 | // '"' 52 | 0x22,0x01,0x03,0x03,0x01,0x05, 53 | 0xB6,0x80, 54 | // '#' 55 | 0x23,0x02,0x08,0x08,0x01,0x0A, 56 | 0x12,0x14,0x7F,0x24,0x24,0xFE,0x28,0x48, 57 | // '$' 58 | 0x24,0x01,0x06,0x0B,0x02,0x08, 59 | 0x21,0xCA,0xA8,0xE0,0xE2,0xAA,0x70,0x82,0x00, 60 | // '%' 61 | 0x25,0x01,0x0A,0x09,0x00,0x0B, 62 | 0x61,0x24,0x89,0x22,0x50,0x6D,0x82,0x91,0x24,0x49,0x21,0x80, 63 | // '&' 64 | 0x26,0x01,0x09,0x09,0x01,0x0A, 65 | 0x30,0x24,0x10,0x0C,0x05,0x14,0x4A,0x19,0x8C,0x7B,0x00, 66 | // ''' 67 | 0x27,0x01,0x01,0x03,0x01,0x03, 68 | 0xE0, 69 | // '(' 70 | 0x28,0x00,0x03,0x0B,0x01,0x05, 71 | 0x69,0x49,0x24,0x48,0x80, 72 | // ')' 73 | 0x29,0x00,0x03,0x0B,0x01,0x05, 74 | 0x89,0x12,0x49,0x4A,0x00, 75 | // '*' 76 | 0x2A,0x01,0x05,0x06,0x01,0x06, 77 | 0x25,0x5C,0xEA,0x90, 78 | // '+' 79 | 0x2B,0x03,0x07,0x07,0x01,0x0A, 80 | 0x10,0x20,0x47,0xF1,0x02,0x04,0x00, 81 | // ',' 82 | 0x2C,0x08,0x01,0x03,0x01,0x04, 83 | 0xE0, 84 | // '-' 85 | 0x2D,0x06,0x03,0x01,0x01,0x04, 86 | 0xE0, 87 | // '.' 88 | 0x2E,0x08,0x01,0x02,0x01,0x04, 89 | 0xC0, 90 | // '/' 91 | 0x2F,0x01,0x04,0x0A,0x00,0x04, 92 | 0x11,0x22,0x24,0x44,0x88, 93 | // '0' 94 | 0x30,0x01,0x06,0x09,0x01,0x08, 95 | 0x79,0x28,0x61,0x86,0x18,0x52,0x78, 96 | // '1' 97 | 0x31,0x01,0x05,0x09,0x01,0x08, 98 | 0xE1,0x08,0x42,0x10,0x84,0xF8, 99 | // '2' 100 | 0x32,0x01,0x07,0x09,0x01,0x08, 101 | 0x79,0x18,0x10,0x20,0x82,0x08,0x20,0xFC, 102 | // '3' 103 | 0x33,0x01,0x06,0x09,0x01,0x08, 104 | 0x7A,0x10,0x41,0x38,0x30,0x63,0x78, 105 | // '4' 106 | 0x34,0x01,0x06,0x09,0x01,0x08, 107 | 0x18,0x62,0x92,0x4A,0x2F,0xC2,0x08, 108 | // '5' 109 | 0x35,0x01,0x06,0x09,0x01,0x08, 110 | 0xFA,0x08,0x3C,0x0C,0x10,0x63,0x78, 111 | // '6' 112 | 0x36,0x01,0x06,0x09,0x01,0x08, 113 | 0x39,0x18,0x3E,0xCE,0x18,0x53,0x78, 114 | // '7' 115 | 0x37,0x01,0x06,0x09,0x01,0x08, 116 | 0xFC,0x10,0x82,0x10,0x42,0x08,0x40, 117 | // '8' 118 | 0x38,0x01,0x06,0x09,0x01,0x08, 119 | 0x7B,0x38,0x73,0x7B,0x38,0x73,0x78, 120 | // '9' 121 | 0x39,0x01,0x06,0x09,0x01,0x08, 122 | 0x7B,0x28,0x61,0xCD,0xD0,0x62,0x70, 123 | // ':' 124 | 0x3A,0x04,0x01,0x06,0x01,0x04, 125 | 0xCC, 126 | // ';' 127 | 0x3B,0x04,0x01,0x07,0x01,0x04, 128 | 0xCE, 129 | // '<' 130 | 0x3C,0x03,0x08,0x06,0x01,0x0A, 131 | 0x03,0x1E,0xE0,0xE0,0x1E,0x03, 132 | // '=' 133 | 0x3D,0x05,0x08,0x03,0x01,0x0A, 134 | 0xFF,0x00,0xFF, 135 | // '>' 136 | 0x3E,0x03,0x08,0x06,0x01,0x0A, 137 | 0xC0,0x78,0x07,0x07,0x78,0xC0, 138 | // '?' 139 | 0x3F,0x01,0x05,0x09,0x00,0x06, 140 | 0x74,0x42,0x22,0x10,0x04,0x20, 141 | // '@' 142 | 0x40,0x01,0x0B,0x0B,0x01,0x0D, 143 | 0x1F,0x06,0x19,0x01,0x46,0x99,0x13,0x22,0x64,0x54,0x6C,0x40,0x04,0x10,0x7C,0x00, 144 | // 'A' 145 | 0x41,0x01,0x08,0x09,0x00,0x08, 146 | 0x18,0x18,0x24,0x24,0x24,0x42,0x7E,0x42,0x81, 147 | // 'B' 148 | 0x42,0x01,0x06,0x09,0x01,0x08, 149 | 0xFA,0x18,0x61,0xFA,0x18,0x61,0xF8, 150 | // 'C' 151 | 0x43,0x01,0x06,0x09,0x01,0x08, 152 | 0x39,0x18,0x20,0x82,0x08,0x11,0x38, 153 | // 'D' 154 | 0x44,0x01,0x07,0x09,0x01,0x09, 155 | 0xF9,0x0A,0x0C,0x18,0x30,0x60,0xC2,0xF8, 156 | // 'E' 157 | 0x45,0x01,0x06,0x09,0x01,0x08, 158 | 0xFE,0x08,0x20,0xFE,0x08,0x20,0xFC, 159 | // 'F' 160 | 0x46,0x01,0x05,0x09,0x01,0x07, 161 | 0xFC,0x21,0x0F,0xC2,0x10,0x80, 162 | // 'G' 163 | 0x47,0x01,0x07,0x09,0x01,0x09, 164 | 0x3C,0x86,0x04,0x08,0xF0,0x60,0xA1,0x3C, 165 | // 'H' 166 | 0x48,0x01,0x07,0x09,0x01,0x09, 167 | 0x83,0x06,0x0C,0x1F,0xF0,0x60,0xC1,0x82, 168 | // 'I' 169 | 0x49,0x01,0x01,0x09,0x01,0x03, 170 | 0xFF,0x80, 171 | // 'J' 172 | 0x4A,0x01,0x03,0x0B,0xFF,0x03, 173 | 0x24,0x92,0x49,0x27,0x00, 174 | // 'K' 175 | 0x4B,0x01,0x07,0x09,0x01,0x07, 176 | 0x85,0x12,0x45,0x0C,0x14,0x24,0x44,0x84, 177 | // 'L' 178 | 0x4C,0x01,0x05,0x09,0x01,0x06, 179 | 0x84,0x21,0x08,0x42,0x10,0xF8, 180 | // 'M' 181 | 0x4D,0x01,0x08,0x09,0x01,0x0A, 182 | 0x81,0xC3,0xC3,0xA5,0xA5,0x99,0x99,0x81,0x81, 183 | // 'N' 184 | 0x4E,0x01,0x07,0x09,0x01,0x09, 185 | 0xC3,0x86,0x8D,0x19,0x31,0x62,0xC3,0x86, 186 | // 'O' 187 | 0x4F,0x01,0x07,0x09,0x01,0x09, 188 | 0x38,0x8A,0x0C,0x18,0x30,0x60,0xA2,0x38, 189 | // 'P' 190 | 0x50,0x01,0x06,0x09,0x01,0x08, 191 | 0xFA,0x38,0x63,0xFA,0x08,0x20,0x80, 192 | // 'Q' 193 | 0x51,0x01,0x07,0x0B,0x01,0x09, 194 | 0x38,0x8A,0x0C,0x18,0x30,0x60,0xA2,0x38,0x10,0x10, 195 | // 'R' 196 | 0x52,0x01,0x07,0x09,0x01,0x08, 197 | 0xF9,0x1A,0x14,0x6F,0x91,0x21,0x42,0x82, 198 | // 'S' 199 | 0x53,0x01,0x06,0x09,0x01,0x08, 200 | 0x7B,0x18,0x30,0x78,0x30,0x63,0x78, 201 | // 'T' 202 | 0x54,0x01,0x07,0x09,0x00,0x07, 203 | 0xFE,0x20,0x40,0x81,0x02,0x04,0x08,0x10, 204 | // 'U' 205 | 0x55,0x01,0x07,0x09,0x01,0x09, 206 | 0x83,0x06,0x0C,0x18,0x30,0x60,0xA2,0x38, 207 | // 'V' 208 | 0x56,0x01,0x0A,0x09,0xFF,0x08, 209 | 0x40,0x90,0x22,0x10,0x84,0x21,0x04,0x81,0x20,0x30,0x0C,0x00, 210 | // 'W' 211 | 0x57,0x01,0x0B,0x09,0x00,0x0B, 212 | 0x84,0x28,0x89,0x11,0x27,0x22,0xA8,0x55,0x0E,0xE0,0x88,0x11,0x00, 213 | // 'X' 214 | 0x58,0x01,0x07,0x09,0x00,0x07, 215 | 0xC6,0x88,0xA1,0xC1,0x07,0x0A,0x22,0x82, 216 | // 'Y' 217 | 0x59,0x01,0x07,0x09,0x00,0x07, 218 | 0x82,0x89,0x11,0x43,0x82,0x04,0x08,0x10, 219 | // 'Z' 220 | 0x5A,0x01,0x07,0x09,0x01,0x09, 221 | 0xFE,0x04,0x10,0x41,0x04,0x10,0x40,0xFE, 222 | // '[' 223 | 0x5B,0x01,0x02,0x0B,0x02,0x05, 224 | 0xEA,0xAA,0xAC, 225 | // '\' 226 | 0x5C,0x01,0x04,0x0A,0x00,0x04, 227 | 0x88,0x44,0x42,0x22,0x11, 228 | // ']' 229 | 0x5D,0x01,0x02,0x0B,0x01,0x05, 230 | 0xD5,0x55,0x5C, 231 | // '^' 232 | 0x5E,0x01,0x08,0x03,0x01,0x0A, 233 | 0x18,0x24,0x42, 234 | // '_' 235 | 0x5F,0x0C,0x06,0x01,0x00,0x06, 236 | 0xFC, 237 | // '`' 238 | 0x60,0x00,0x03,0x02,0x01,0x06, 239 | 0x44, 240 | // 'a' 241 | 0x61,0x03,0x06,0x07,0x01,0x08, 242 | 0x7A,0x30,0x5F,0x86,0x37,0x40, 243 | // 'b' 244 | 0x62,0x00,0x06,0x0A,0x01,0x08, 245 | 0x82,0x08,0x2E,0xCA,0x18,0x61,0xCE,0xE0, 246 | // 'c' 247 | 0x63,0x03,0x05,0x07,0x01,0x07, 248 | 0x72,0x61,0x08,0x25,0xC0, 249 | // 'd' 250 | 0x64,0x00,0x06,0x0A,0x01,0x08, 251 | 0x04,0x10,0x5D,0xCE,0x18,0x61,0xCD,0xD0, 252 | // 'e' 253 | 0x65,0x03,0x06,0x07,0x01,0x08, 254 | 0x39,0x38,0x7F,0x81,0x13,0x80, 255 | // 'f' 256 | 0x66,0x00,0x04,0x0A,0x00,0x04, 257 | 0x34,0x4F,0x44,0x44,0x44, 258 | // 'g' 259 | 0x67,0x03,0x06,0x0A,0x01,0x08, 260 | 0x77,0x38,0x61,0x87,0x37,0x41,0x4C,0xE0, 261 | // 'h' 262 | 0x68,0x00,0x06,0x0A,0x01,0x08, 263 | 0x82,0x08,0x2E,0xC6,0x18,0x61,0x86,0x10, 264 | // 'i' 265 | 0x69,0x01,0x01,0x09,0x01,0x03, 266 | 0xBF,0x80, 267 | // 'j' 268 | 0x6A,0x01,0x02,0x0C,0x00,0x03, 269 | 0x45,0x55,0x56, 270 | // 'k' 271 | 0x6B,0x00,0x06,0x0A,0x01,0x07, 272 | 0x82,0x08,0x22,0x92,0x8E,0x28,0x92,0x20, 273 | // 'l' 274 | 0x6C,0x00,0x01,0x0A,0x01,0x03, 275 | 0xFF,0xC0, 276 | // 'm' 277 | 0x6D,0x03,0x09,0x07,0x01,0x0B, 278 | 0xB3,0x66,0x62,0x31,0x18,0x8C,0x46,0x22, 279 | // 'n' 280 | 0x6E,0x03,0x06,0x07,0x01,0x08, 281 | 0xBB,0x18,0x61,0x86,0x18,0x40, 282 | // 'o' 283 | 0x6F,0x03,0x06,0x07,0x01,0x08, 284 | 0x7B,0x38,0x61,0x87,0x37,0x80, 285 | // 'p' 286 | 0x70,0x03,0x06,0x0A,0x01,0x08, 287 | 0xBB,0x28,0x61,0x87,0x3B,0xA0,0x82,0x00, 288 | // 'q' 289 | 0x71,0x03,0x06,0x0A,0x01,0x08, 290 | 0x77,0x38,0x61,0x87,0x37,0x41,0x04,0x10, 291 | // 'r' 292 | 0x72,0x03,0x04,0x07,0x01,0x05, 293 | 0xBC,0x88,0x88,0x80, 294 | // 's' 295 | 0x73,0x03,0x06,0x07,0x01,0x07, 296 | 0x72,0x28,0x1C,0x0A,0x27,0x00, 297 | // 't' 298 | 0x74,0x01,0x04,0x09,0x00,0x05, 299 | 0x44,0xF4,0x44,0x44,0x30, 300 | // 'u' 301 | 0x75,0x03,0x06,0x07,0x01,0x08, 302 | 0x86,0x18,0x61,0x86,0x37,0x40, 303 | // 'v' 304 | 0x76,0x03,0x08,0x07,0xFF,0x06, 305 | 0x42,0x42,0x24,0x24,0x24,0x18,0x18, 306 | // 'w' 307 | 0x77,0x03,0x09,0x07,0x00,0x09, 308 | 0x88,0xC4,0x57,0x4A,0xA5,0x51,0x10,0x88, 309 | // 'x' 310 | 0x78,0x03,0x06,0x07,0x00,0x06, 311 | 0x85,0x24,0x8C,0x49,0x28,0x40, 312 | // 'y' 313 | 0x79,0x03,0x08,0x0A,0xFF,0x06, 314 | 0x42,0x42,0x24,0x24,0x14,0x18,0x08,0x08,0x10,0x60, 315 | // 'z' 316 | 0x7A,0x03,0x05,0x07,0x00,0x05, 317 | 0xF8,0x44,0x44,0x43,0xE0, 318 | // '{' 319 | 0x7B,0x01,0x05,0x0B,0x02,0x08, 320 | 0x19,0x08,0x42,0x60,0x84,0x21,0x06, 321 | // '|' 322 | 0x7C,0x01,0x01,0x0C,0x02,0x04, 323 | 0xFF,0xF0, 324 | // '}' 325 | 0x7D,0x01,0x05,0x0B,0x01,0x08, 326 | 0xC1,0x08,0x42,0x0C,0x84,0x21,0x30, 327 | // '~' 328 | 0x7E,0x04,0x08,0x03,0x01,0x0A, 329 | 0x00,0x71,0x8E, 330 | 331 | // Terminator 332 | 0xFF 333 | }; 334 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/DejaVuSans18.c: -------------------------------------------------------------------------------- 1 | // ============================================================================ 2 | // Proportional font Header Format: 3 | // ------------------------------------------------ 4 | // Character Width (Used as a marker to indicate use this format. i.e.: = 0x00) 5 | // Character Height 6 | // First Character (Reserved. 0x00) 7 | // Number Of Characters (Reserved. 0x00) 8 | 9 | // Individual Character Format: 10 | // ---------------------------- 11 | // Character Code 12 | // Adjusted Y Offset 13 | // Width 14 | // Height 15 | // xOffset 16 | // xDelta (the distance to move the cursor. Effective width of the character.) 17 | // Data[n] 18 | 19 | // NOTE: You can remove any of these characters if they are not needed in 20 | // your application. The first character number in each Glyph indicates 21 | // the ASCII character code. Therefore, these do not have to be sequential. 22 | // Just remove all the content for a particular character to save space. 23 | // ============================================================================ 24 | 25 | // DejaVuSans 26 | // Point Size : 18 27 | // Memory usage : 1828 bytes 28 | // # characters : 95 29 | 30 | const unsigned char tft_Dejavu18[] = 31 | { 32 | 0x00, 0x12, 0x00, 0x00, 33 | 34 | // ' ' 35 | 0x20,0x0E,0x00,0x00,0x00,0x06, 36 | 37 | // '!' 38 | 0x21,0x01,0x02,0x0D,0x03,0x07, 39 | 0xFF,0xFF,0xC3,0xC0, 40 | // '"' 41 | 0x22,0x01,0x06,0x05,0x01,0x08, 42 | 0xCF,0x3C,0xF3,0xCC, 43 | // '#' 44 | 0x23,0x00,0x0C,0x0E,0x01,0x0F, 45 | 0x04,0x40,0x44,0x0C,0xC0,0xC8,0x7F,0xF7,0xFF,0x09,0x81,0x90,0xFF,0xEF,0xFE,0x13,0x03,0x30,0x32,0x02,0x20, 46 | // '$' 47 | 0x24,0x00,0x0A,0x11,0x01,0x0B, 48 | 0x08,0x02,0x03,0xE1,0xFC,0xE9,0x32,0x0F,0x81,0xF8,0x0F,0x02,0x60,0x9A,0x2E,0xFF,0x1F,0x80,0x80,0x20,0x08,0x00, 49 | // '%' 50 | 0x25,0x01,0x0F,0x0D,0x01,0x11, 51 | 0x78,0x10,0x90,0x43,0x31,0x86,0x62,0x0C,0xC8,0x19,0x10,0x1E,0x4F,0x01,0x12,0x02,0x66,0x08,0xCC,0x31,0x98,0x41,0x21,0x03,0xC0, 52 | // '&' 53 | 0x26,0x01,0x0C,0x0D,0x01,0x0D, 54 | 0x0F,0x01,0xF8,0x30,0x83,0x00,0x38,0x03,0xC0,0x7E,0x6C,0x76,0xC3,0xCC,0x18,0xE1,0xC7,0xFE,0x3E,0x70, 55 | // ''' 56 | 0x27,0x01,0x02,0x05,0x01,0x04, 57 | 0xFF,0xC0, 58 | // '(' 59 | 0x28,0x00,0x04,0x10,0x02,0x07, 60 | 0x32,0x66,0x4C,0xCC,0xCC,0xC4,0x66,0x23, 61 | // ')' 62 | 0x29,0x00,0x04,0x10,0x01,0x07, 63 | 0xC4,0x66,0x23,0x33,0x33,0x32,0x66,0x4C, 64 | // '*' 65 | 0x2A,0x01,0x07,0x08,0x01,0x09, 66 | 0x11,0x25,0x51,0xC3,0x8A,0xA4,0x88, 67 | // '+' 68 | 0x2B,0x02,0x0C,0x0C,0x02,0x0F, 69 | 0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x0F,0xFF,0xFF,0xF0,0x60,0x06,0x00,0x60,0x06,0x00,0x60, 70 | // ',' 71 | 0x2C,0x0C,0x03,0x04,0x01,0x06, 72 | 0x6D,0x40, 73 | // '-' 74 | 0x2D,0x08,0x05,0x02,0x01,0x07, 75 | 0xFF,0xC0, 76 | // '.' 77 | 0x2E,0x0C,0x02,0x02,0x02,0x06, 78 | 0xF0, 79 | // '/' 80 | 0x2F,0x01,0x06,0x0F,0x00,0x06, 81 | 0x0C,0x31,0x86,0x18,0xE3,0x0C,0x31,0xC6,0x18,0x63,0x0C,0x00, 82 | // '0' 83 | 0x30,0x01,0x09,0x0D,0x01,0x0B, 84 | 0x3E,0x3F,0x98,0xD8,0x3C,0x1E,0x0F,0x07,0x83,0xC1,0xE0,0xD8,0xCF,0xE3,0xE0, 85 | // '1' 86 | 0x31,0x01,0x08,0x0D,0x02,0x0B, 87 | 0x38,0xF8,0xD8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFF,0xFF, 88 | // '2' 89 | 0x32,0x01,0x09,0x0D,0x01,0x0B, 90 | 0x7C,0x7F,0x21,0xC0,0x60,0x30,0x30,0x18,0x18,0x18,0x18,0x18,0x1F,0xEF,0xF0, 91 | // '3' 92 | 0x33,0x01,0x09,0x0D,0x01,0x0B, 93 | 0x7E,0x7F,0xA0,0xE0,0x30,0x39,0xF0,0xFC,0x07,0x01,0x80,0xE0,0xFF,0xE7,0xE0, 94 | // '4' 95 | 0x34,0x01,0x0A,0x0D,0x01,0x0B, 96 | 0x07,0x01,0xC0,0xB0,0x6C,0x13,0x08,0xC6,0x31,0x0C,0xFF,0xFF,0xF0,0x30,0x0C,0x03,0x00, 97 | // '5' 98 | 0x35,0x01,0x08,0x0D,0x01,0x0B, 99 | 0x7E,0x7E,0x60,0x60,0x7C,0x7E,0x47,0x03,0x03,0x03,0x87,0xFE,0x7C, 100 | // '6' 101 | 0x36,0x01,0x09,0x0D,0x01,0x0B, 102 | 0x1E,0x1F,0x9C,0x5C,0x0C,0x06,0xF3,0xFD,0xC7,0xC1,0xE0,0xD8,0xEF,0xE1,0xE0, 103 | // '7' 104 | 0x37,0x01,0x08,0x0D,0x01,0x0B, 105 | 0xFF,0xFF,0x06,0x06,0x06,0x0E,0x0C,0x0C,0x1C,0x18,0x18,0x38,0x30, 106 | // '8' 107 | 0x38,0x01,0x09,0x0D,0x01,0x0B, 108 | 0x3E,0x3F,0xB8,0xF8,0x3E,0x39,0xF1,0xFD,0xC7,0xC1,0xE0,0xF8,0xEF,0xE3,0xE0, 109 | // '9' 110 | 0x39,0x01,0x09,0x0D,0x01,0x0B, 111 | 0x3C,0x3F,0xB8,0xD8,0x3C,0x1F,0x1D,0xFE,0x7B,0x01,0x81,0xD1,0xCF,0xC3,0xC0, 112 | // ':' 113 | 0x3A,0x05,0x02,0x09,0x02,0x06, 114 | 0xF0,0x03,0xC0, 115 | // ';' 116 | 0x3B,0x05,0x03,0x0B,0x01,0x06, 117 | 0x6C,0x00,0x03,0x6A,0x00, 118 | // '<' 119 | 0x3C,0x04,0x0B,0x0A,0x02,0x0F, 120 | 0x00,0x20,0x3C,0x1F,0x1F,0x0F,0x81,0xF0,0x0F,0x80,0x3E,0x01,0xE0,0x04, 121 | // '=' 122 | 0x3D,0x05,0x0B,0x06,0x02,0x0F, 123 | 0xFF,0xFF,0xFC,0x00,0x00,0x0F,0xFF,0xFF,0xC0, 124 | // '>' 125 | 0x3E,0x04,0x0B,0x0A,0x02,0x0F, 126 | 0x80,0x1E,0x01,0xF0,0x07,0xC0,0x3E,0x07,0xC3,0xE3,0xE0,0xF0,0x10,0x00, 127 | // '?' 128 | 0x3F,0x01,0x07,0x0D,0x01,0x0A, 129 | 0x79,0xFA,0x38,0x30,0x61,0x86,0x18,0x30,0x60,0x01,0x83,0x00, 130 | // '@' 131 | 0x40,0x01,0x10,0x10,0x01,0x12, 132 | 0x07,0xE0,0x1F,0xF8,0x3C,0x1C,0x70,0x06,0x60,0x07,0xE3,0x63,0xC7,0xE3,0xC6,0x63,0xC6,0x66,0xC7,0xFC,0xE3,0x70,0x60,0x00,0x70,0x00,0x3C,0x30,0x1F,0xF0,0x07,0xC0, 133 | // 'A' 134 | 0x41,0x01,0x0C,0x0D,0x00,0x0C, 135 | 0x06,0x00,0x60,0x0F,0x00,0xF0,0x19,0x81,0x98,0x19,0x83,0x0C,0x3F,0xC7,0xFE,0x60,0x66,0x06,0xC0,0x30, 136 | // 'B' 137 | 0x42,0x01,0x09,0x0D,0x02,0x0C, 138 | 0xFC,0x7F,0xB0,0xD8,0x6C,0x37,0xF3,0xF9,0x86,0xC1,0xE0,0xF0,0xFF,0xEF,0xE0, 139 | // 'C' 140 | 0x43,0x01,0x0B,0x0D,0x01,0x0D, 141 | 0x0F,0xC7,0xFD,0xC0,0xB0,0x0C,0x01,0x80,0x30,0x06,0x00,0xC0,0x0C,0x01,0xC0,0x9F,0xF0,0xFC, 142 | // 'D' 143 | 0x44,0x01,0x0B,0x0D,0x02,0x0E, 144 | 0xFE,0x1F,0xF3,0x07,0x60,0x6C,0x07,0x80,0xF0,0x1E,0x03,0xC0,0x78,0x1B,0x07,0x7F,0xCF,0xE0, 145 | // 'E' 146 | 0x45,0x01,0x08,0x0D,0x02,0x0B, 147 | 0xFF,0xFF,0xC0,0xC0,0xC0,0xFF,0xFF,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF, 148 | // 'F' 149 | 0x46,0x01,0x08,0x0D,0x02,0x0A, 150 | 0xFF,0xFF,0xC0,0xC0,0xC0,0xFE,0xFE,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, 151 | // 'G' 152 | 0x47,0x01,0x0B,0x0D,0x01,0x0E, 153 | 0x0F,0xC7,0xFD,0xC0,0xB0,0x0C,0x01,0x87,0xF0,0xFE,0x03,0xC0,0x6C,0x0D,0xC1,0x9F,0xE0,0xF8, 154 | // 'H' 155 | 0x48,0x01,0x0A,0x0D,0x02,0x0E, 156 | 0xC0,0xF0,0x3C,0x0F,0x03,0xC0,0xFF,0xFF,0xFF,0x03,0xC0,0xF0,0x3C,0x0F,0x03,0xC0,0xC0, 157 | // 'I' 158 | 0x49,0x01,0x02,0x0D,0x02,0x06, 159 | 0xFF,0xFF,0xFF,0xC0, 160 | // 'J' 161 | 0x4A,0x01,0x05,0x11,0xFF,0x06, 162 | 0x18,0xC6,0x31,0x8C,0x63,0x18,0xC6,0x31,0x8C,0xFE,0xE0, 163 | // 'K' 164 | 0x4B,0x01,0x0B,0x0D,0x02,0x0C, 165 | 0xC1,0x98,0x63,0x18,0x66,0x0D,0x81,0xE0,0x3C,0x06,0xC0,0xCC,0x18,0xC3,0x0C,0x60,0xCC,0x0C, 166 | // 'L' 167 | 0x4C,0x01,0x08,0x0D,0x02,0x0A, 168 | 0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xFF,0xFF, 169 | // 'M' 170 | 0x4D,0x01,0x0C,0x0D,0x02,0x10, 171 | 0xE0,0x7F,0x0F,0xF0,0xFD,0x8B,0xD9,0xBD,0x9B,0xCF,0x3C,0xF3,0xC6,0x3C,0x63,0xC0,0x3C,0x03,0xC0,0x30, 172 | // 'N' 173 | 0x4E,0x01,0x0A,0x0D,0x02,0x0E, 174 | 0xE0,0xF8,0x3F,0x0F,0xC3,0xD8,0xF6,0x3C,0xCF,0x1B,0xC6,0xF0,0xFC,0x3F,0x07,0xC1,0xC0, 175 | // 'O' 176 | 0x4F,0x01,0x0C,0x0D,0x01,0x0E, 177 | 0x1F,0x83,0xFC,0x70,0xE6,0x06,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xC0,0x36,0x06,0x70,0xE3,0xFC,0x1F,0x80, 178 | // 'P' 179 | 0x50,0x01,0x08,0x0D,0x02,0x0B, 180 | 0xFC,0xFE,0xC7,0xC3,0xC3,0xC7,0xFE,0xFC,0xC0,0xC0,0xC0,0xC0,0xC0, 181 | // 'Q' 182 | 0x51,0x01,0x0C,0x0F,0x01,0x0E, 183 | 0x1F,0x83,0xFC,0x70,0xE6,0x06,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xC0,0x36,0x06,0x70,0xE3,0xFC,0x1F,0x80,0x18,0x00,0xC0, 184 | // 'R' 185 | 0x52,0x01,0x0A,0x0D,0x02,0x0D, 186 | 0xFC,0x3F,0x8C,0x73,0x0C,0xC3,0x31,0xCF,0xE3,0xF0,0xC6,0x30,0xCC,0x33,0x06,0xC1,0xC0, 187 | // 'S' 188 | 0x53,0x01,0x0A,0x0D,0x01,0x0B, 189 | 0x3E,0x1F,0xCE,0x13,0x00,0xC0,0x1F,0x03,0xF0,0x0E,0x01,0x80,0x68,0x3B,0xFC,0x7E,0x00, 190 | // 'T' 191 | 0x54,0x01,0x0C,0x0D,0x00,0x0C, 192 | 0xFF,0xFF,0xFF,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00, 193 | // 'U' 194 | 0x55,0x01,0x0A,0x0D,0x02,0x0E, 195 | 0xC0,0xF0,0x3C,0x0F,0x03,0xC0,0xF0,0x3C,0x0F,0x03,0xC0,0xF0,0x36,0x19,0xFE,0x1E,0x00, 196 | // 'V' 197 | 0x56,0x01,0x0C,0x0D,0x00,0x0C, 198 | 0xC0,0x36,0x06,0x60,0x66,0x06,0x30,0xC3,0x0C,0x19,0x81,0x98,0x19,0x80,0xF0,0x0F,0x00,0x60,0x06,0x00, 199 | // 'W' 200 | 0x57,0x01,0x11,0x0D,0x01,0x13, 201 | 0xC1,0xC1,0xE0,0xE0,0xD8,0xF8,0xCC,0x6C,0x66,0x36,0x33,0x1B,0x18,0xD8,0xD8,0x6C,0x6C,0x36,0x36,0x1F,0x1F,0x07,0x07,0x03,0x83,0x81,0xC1,0xC0, 202 | // 'X' 203 | 0x58,0x01,0x0B,0x0D,0x01,0x0D, 204 | 0x70,0xE6,0x18,0xE6,0x0D,0xC0,0xF0,0x1C,0x03,0x80,0x78,0x1B,0x07,0x30,0xC7,0x30,0x6E,0x0E, 205 | // 'Y' 206 | 0x59,0x01,0x0C,0x0D,0x00,0x0C, 207 | 0xE0,0x76,0x06,0x30,0xC1,0x98,0x19,0x80,0xF0,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00, 208 | // 'Z' 209 | 0x5A,0x01,0x0B,0x0D,0x01,0x0D, 210 | 0xFF,0xFF,0xFC,0x07,0x01,0xC0,0x30,0x0E,0x03,0x80,0xE0,0x18,0x06,0x01,0xC0,0x7F,0xFF,0xFE, 211 | // '[' 212 | 0x5B,0x00,0x04,0x10,0x01,0x07, 213 | 0xFF,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFF, 214 | // '\' 215 | 0x5C,0x01,0x06,0x0F,0x00,0x06, 216 | 0xC3,0x06,0x18,0x61,0xC3,0x0C,0x30,0xE1,0x86,0x18,0x30,0xC0, 217 | // ']' 218 | 0x5D,0x00,0x04,0x10,0x02,0x07, 219 | 0xFF,0x33,0x33,0x33,0x33,0x33,0x33,0xFF, 220 | // '^' 221 | 0x5E,0x01,0x0B,0x05,0x02,0x0F, 222 | 0x0E,0x03,0xE0,0xC6,0x30,0x6C,0x06, 223 | // '_' 224 | 0x5F,0x10,0x09,0x02,0x00,0x09, 225 | 0xFF,0xFF,0xC0, 226 | // '`' 227 | 0x60,0x00,0x04,0x03,0x02,0x09, 228 | 0xC6,0x30, 229 | // 'a' 230 | 0x61,0x04,0x08,0x0A,0x01,0x0A, 231 | 0x3C,0x7E,0x47,0x03,0x3F,0xFF,0xC3,0xC7,0xFF,0x7B, 232 | // 'b' 233 | 0x62,0x00,0x09,0x0E,0x02,0x0B, 234 | 0xC0,0x60,0x30,0x18,0x0D,0xE7,0xFB,0x8F,0x83,0xC1,0xE0,0xF0,0x7C,0x7F,0xF6,0xF0, 235 | // 'c' 236 | 0x63,0x04,0x08,0x0A,0x01,0x09, 237 | 0x1E,0x7F,0x61,0xC0,0xC0,0xC0,0xC0,0x61,0x7F,0x1E, 238 | // 'd' 239 | 0x64,0x00,0x09,0x0E,0x01,0x0B, 240 | 0x01,0x80,0xC0,0x60,0x33,0xDB,0xFF,0x8F,0x83,0xC1,0xE0,0xF0,0x7C,0x77,0xF9,0xEC, 241 | // 'e' 242 | 0x65,0x04,0x0A,0x0A,0x01,0x0B, 243 | 0x1F,0x1F,0xE6,0x1F,0x03,0xFF,0xFF,0xFC,0x01,0x81,0x7F,0xC7,0xE0, 244 | // 'f' 245 | 0x66,0x00,0x07,0x0E,0x00,0x06, 246 | 0x1E,0x7C,0xC1,0x8F,0xFF,0xCC,0x18,0x30,0x60,0xC1,0x83,0x06,0x00, 247 | // 'g' 248 | 0x67,0x04,0x09,0x0E,0x01,0x0B, 249 | 0x3D,0xBF,0xF8,0xF8,0x3C,0x1E,0x0F,0x07,0xC7,0x7F,0x9E,0xC0,0x68,0x67,0xF1,0xF0, 250 | // 'h' 251 | 0x68,0x00,0x08,0x0E,0x02,0x0B, 252 | 0xC0,0xC0,0xC0,0xC0,0xDE,0xFE,0xE7,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3, 253 | // 'i' 254 | 0x69,0x00,0x02,0x0E,0x02,0x05, 255 | 0xF0,0xFF,0xFF,0xF0, 256 | // 'j' 257 | 0x6A,0x00,0x04,0x12,0x00,0x05, 258 | 0x33,0x00,0x33,0x33,0x33,0x33,0x33,0x33,0xEC, 259 | // 'k' 260 | 0x6B,0x00,0x09,0x0E,0x02,0x0A, 261 | 0xC0,0x60,0x30,0x18,0x0C,0x36,0x33,0x31,0xB0,0xF0,0x78,0x36,0x19,0x8C,0x66,0x18, 262 | // 'l' 263 | 0x6C,0x00,0x02,0x0E,0x02,0x05, 264 | 0xFF,0xFF,0xFF,0xF0, 265 | // 'm' 266 | 0x6D,0x04,0x0E,0x0A,0x02,0x11, 267 | 0xDC,0x7B,0xFB,0xEE,0x79,0xF0,0xC3,0xC3,0x0F,0x0C,0x3C,0x30,0xF0,0xC3,0xC3,0x0F,0x0C,0x30, 268 | // 'n' 269 | 0x6E,0x04,0x08,0x0A,0x02,0x0B, 270 | 0xDE,0xFE,0xE7,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3, 271 | // 'o' 272 | 0x6F,0x04,0x0A,0x0A,0x01,0x0B, 273 | 0x1E,0x1F,0xE6,0x1B,0x03,0xC0,0xF0,0x3C,0x0D,0x86,0x7F,0x87,0x80, 274 | // 'p' 275 | 0x70,0x04,0x09,0x0E,0x02,0x0B, 276 | 0xDE,0x7F,0xB8,0xF8,0x3C,0x1E,0x0F,0x07,0xC7,0xFF,0x6F,0x30,0x18,0x0C,0x06,0x00, 277 | // 'q' 278 | 0x71,0x04,0x09,0x0E,0x01,0x0B, 279 | 0x3D,0xBF,0xF8,0xF8,0x3C,0x1E,0x0F,0x07,0xC7,0x7F,0x9E,0xC0,0x60,0x30,0x18,0x0C, 280 | // 'r' 281 | 0x72,0x04,0x06,0x0A,0x02,0x08, 282 | 0xDF,0xFE,0x30,0xC3,0x0C,0x30,0xC3,0x00, 283 | // 's' 284 | 0x73,0x04,0x08,0x0A,0x01,0x08, 285 | 0x7C,0xFE,0xC2,0xE0,0x7C,0x1E,0x06,0x86,0xFE,0x78, 286 | // 't' 287 | 0x74,0x01,0x06,0x0D,0x01,0x07, 288 | 0x61,0x86,0x3F,0xFD,0x86,0x18,0x61,0x86,0x1F,0x3C, 289 | // 'u' 290 | 0x75,0x04,0x08,0x0A,0x02,0x0B, 291 | 0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0x7F,0x7B, 292 | // 'v' 293 | 0x76,0x04,0x0C,0x0A,0x00,0x0B, 294 | 0x60,0x66,0x06,0x30,0xC3,0x0C,0x19,0x81,0x98,0x19,0x80,0xF0,0x0F,0x00,0x60, 295 | // 'w' 296 | 0x77,0x04,0x0F,0x0A,0x01,0x10, 297 | 0x63,0x8C,0xC7,0x19,0x8E,0x31,0xB6,0xC3,0x6D,0x86,0xDB,0x0F,0x1E,0x0E,0x38,0x1C,0x70,0x38,0xE0, 298 | // 'x' 299 | 0x78,0x04,0x0A,0x0A,0x01,0x0B, 300 | 0xE1,0xD8,0x63,0x30,0xCC,0x1E,0x07,0x83,0x30,0xCC,0x61,0xB8,0x70, 301 | // 'y' 302 | 0x79,0x04,0x0C,0x0E,0x00,0x0B, 303 | 0x60,0x66,0x06,0x30,0xC3,0x0C,0x19,0x81,0x98,0x0F,0x00,0xF0,0x06,0x00,0x60,0x06,0x00,0xC0,0x3C,0x03,0x80, 304 | // 'z' 305 | 0x7A,0x04,0x08,0x0A,0x01,0x09, 306 | 0xFF,0xFF,0x06,0x0C,0x1C,0x38,0x30,0x70,0xFF,0xFF, 307 | // '{' 308 | 0x7B,0x00,0x08,0x11,0x02,0x0B, 309 | 0x0F,0x1F,0x18,0x18,0x18,0x18,0x38,0xF0,0xF0,0x38,0x18,0x18,0x18,0x18,0x18,0x1F,0x0F, 310 | // '|' 311 | 0x7C,0x00,0x02,0x12,0x02,0x06, 312 | 0xFF,0xFF,0xFF,0xFF,0xF0, 313 | // '}' 314 | 0x7D,0x00,0x08,0x11,0x02,0x0B, 315 | 0xF0,0xF8,0x18,0x18,0x18,0x18,0x1C,0x0F,0x0F,0x1C,0x18,0x18,0x18,0x18,0x18,0xF8,0xF0, 316 | // '~' 317 | 0x7E,0x05,0x0B,0x05,0x02,0x0F, 318 | 0x00,0x0F,0x87,0xFF,0xC3,0xE0,0x00, 319 | 320 | // Terminator 321 | 0xFF 322 | }; 323 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/DejaVuSans24.c: -------------------------------------------------------------------------------- 1 | // ======================================================================== 2 | // This comes with no warranty, implied or otherwise 3 | 4 | // This data structure was designed to support Proportional fonts 5 | // fonts. Individual characters do not have to be multiples of 8 bits wide. 6 | // Any width is fine and does not need to be fixed. 7 | 8 | // The data bits are packed to minimize data requirements, but the tradeoff 9 | // is that a header is required per character. 10 | 11 | // Header Format: 12 | // ------------------------------------------------ 13 | // Character Width (Used as a marker to indicate use this format. i.e.: = 0x00) 14 | // Character Height 15 | // First Character (Reserved. 0x00) 16 | // Number Of Characters (Reserved. 0x00) 17 | 18 | // Individual Character Format: 19 | // ---------------------------- 20 | // Character Code 21 | // Adjusted Y Offset 22 | // Width 23 | // Height 24 | // xOffset 25 | // xDelta (the distance to move the cursor. Effective width of the character.) 26 | // Data[n] 27 | 28 | // NOTE: You can remove any of these characters if they are not needed in 29 | // your application. The first character number in each Glyph indicates 30 | // the ASCII character code. Therefore, these do not have to be sequential. 31 | // Just remove all the content for a particular character to save space. 32 | // ======================================================================== 33 | 34 | // dejavu 35 | // Point Size : 24 36 | // Memory usage : 2724 bytes 37 | // # characters : 95 38 | 39 | const unsigned char tft_Dejavu24[] = 40 | { 41 | 0x00, 0x17, 0x00, 0x00, 42 | 43 | // ' ' 44 | 0x20,0x13,0x00,0x00,0x00,0x08, 45 | 46 | // '!' 47 | 0x21,0x01,0x02,0x12,0x04,0x0A, 48 | 0xFF,0xFF,0xFF,0x03,0xF0, 49 | // '"' 50 | 0x22,0x01,0x06,0x07,0x02,0x0B, 51 | 0xCF,0x3C,0xF3,0xCF,0x3C,0xC0, 52 | // '#' 53 | 0x23,0x01,0x10,0x12,0x02,0x14, 54 | 0x03,0x08,0x03,0x18,0x03,0x18,0x03,0x18,0x02,0x18,0x7F,0xFF,0x7F,0xFF,0x06,0x30,0x04,0x30,0x0C,0x20,0x0C,0x60,0xFF,0xFE,0xFF,0xFE,0x18,0x40,0x18,0xC0,0x18,0xC0,0x18,0xC0,0x10,0xC0, 55 | // '$' 56 | 0x24,0x01,0x0B,0x16,0x02,0x0F, 57 | 0x04,0x00,0x80,0x10,0x0F,0xC7,0xFD,0xC8,0xB1,0x06,0x20,0xE4,0x0F,0x80,0xFE,0x03,0xE0,0x4E,0x08,0xC1,0x1E,0x27,0xFF,0xC7,0xE0,0x10,0x02,0x00,0x40,0x08,0x00, 58 | // '%' 59 | 0x25,0x01,0x14,0x12,0x01,0x17, 60 | 0x3C,0x03,0x06,0x60,0x60,0xC3,0x06,0x0C,0x30,0xC0,0xC3,0x1C,0x0C,0x31,0x80,0xC3,0x38,0x0C,0x33,0x00,0x66,0x63,0xC3,0xC6,0x66,0x00,0xCC,0x30,0x1C,0xC3,0x01,0x8C,0x30,0x38,0xC3,0x03,0x0C,0x30,0x60,0xC3,0x06,0x06,0x60,0xC0,0x3C, 61 | // '&' 62 | 0x26,0x01,0x10,0x12,0x01,0x13, 63 | 0x07,0xC0,0x1F,0xE0,0x38,0x20,0x30,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x1C,0x00,0x3E,0x00,0x77,0x06,0xE3,0x86,0xC1,0xCC,0xC0,0xFC,0xC0,0x78,0xE0,0x78,0x70,0xFC,0x3F,0xCE,0x0F,0x87, 64 | // ''' 65 | 0x27,0x01,0x02,0x07,0x02,0x07, 66 | 0xFF,0xFC, 67 | // '(' 68 | 0x28,0x01,0x05,0x15,0x02,0x09, 69 | 0x19,0x8C,0xC6,0x31,0x18,0xC6,0x31,0x8C,0x61,0x0C,0x63,0x0C,0x61,0x80, 70 | // ')' 71 | 0x29,0x01,0x05,0x15,0x02,0x09, 72 | 0xC3,0x18,0x63,0x18,0x43,0x18,0xC6,0x31,0x8C,0x46,0x31,0x98,0xCC,0x00, 73 | // '*' 74 | 0x2A,0x01,0x0B,0x0A,0x00,0x0C, 75 | 0x04,0x00,0x83,0x11,0xBA,0xE1,0xF0,0x3E,0x1D,0x76,0x23,0x04,0x00,0x80, 76 | // '+' 77 | 0x2B,0x03,0x10,0x10,0x03,0x14, 78 | 0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0xFF,0xFF,0xFF,0xFF,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80, 79 | // ',' 80 | 0x2C,0x10,0x03,0x06,0x02,0x08, 81 | 0x6D,0xBD,0x80, 82 | // '-' 83 | 0x2D,0x0B,0x06,0x02,0x01,0x09, 84 | 0xFF,0xF0, 85 | // '.' 86 | 0x2E,0x10,0x02,0x03,0x03,0x08, 87 | 0xFC, 88 | // '/' 89 | 0x2F,0x01,0x08,0x14,0x00,0x08, 90 | 0x03,0x07,0x06,0x06,0x06,0x0C,0x0C,0x0C,0x18,0x18,0x18,0x18,0x30,0x30,0x30,0x60,0x60,0x60,0xE0,0xC0, 91 | // '0' 92 | 0x30,0x01,0x0C,0x12,0x02,0x0F, 93 | 0x0F,0x03,0xFC,0x70,0xE6,0x06,0x60,0x6C,0x03,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xC0,0x36,0x06,0x60,0x67,0x0E,0x3F,0xC0,0xF0, 94 | // '1' 95 | 0x31,0x01,0x0A,0x12,0x03,0x0F, 96 | 0x3C,0x3F,0x0C,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0xFF,0xFF,0xF0, 97 | // '2' 98 | 0x32,0x01,0x0C,0x12,0x02,0x0F, 99 | 0x3F,0x0F,0xF8,0xC1,0xC0,0x0E,0x00,0x60,0x06,0x00,0x60,0x0C,0x01,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xFF,0xEF,0xFE, 100 | // '3' 101 | 0x33,0x01,0x0C,0x12,0x02,0x0F, 102 | 0x3F,0x07,0xFC,0x41,0xC0,0x06,0x00,0x60,0x06,0x00,0x60,0x0C,0x1F,0x81,0xFC,0x00,0xE0,0x07,0x00,0x30,0x03,0x00,0x78,0x0E,0xFF,0xC3,0xF0, 103 | // '4' 104 | 0x34,0x01,0x0D,0x12,0x01,0x0F, 105 | 0x01,0xC0,0x1E,0x00,0xB0,0x0D,0x80,0xCC,0x06,0x60,0x63,0x03,0x18,0x30,0xC3,0x06,0x18,0x31,0x81,0x8F,0xFF,0xFF,0xFC,0x03,0x00,0x18,0x00,0xC0,0x06,0x00, 106 | // '5' 107 | 0x35,0x01,0x0B,0x12,0x02,0x0F, 108 | 0x7F,0xCF,0xF9,0x80,0x30,0x06,0x00,0xC0,0x1F,0xC3,0xFC,0x41,0xC0,0x1C,0x01,0x80,0x30,0x06,0x00,0xC0,0x3C,0x0E,0xFF,0x8F,0xC0, 109 | // '6' 110 | 0x36,0x01,0x0C,0x12,0x02,0x0F, 111 | 0x07,0xC1,0xFE,0x38,0x27,0x00,0x60,0x0C,0x00,0xCF,0x8D,0xFC,0xF8,0xEF,0x07,0xE0,0x3E,0x03,0xE0,0x36,0x03,0x70,0x77,0x8E,0x3F,0xC0,0xF8, 112 | // '7' 113 | 0x37,0x01,0x0B,0x12,0x02,0x0F, 114 | 0xFF,0xFF,0xFC,0x03,0x00,0x60,0x1C,0x03,0x00,0x60,0x18,0x03,0x00,0xE0,0x18,0x03,0x00,0xC0,0x18,0x07,0x00,0xC0,0x18,0x06,0x00, 115 | // '8' 116 | 0x38,0x01,0x0C,0x12,0x02,0x0F, 117 | 0x1F,0x87,0xFE,0x70,0xEC,0x03,0xC0,0x3C,0x03,0xC0,0x37,0x0E,0x3F,0xC3,0xFC,0x70,0xEC,0x03,0xC0,0x3C,0x03,0xC0,0x37,0x0E,0x7F,0xE1,0xF8, 118 | // '9' 119 | 0x39,0x01,0x0C,0x12,0x02,0x0F, 120 | 0x1F,0x03,0xFC,0x71,0xCE,0x0E,0xC0,0x6C,0x07,0xC0,0x7C,0x07,0xE0,0xF7,0x1F,0x3F,0xB1,0xF3,0x00,0x30,0x06,0x00,0xE4,0x1C,0x7F,0x83,0xE0, 121 | // ':' 122 | 0x3A,0x07,0x02,0x0C,0x03,0x08, 123 | 0xFC,0x00,0x3F, 124 | // ';' 125 | 0x3B,0x07,0x03,0x0F,0x02,0x08, 126 | 0x6D,0x80,0x00,0x0D,0xB7,0xB0, 127 | // '<' 128 | 0x3C,0x05,0x0F,0x0D,0x03,0x14, 129 | 0x00,0x02,0x00,0x3C,0x03,0xF0,0x3F,0x01,0xF8,0x1F,0x80,0x3C,0x00,0x7E,0x00,0x1F,0x80,0x0F,0xC0,0x03,0xF0,0x00,0xF0,0x00,0x20, 130 | // '=' 131 | 0x3D,0x08,0x0F,0x07,0x03,0x14, 132 | 0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x80, 133 | // '>' 134 | 0x3E,0x05,0x0F,0x0D,0x03,0x14, 135 | 0x80,0x01,0xE0,0x01,0xF8,0x00,0x7E,0x00,0x3F,0x00,0x0F,0xC0,0x07,0x80,0x3F,0x03,0xF0,0x1F,0x81,0xF8,0x07,0x80,0x08,0x00,0x00, 136 | // '?' 137 | 0x3F,0x01,0x09,0x12,0x02,0x0D, 138 | 0x3E,0x3F,0xB0,0xF0,0x30,0x18,0x0C,0x0C,0x0E,0x0E,0x0E,0x06,0x03,0x01,0x80,0x00,0x00,0x30,0x18,0x0C,0x00, 139 | // '@' 140 | 0x40,0x02,0x15,0x15,0x02,0x18, 141 | 0x00,0xFC,0x00,0x3F,0xF8,0x03,0xC0,0xF0,0x38,0x01,0xC3,0x80,0x07,0x38,0x79,0x99,0x8F,0xEC,0xFC,0x71,0xE3,0xC7,0x07,0x1E,0x30,0x18,0xF1,0x80,0xC7,0x8C,0x06,0x3C,0x70,0x73,0x71,0xC7,0xB9,0x8F,0xEF,0x8E,0x1E,0x70,0x38,0x00,0x00,0xE0,0x04,0x03,0xC0,0xE0,0x0F,0xFE,0x00,0x0F,0x80,0x00, 142 | // 'A' 143 | 0x41,0x01,0x10,0x12,0x00,0x10, 144 | 0x03,0xC0,0x03,0xC0,0x03,0xC0,0x07,0xE0,0x06,0x60,0x06,0x60,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x18,0x18,0x18,0x18,0x38,0x1C,0x3F,0xFC,0x3F,0xFC,0x60,0x06,0x60,0x06,0x60,0x06,0xC0,0x03, 145 | // 'B' 146 | 0x42,0x01,0x0C,0x12,0x02,0x10, 147 | 0xFF,0x0F,0xFC,0xC0,0xEC,0x06,0xC0,0x6C,0x06,0xC0,0x6C,0x0C,0xFF,0x8F,0xFC,0xC0,0x6C,0x03,0xC0,0x3C,0x03,0xC0,0x3C,0x06,0xFF,0xEF,0xF8, 148 | // 'C' 149 | 0x43,0x01,0x0E,0x12,0x01,0x11, 150 | 0x07,0xE0,0x7F,0xE3,0xC1,0xDC,0x01,0x60,0x01,0x80,0x0C,0x00,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0x60,0x01,0x80,0x07,0x00,0x4F,0x07,0x1F,0xF8,0x1F,0x80, 151 | // 'D' 152 | 0x44,0x01,0x0F,0x12,0x02,0x12, 153 | 0xFF,0x81,0xFF,0xE3,0x01,0xE6,0x00,0xEC,0x00,0xD8,0x01,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x80,0x0F,0x00,0x1E,0x00,0x3C,0x00,0xF8,0x01,0xB0,0x07,0x60,0x3C,0xFF,0xF1,0xFF,0x00, 154 | // 'E' 155 | 0x45,0x01,0x0B,0x12,0x02,0x0F, 156 | 0xFF,0xFF,0xFF,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xFF,0xDF,0xFB,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xFF,0xFF,0xFC, 157 | // 'F' 158 | 0x46,0x01,0x0A,0x12,0x02,0x0E, 159 | 0xFF,0xFF,0xFC,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xFF,0xBF,0xEC,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x00, 160 | // 'G' 161 | 0x47,0x01,0x0F,0x12,0x01,0x13, 162 | 0x07,0xE0,0x3F,0xF0,0xE0,0x73,0x80,0x26,0x00,0x1C,0x00,0x30,0x00,0x60,0x00,0xC0,0x7F,0x80,0xFF,0x00,0x1E,0x00,0x36,0x00,0x6C,0x00,0xDC,0x01,0x9E,0x07,0x1F,0xFC,0x0F,0xE0, 163 | // 'H' 164 | 0x48,0x01,0x0D,0x12,0x02,0x12, 165 | 0xC0,0x1E,0x00,0xF0,0x07,0x80,0x3C,0x01,0xE0,0x0F,0x00,0x78,0x03,0xFF,0xFF,0xFF,0xF0,0x07,0x80,0x3C,0x01,0xE0,0x0F,0x00,0x78,0x03,0xC0,0x1E,0x00,0xC0, 166 | // 'I' 167 | 0x49,0x01,0x02,0x12,0x02,0x07, 168 | 0xFF,0xFF,0xFF,0xFF,0xF0, 169 | // 'J' 170 | 0x4A,0x01,0x06,0x17,0xFE,0x07, 171 | 0x0C,0x30,0xC3,0x0C,0x30,0xC3,0x0C,0x30,0xC3,0x0C,0x30,0xC3,0x0C,0x30,0xC3,0x1B,0xEF,0x00, 172 | // 'K' 173 | 0x4B,0x01,0x0F,0x12,0x02,0x10, 174 | 0xC0,0x71,0x81,0xC3,0x07,0x06,0x1C,0x0C,0x70,0x19,0xC0,0x37,0x00,0x7C,0x00,0xF8,0x01,0xB0,0x03,0x38,0x06,0x38,0x0C,0x38,0x18,0x38,0x30,0x38,0x60,0x38,0xC0,0x39,0x80,0x38, 175 | // 'L' 176 | 0x4C,0x01,0x0B,0x12,0x02,0x0D, 177 | 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xFF,0xFF,0xFC, 178 | // 'M' 179 | 0x4D,0x01,0x10,0x12,0x02,0x15, 180 | 0xE0,0x07,0xF0,0x0F,0xF0,0x0F,0xF8,0x1F,0xD8,0x1B,0xD8,0x1B,0xCC,0x33,0xCC,0x33,0xCC,0x33,0xC6,0x63,0xC6,0x63,0xC7,0xE3,0xC3,0xC3,0xC3,0xC3,0xC1,0x83,0xC0,0x03,0xC0,0x03,0xC0,0x03, 181 | // 'N' 182 | 0x4E,0x01,0x0D,0x12,0x02,0x12, 183 | 0xE0,0x1F,0x80,0xFC,0x07,0xF0,0x3D,0x81,0xE6,0x0F,0x30,0x78,0xC3,0xC6,0x1E,0x18,0xF0,0xC7,0x83,0x3C,0x19,0xE0,0x6F,0x03,0x78,0x0F,0xC0,0x7E,0x01,0xC0, 184 | // 'O' 185 | 0x4F,0x01,0x10,0x12,0x01,0x13, 186 | 0x07,0xE0,0x1F,0xF8,0x3C,0x3C,0x70,0x0E,0x60,0x06,0x60,0x06,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x60,0x06,0x60,0x06,0x70,0x0E,0x3C,0x3C,0x1F,0xF8,0x07,0xE0, 187 | // 'P' 188 | 0x50,0x01,0x0B,0x12,0x02,0x0E, 189 | 0xFF,0x1F,0xFB,0x07,0x60,0x3C,0x07,0x80,0xF0,0x1E,0x0E,0xFF,0xDF,0xE3,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xC0,0x18,0x00, 190 | // 'Q' 191 | 0x51,0x01,0x10,0x15,0x01,0x13, 192 | 0x07,0xE0,0x1F,0xF8,0x3C,0x3C,0x70,0x0E,0x60,0x06,0x60,0x06,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x60,0x07,0x60,0x06,0x70,0x0E,0x3C,0x3C,0x1F,0xF8,0x07,0xF0,0x00,0x38,0x00,0x18,0x00,0x0C, 193 | // 'R' 194 | 0x52,0x01,0x0D,0x12,0x02,0x11, 195 | 0xFF,0x07,0xFE,0x30,0x31,0x80,0xCC,0x06,0x60,0x33,0x01,0x98,0x18,0xFF,0xC7,0xFC,0x30,0x71,0x81,0x8C,0x06,0x60,0x33,0x01,0xD8,0x06,0xC0,0x36,0x00,0xC0, 196 | // 'S' 197 | 0x53,0x01,0x0C,0x12,0x02,0x0F, 198 | 0x1F,0x87,0xFE,0x70,0x6C,0x00,0xC0,0x0C,0x00,0xC0,0x07,0x00,0x7F,0x01,0xFC,0x00,0xE0,0x07,0x00,0x30,0x03,0x00,0x3C,0x0E,0xFF,0xE3,0xF8, 199 | // 'T' 200 | 0x54,0x01,0x0E,0x12,0x00,0x0F, 201 | 0xFF,0xFF,0xFF,0xF0,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00, 202 | // 'U' 203 | 0x55,0x01,0x0D,0x12,0x02,0x12, 204 | 0xC0,0x1E,0x00,0xF0,0x07,0x80,0x3C,0x01,0xE0,0x0F,0x00,0x78,0x03,0xC0,0x1E,0x00,0xF0,0x07,0x80,0x3C,0x01,0xE0,0x0D,0x80,0xCE,0x0E,0x3F,0xE0,0x7C,0x00, 205 | // 'V' 206 | 0x56,0x01,0x10,0x12,0x00,0x10, 207 | 0xC0,0x03,0x60,0x06,0x60,0x06,0x60,0x06,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x18,0x18,0x18,0x18,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x06,0x60,0x06,0x60,0x07,0x60,0x03,0xC0,0x03,0xC0,0x03,0xC0, 208 | // 'W' 209 | 0x57,0x01,0x16,0x12,0x01,0x18, 210 | 0xC0,0x78,0x0F,0x01,0xE0,0x36,0x07,0x81,0x98,0x1E,0x06,0x60,0xEC,0x19,0x83,0x30,0x63,0x0C,0xC3,0x0C,0x33,0x0C,0x30,0xCE,0x30,0xC6,0x18,0xC1,0x98,0x66,0x06,0x61,0x98,0x19,0x86,0x60,0x6C,0x0D,0x80,0xF0,0x3C,0x03,0xC0,0xF0,0x0F,0x03,0xC0,0x38,0x07,0x00, 211 | // 'X' 212 | 0x58,0x01,0x0F,0x12,0x01,0x11, 213 | 0x70,0x0E,0x60,0x18,0x60,0x60,0xE1,0xC0,0xC7,0x00,0xCC,0x01,0xF0,0x01,0xE0,0x03,0x80,0x07,0x80,0x1F,0x00,0x37,0x00,0xC6,0x03,0x86,0x0E,0x0E,0x18,0x0C,0x60,0x0D,0xC0,0x1C, 214 | // 'Y' 215 | 0x59,0x01,0x0E,0x12,0x00,0x0F, 216 | 0xE0,0x1D,0x80,0x63,0x03,0x0E,0x1C,0x18,0x60,0x33,0x00,0xFC,0x01,0xE0,0x07,0x80,0x0C,0x00,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00, 217 | // 'Z' 218 | 0x5A,0x01,0x0E,0x12,0x01,0x10, 219 | 0xFF,0xFF,0xFF,0xF0,0x01,0x80,0x0E,0x00,0x70,0x01,0x80,0x0C,0x00,0x60,0x03,0x80,0x1C,0x00,0x60,0x03,0x00,0x18,0x00,0xE0,0x07,0x00,0x18,0x00,0xFF,0xFF,0xFF,0xF0, 220 | // '[' 221 | 0x5B,0x01,0x05,0x15,0x02,0x09, 222 | 0xFF,0xF1,0x8C,0x63,0x18,0xC6,0x31,0x8C,0x63,0x18,0xC6,0x31,0xFF,0x80, 223 | // '\' 224 | 0x5C,0x01,0x08,0x14,0x00,0x08, 225 | 0xC0,0xE0,0x60,0x60,0x60,0x30,0x30,0x30,0x18,0x18,0x18,0x18,0x0C,0x0C,0x0C,0x06,0x06,0x06,0x07,0x03, 226 | // ']' 227 | 0x5D,0x01,0x05,0x15,0x02,0x09, 228 | 0xFF,0xC6,0x31,0x8C,0x63,0x18,0xC6,0x31,0x8C,0x63,0x18,0xC7,0xFF,0x80, 229 | // '^' 230 | 0x5E,0x01,0x0F,0x07,0x03,0x14, 231 | 0x03,0x80,0x0F,0x80,0x3B,0x80,0xE3,0x83,0x83,0x8E,0x03,0xB8,0x03,0x80, 232 | // '_' 233 | 0x5F,0x17,0x0C,0x02,0x00,0x0C, 234 | 0xFF,0xFF,0xFF, 235 | // '`' 236 | 0x60,0x00,0x06,0x04,0x02,0x0C, 237 | 0x60,0xC1,0x83, 238 | // 'a' 239 | 0x61,0x06,0x0B,0x0D,0x01,0x0E, 240 | 0x3F,0x0F,0xF9,0x03,0x00,0x30,0x06,0x3F,0xDF,0xFF,0x03,0xC0,0x78,0x1F,0x87,0xBF,0xF3,0xE6, 241 | // 'b' 242 | 0x62,0x01,0x0C,0x12,0x02,0x0F, 243 | 0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0xF8,0xFF,0xCF,0x0E,0xE0,0x6C,0x03,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xE0,0x6F,0x0E,0xFF,0xCC,0xF8, 244 | // 'c' 245 | 0x63,0x06,0x0A,0x0D,0x01,0x0D, 246 | 0x0F,0x8F,0xF7,0x05,0x80,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x18,0x07,0x04,0xFF,0x0F,0x80, 247 | // 'd' 248 | 0x64,0x01,0x0C,0x12,0x01,0x0F, 249 | 0x00,0x30,0x03,0x00,0x30,0x03,0x00,0x31,0xF3,0x3F,0xF7,0x0F,0x60,0x7C,0x03,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0x60,0x77,0x0F,0x3F,0xF1,0xF3, 250 | // 'e' 251 | 0x65,0x06,0x0C,0x0D,0x01,0x0E, 252 | 0x0F,0x83,0xFC,0x70,0xE6,0x07,0xC0,0x3F,0xFF,0xFF,0xFC,0x00,0xC0,0x06,0x00,0x70,0x23,0xFE,0x0F,0xC0, 253 | // 'f' 254 | 0x66,0x01,0x08,0x12,0x01,0x08, 255 | 0x0F,0x1F,0x38,0x30,0x30,0xFF,0xFF,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, 256 | // 'g' 257 | 0x67,0x06,0x0C,0x12,0x01,0x0F, 258 | 0x1F,0x33,0xFF,0x70,0xF6,0x07,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xC0,0x36,0x07,0x70,0xF3,0xFF,0x1F,0x30,0x03,0x00,0x72,0x0E,0x3F,0xC1,0xF8, 259 | // 'h' 260 | 0x68,0x01,0x0B,0x12,0x02,0x0F, 261 | 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x9F,0x3F,0xF7,0x87,0xE0,0x78,0x0F,0x01,0xE0,0x3C,0x07,0x80,0xF0,0x1E,0x03,0xC0,0x78,0x0C, 262 | // 'i' 263 | 0x69,0x01,0x02,0x12,0x02,0x07, 264 | 0xFC,0x3F,0xFF,0xFF,0xF0, 265 | // 'j' 266 | 0x6A,0x01,0x05,0x17,0xFF,0x07, 267 | 0x18,0xC6,0x00,0x0C,0x63,0x18,0xC6,0x31,0x8C,0x63,0x18,0xC6,0x33,0xFB,0x80, 268 | // 'k' 269 | 0x6B,0x01,0x0C,0x12,0x02,0x0E, 270 | 0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x1C,0xC3,0x8C,0x70,0xCE,0x0D,0xC0,0xF8,0x0F,0x80,0xDC,0x0C,0xE0,0xC7,0x0C,0x38,0xC1,0xCC,0x0E, 271 | // 'l' 272 | 0x6C,0x01,0x02,0x12,0x02,0x06, 273 | 0xFF,0xFF,0xFF,0xFF,0xF0, 274 | // 'm' 275 | 0x6D,0x06,0x14,0x0D,0x02,0x18, 276 | 0xCF,0x87,0xCF,0xFC,0xFE,0xF0,0xF8,0x7E,0x07,0x03,0xC0,0x60,0x3C,0x06,0x03,0xC0,0x60,0x3C,0x06,0x03,0xC0,0x60,0x3C,0x06,0x03,0xC0,0x60,0x3C,0x06,0x03,0xC0,0x60,0x30, 277 | // 'n' 278 | 0x6E,0x06,0x0B,0x0D,0x02,0x0F, 279 | 0xCF,0x9F,0xFB,0xC3,0xF0,0x3C,0x07,0x80,0xF0,0x1E,0x03,0xC0,0x78,0x0F,0x01,0xE0,0x3C,0x06, 280 | // 'o' 281 | 0x6F,0x06,0x0C,0x0D,0x01,0x0E, 282 | 0x1F,0x83,0xFC,0x70,0xE6,0x06,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xC0,0x36,0x06,0x70,0xE3,0xFC,0x1F,0x80, 283 | // 'p' 284 | 0x70,0x06,0x0C,0x12,0x02,0x0F, 285 | 0xCF,0x8F,0xFC,0xF0,0xEE,0x06,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xC0,0x3E,0x06,0xF0,0xEF,0xFC,0xCF,0x8C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00, 286 | // 'q' 287 | 0x71,0x06,0x0C,0x12,0x01,0x0F, 288 | 0x1F,0x33,0xFF,0x70,0xF6,0x07,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0xC0,0x36,0x07,0x70,0xF3,0xFF,0x1F,0x30,0x03,0x00,0x30,0x03,0x00,0x30,0x03, 289 | // 'r' 290 | 0x72,0x06,0x08,0x0D,0x02,0x0A, 291 | 0xCF,0xFF,0xF0,0xE0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0, 292 | // 's' 293 | 0x73,0x06,0x0B,0x0D,0x01,0x0C, 294 | 0x3F,0x0F,0xF3,0x82,0x60,0x0C,0x00,0xF0,0x0F,0xC0,0x3C,0x00,0xC0,0x1A,0x07,0x7F,0xC7,0xF0, 295 | // 't' 296 | 0x74,0x02,0x08,0x11,0x00,0x09, 297 | 0x30,0x30,0x30,0x30,0xFF,0xFF,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x1F,0x0F, 298 | // 'u' 299 | 0x75,0x06,0x0B,0x0D,0x02,0x0F, 300 | 0xC0,0x78,0x0F,0x01,0xE0,0x3C,0x07,0x80,0xF0,0x1E,0x03,0xC0,0x78,0x1F,0x87,0xBF,0xF3,0xE6, 301 | // 'v' 302 | 0x76,0x06,0x0D,0x0D,0x01,0x0F, 303 | 0xC0,0x1B,0x01,0x98,0x0C,0xC0,0x63,0x06,0x18,0x30,0x63,0x03,0x18,0x18,0xC0,0x6C,0x03,0x60,0x1F,0x00,0x70,0x00, 304 | // 'w' 305 | 0x77,0x06,0x12,0x0D,0x01,0x14, 306 | 0xC1,0xE0,0xF0,0x78,0x36,0x1E,0x19,0x87,0x86,0x63,0x31,0x9C,0xCC,0xE3,0x33,0x30,0xCC,0xCC,0x36,0x1B,0x07,0x87,0x81,0xE1,0xE0,0x78,0x78,0x1C,0x0E,0x00, 307 | // 'x' 308 | 0x78,0x06,0x0D,0x0D,0x01,0x0F, 309 | 0xE0,0x3B,0x83,0x8E,0x38,0x31,0x80,0xD8,0x07,0xC0,0x1C,0x01,0xF0,0x1D,0xC0,0xC6,0x0C,0x18,0xE0,0xEE,0x03,0x80, 310 | // 'y' 311 | 0x79,0x06,0x0D,0x12,0x01,0x0F, 312 | 0xC0,0x1B,0x01,0x98,0x0C,0xE0,0xE3,0x06,0x18,0x70,0x63,0x03,0x18,0x0D,0x80,0x6C,0x03,0xE0,0x0E,0x00,0x70,0x03,0x00,0x18,0x01,0x80,0x7C,0x03,0xC0,0x00, 313 | // 'z' 314 | 0x7A,0x06,0x0B,0x0D,0x01,0x0D, 315 | 0xFF,0xFF,0xFC,0x03,0x00,0xE0,0x38,0x0E,0x03,0x80,0xE0,0x38,0x0E,0x01,0x80,0x7F,0xFF,0xFE, 316 | // '{' 317 | 0x7B,0x01,0x09,0x16,0x03,0x0F, 318 | 0x03,0x83,0xC3,0x81,0x80,0xC0,0x60,0x30,0x18,0x0C,0x0E,0x3E,0x1F,0x01,0xC0,0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0xC0,0x78,0x1C, 319 | // '|' 320 | 0x7C,0x01,0x02,0x18,0x03,0x08, 321 | 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 322 | // '}' 323 | 0x7D,0x01,0x09,0x16,0x03,0x0F, 324 | 0xE0,0x78,0x0E,0x03,0x01,0x80,0xC0,0x60,0x30,0x18,0x0E,0x03,0xE1,0xF1,0xC0,0xC0,0x60,0x30,0x18,0x0C,0x06,0x07,0x0F,0x07,0x00, 325 | // '~' 326 | 0x7E,0x09,0x0F,0x05,0x03,0x14, 327 | 0x00,0x00,0x7C,0x05,0xFE,0x1E,0x1F,0xE0,0x0F,0x80, 328 | 329 | // Terminator 330 | 0xFF 331 | }; 332 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/SmallFont.c: -------------------------------------------------------------------------------- 1 | // SmallFont.c 2 | // Font type : Full (95 characters) 3 | // Font size : 8x12 pixels 4 | // Memory usage : 1144 bytes 5 | 6 | #if defined(__AVR__) 7 | #include 8 | #define fontdatatype const uint8_t 9 | #elif defined(__PIC32MX__) 10 | #define PROGMEM 11 | #define fontdatatype const unsigned char 12 | #elif defined(__arm__) 13 | #define PROGMEM 14 | #define fontdatatype const unsigned char 15 | #endif 16 | 17 | const unsigned char tft_SmallFont[1144] = 18 | { 19 | 0x08,0x0C,0x20,0x5F, 20 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 21 | 0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x20,0x00,0x00, // ! 22 | 0x00,0x28,0x50,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // " 23 | 0x00,0x00,0x28,0x28,0xFC,0x28,0x50,0xFC,0x50,0x50,0x00,0x00, // # 24 | 0x00,0x20,0x78,0xA8,0xA0,0x60,0x30,0x28,0xA8,0xF0,0x20,0x00, // $ 25 | 0x00,0x00,0x48,0xA8,0xB0,0x50,0x28,0x34,0x54,0x48,0x00,0x00, // % 26 | 0x00,0x00,0x20,0x50,0x50,0x78,0xA8,0xA8,0x90,0x6C,0x00,0x00, // & 27 | 0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ' 28 | 0x00,0x04,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x08,0x04,0x00, // ( 29 | 0x00,0x40,0x20,0x10,0x10,0x10,0x10,0x10,0x10,0x20,0x40,0x00, // ) 30 | 0x00,0x00,0x00,0x20,0xA8,0x70,0x70,0xA8,0x20,0x00,0x00,0x00, // * 31 | 0x00,0x00,0x20,0x20,0x20,0xF8,0x20,0x20,0x20,0x00,0x00,0x00, // + 32 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x80, // , 33 | 0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // - 34 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, // . 35 | 0x00,0x08,0x10,0x10,0x10,0x20,0x20,0x40,0x40,0x40,0x80,0x00, // / 36 | 37 | 0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00, // 0 38 | 0x00,0x00,0x20,0x60,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // 1 39 | 0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x40,0x80,0xF8,0x00,0x00, // 2 40 | 0x00,0x00,0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70,0x00,0x00, // 3 41 | 0x00,0x00,0x10,0x30,0x50,0x50,0x90,0x78,0x10,0x18,0x00,0x00, // 4 42 | 0x00,0x00,0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70,0x00,0x00, // 5 43 | 0x00,0x00,0x70,0x90,0x80,0xF0,0x88,0x88,0x88,0x70,0x00,0x00, // 6 44 | 0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x20,0x20,0x20,0x00,0x00, // 7 45 | 0x00,0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70,0x00,0x00, // 8 46 | 0x00,0x00,0x70,0x88,0x88,0x88,0x78,0x08,0x48,0x70,0x00,0x00, // 9 47 | 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x20,0x00,0x00, // : 48 | 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x20,0x00, // ; 49 | 0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // < 50 | 0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x00,0x00, // = 51 | 0x00,0x40,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x40,0x00,0x00, // > 52 | 0x00,0x00,0x70,0x88,0x88,0x10,0x20,0x20,0x00,0x20,0x00,0x00, // ? 53 | 54 | 0x00,0x00,0x70,0x88,0x98,0xA8,0xA8,0xB8,0x80,0x78,0x00,0x00, // @ 55 | 0x00,0x00,0x20,0x20,0x30,0x50,0x50,0x78,0x48,0xCC,0x00,0x00, // A 56 | 0x00,0x00,0xF0,0x48,0x48,0x70,0x48,0x48,0x48,0xF0,0x00,0x00, // B 57 | 0x00,0x00,0x78,0x88,0x80,0x80,0x80,0x80,0x88,0x70,0x00,0x00, // C 58 | 0x00,0x00,0xF0,0x48,0x48,0x48,0x48,0x48,0x48,0xF0,0x00,0x00, // D 59 | 0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x48,0xF8,0x00,0x00, // E 60 | 0x00,0x00,0xF8,0x48,0x50,0x70,0x50,0x40,0x40,0xE0,0x00,0x00, // F 61 | 0x00,0x00,0x38,0x48,0x80,0x80,0x9C,0x88,0x48,0x30,0x00,0x00, // G 62 | 0x00,0x00,0xCC,0x48,0x48,0x78,0x48,0x48,0x48,0xCC,0x00,0x00, // H 63 | 0x00,0x00,0xF8,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00, // I 64 | 0x00,0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x90,0xE0,0x00, // J 65 | 0x00,0x00,0xEC,0x48,0x50,0x60,0x50,0x50,0x48,0xEC,0x00,0x00, // K 66 | 0x00,0x00,0xE0,0x40,0x40,0x40,0x40,0x40,0x44,0xFC,0x00,0x00, // L 67 | 0x00,0x00,0xD8,0xD8,0xD8,0xD8,0xA8,0xA8,0xA8,0xA8,0x00,0x00, // M 68 | 0x00,0x00,0xDC,0x48,0x68,0x68,0x58,0x58,0x48,0xE8,0x00,0x00, // N 69 | 0x00,0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70,0x00,0x00, // O 70 | 71 | 0x00,0x00,0xF0,0x48,0x48,0x70,0x40,0x40,0x40,0xE0,0x00,0x00, // P 72 | 0x00,0x00,0x70,0x88,0x88,0x88,0x88,0xE8,0x98,0x70,0x18,0x00, // Q 73 | 0x00,0x00,0xF0,0x48,0x48,0x70,0x50,0x48,0x48,0xEC,0x00,0x00, // R 74 | 0x00,0x00,0x78,0x88,0x80,0x60,0x10,0x08,0x88,0xF0,0x00,0x00, // S 75 | 0x00,0x00,0xF8,0xA8,0x20,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // T 76 | 0x00,0x00,0xCC,0x48,0x48,0x48,0x48,0x48,0x48,0x30,0x00,0x00, // U 77 | 0x00,0x00,0xCC,0x48,0x48,0x50,0x50,0x30,0x20,0x20,0x00,0x00, // V 78 | 0x00,0x00,0xA8,0xA8,0xA8,0x70,0x50,0x50,0x50,0x50,0x00,0x00, // W 79 | 0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x50,0x50,0xD8,0x00,0x00, // X 80 | 0x00,0x00,0xD8,0x50,0x50,0x20,0x20,0x20,0x20,0x70,0x00,0x00, // Y 81 | 0x00,0x00,0xF8,0x90,0x10,0x20,0x20,0x40,0x48,0xF8,0x00,0x00, // Z 82 | 0x00,0x38,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x00, // [ 83 | 0x00,0x40,0x40,0x40,0x20,0x20,0x10,0x10,0x10,0x08,0x00,0x00, // 84 | 0x00,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x70,0x00, // ] 85 | 0x00,0x20,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^ 86 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC, // _ 87 | 88 | 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ` 89 | 0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x38,0x48,0x3C,0x00,0x00, // a 90 | 0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0x70,0x00,0x00, // b 91 | 0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x40,0x40,0x38,0x00,0x00, // c 92 | 0x00,0x00,0x18,0x08,0x08,0x38,0x48,0x48,0x48,0x3C,0x00,0x00, // d 93 | 0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x78,0x40,0x38,0x00,0x00, // e 94 | 0x00,0x00,0x1C,0x20,0x20,0x78,0x20,0x20,0x20,0x78,0x00,0x00, // f 95 | 0x00,0x00,0x00,0x00,0x00,0x3C,0x48,0x30,0x40,0x78,0x44,0x38, // g 96 | 0x00,0x00,0xC0,0x40,0x40,0x70,0x48,0x48,0x48,0xEC,0x00,0x00, // h 97 | 0x00,0x00,0x20,0x00,0x00,0x60,0x20,0x20,0x20,0x70,0x00,0x00, // i 98 | 0x00,0x00,0x10,0x00,0x00,0x30,0x10,0x10,0x10,0x10,0x10,0xE0, // j 99 | 0x00,0x00,0xC0,0x40,0x40,0x5C,0x50,0x70,0x48,0xEC,0x00,0x00, // k 100 | 0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x20,0x20,0xF8,0x00,0x00, // l 101 | 0x00,0x00,0x00,0x00,0x00,0xF0,0xA8,0xA8,0xA8,0xA8,0x00,0x00, // m 102 | 0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0xEC,0x00,0x00, // n 103 | 0x00,0x00,0x00,0x00,0x00,0x30,0x48,0x48,0x48,0x30,0x00,0x00, // o 104 | 105 | 0x00,0x00,0x00,0x00,0x00,0xF0,0x48,0x48,0x48,0x70,0x40,0xE0, // p 106 | 0x00,0x00,0x00,0x00,0x00,0x38,0x48,0x48,0x48,0x38,0x08,0x1C, // q 107 | 0x00,0x00,0x00,0x00,0x00,0xD8,0x60,0x40,0x40,0xE0,0x00,0x00, // r 108 | 0x00,0x00,0x00,0x00,0x00,0x78,0x40,0x30,0x08,0x78,0x00,0x00, // s 109 | 0x00,0x00,0x00,0x20,0x20,0x70,0x20,0x20,0x20,0x18,0x00,0x00, // t 110 | 0x00,0x00,0x00,0x00,0x00,0xD8,0x48,0x48,0x48,0x3C,0x00,0x00, // u 111 | 0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x00,0x00, // v 112 | 0x00,0x00,0x00,0x00,0x00,0xA8,0xA8,0x70,0x50,0x50,0x00,0x00, // w 113 | 0x00,0x00,0x00,0x00,0x00,0xD8,0x50,0x20,0x50,0xD8,0x00,0x00, // x 114 | 0x00,0x00,0x00,0x00,0x00,0xEC,0x48,0x50,0x30,0x20,0x20,0xC0, // y 115 | 0x00,0x00,0x00,0x00,0x00,0x78,0x10,0x20,0x20,0x78,0x00,0x00, // z 116 | 0x00,0x18,0x10,0x10,0x10,0x20,0x10,0x10,0x10,0x10,0x18,0x00, // { 117 | 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10, // | 118 | 0x00,0x60,0x20,0x20,0x20,0x10,0x20,0x20,0x20,0x20,0x60,0x00, // } 119 | 0x40,0xA4,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~ 120 | }; 121 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/Ubuntu16.c: -------------------------------------------------------------------------------- 1 | // This comes with no warranty, implied or otherwise 2 | 3 | // This data structure was designed to support Proportional fonts 4 | // on Arduinos. It can however handle any ttf font that has been converted 5 | // using the conversion program. These could be fixed width or proportional 6 | // fonts. Individual characters do not have to be multiples of 8 bits wide. 7 | // Any width is fine and does not need to be fixed. 8 | 9 | // The data bits are packed to minimize data requirements, but the tradeoff 10 | // is that a header is required per character. 11 | 12 | // Ubuntu16.c 13 | // Point Size : 16 14 | // Memory usage : 1433 bytes 15 | // # characters : 95 16 | 17 | // Header Format (to make Arduino UTFT Compatible): 18 | // ------------------------------------------------ 19 | // Character Width (Used as a marker to indicate use this format. i.e.: = 0x00) 20 | // Character Height 21 | // First Character (Reserved. 0x00) 22 | // Number Of Characters (Reserved. 0x00) 23 | 24 | const unsigned char tft_Ubuntu16[] = 25 | { 26 | 0x00, 0x10, 0x00, 0x00, 27 | 28 | // Individual Character Format: 29 | // ---------------------------- 30 | // Character Code 31 | // Adjusted Y Offset 32 | // Width 33 | // Height 34 | // xOffset 35 | // xDelta (the distance to move the cursor. Effective width of the character.) 36 | // Data[n] 37 | 38 | // NOTE: You can remove any of these characters if they are not needed in 39 | // your application. The first character number in each Glyph indicates 40 | // the ASCII character code. Therefore, these do not have to be sequential. 41 | // Just remove all the content for a particular character to save space. 42 | 43 | // ' ' 44 | 0x20,0x0D,0x00,0x00,0x00,0x04, 45 | 46 | // '!' 47 | 0x21,0x02,0x01,0x0B,0x01,0x04, 48 | 0xFC,0x60, 49 | // '"' 50 | 0x22,0x00,0x04,0x04,0x01,0x07, 51 | 0x99,0x99, 52 | // '#' 53 | 0x23,0x02,0x09,0x0B,0x01,0x0B, 54 | 0x11,0x08,0x84,0x5F,0xF2,0x21,0x10,0x89,0xFF,0x44,0x22,0x11,0x00, 55 | // '$' 56 | 0x24,0x00,0x07,0x10,0x01,0x09, 57 | 0x10,0x20,0xF6,0x08,0x10,0x18,0x08,0x0C,0x0C,0x08,0x3F,0xC2,0x04,0x00, 58 | // '%' 59 | 0x25,0x02,0x0C,0x0B,0x01,0x0E, 60 | 0x70,0x4D,0x88,0x89,0x08,0x90,0xDA,0x07,0x4E,0x05,0xB0,0x91,0x09,0x11,0x1B,0x20,0xE0, 61 | // '&' 62 | 0x26,0x02,0x0A,0x0B,0x01,0x0B, 63 | 0x3C,0x18,0x84,0x21,0x08,0x2C,0x0C,0x04,0x8A,0x10,0x83,0x30,0xC7,0xC8, 64 | // ''' 65 | 0x27,0x00,0x01,0x04,0x01,0x04, 66 | 0xF0, 67 | // '(' 68 | 0x28,0x00,0x04,0x10,0x01,0x05, 69 | 0x02,0x44,0x48,0x88,0x88,0x84,0x44,0x20, 70 | // ')' 71 | 0x29,0x00,0x04,0x10,0x00,0x05, 72 | 0x04,0x22,0x21,0x11,0x11,0x12,0x22,0x40, 73 | // '*' 74 | 0x2A,0x02,0x09,0x06,0x00,0x08, 75 | 0x08,0x24,0x8F,0x83,0x81,0x41,0x10, 76 | // '+' 77 | 0x2B,0x05,0x07,0x07,0x01,0x09, 78 | 0x10,0x20,0x47,0xF1,0x02,0x04,0x00, 79 | // ',' 80 | 0x2C,0x0B,0x02,0x05,0x00,0x04, 81 | 0x54,0x80, 82 | // '-' 83 | 0x2D,0x08,0x04,0x01,0x01,0x06, 84 | 0xF0, 85 | // '.' 86 | 0x2E,0x0B,0x01,0x02,0x01,0x04, 87 | 0xC0, 88 | // '/' 89 | 0x2F,0x00,0x07,0x10,0x00,0x06, 90 | 0x02,0x08,0x10,0x20,0x81,0x02,0x08,0x10,0x40,0x81,0x04,0x08,0x10,0x40, 91 | // '0' 92 | 0x30,0x02,0x07,0x0B,0x01,0x09, 93 | 0x38,0x8B,0x1C,0x18,0x30,0x60,0xC1,0x86,0x88,0xE0, 94 | // '1' 95 | 0x31,0x02,0x04,0x0B,0x01,0x09, 96 | 0x13,0x59,0x11,0x11,0x11,0x10, 97 | // '2' 98 | 0x32,0x02,0x06,0x0B,0x01,0x09, 99 | 0x7A,0x30,0x41,0x08,0x21,0x08,0x42,0x0F,0xC0, 100 | // '3' 101 | 0x33,0x02,0x07,0x0B,0x01,0x09, 102 | 0x78,0x08,0x08,0x10,0x47,0x01,0x01,0x02,0x0B,0xE0, 103 | // '4' 104 | 0x34,0x02,0x07,0x0B,0x01,0x09, 105 | 0x04,0x18,0x51,0x22,0x48,0xA1,0x7F,0x04,0x08,0x10, 106 | // '5' 107 | 0x35,0x02,0x07,0x0B,0x01,0x09, 108 | 0x7E,0x81,0x02,0x07,0x81,0x80,0x81,0x02,0x0B,0xE0, 109 | // '6' 110 | 0x36,0x02,0x07,0x0B,0x01,0x09, 111 | 0x1C,0x61,0x00,0x0F,0x90,0xA0,0xC1,0x82,0x88,0xE0, 112 | // '7' 113 | 0x37,0x02,0x07,0x0B,0x01,0x09, 114 | 0xFE,0x04,0x10,0x40,0x82,0x04,0x08,0x20,0x40,0x80, 115 | // '8' 116 | 0x38,0x02,0x07,0x0B,0x01,0x09, 117 | 0x39,0x8A,0x0C,0x14,0x47,0x11,0x41,0x83,0x89,0xE0, 118 | // '9' 119 | 0x39,0x02,0x07,0x0B,0x01,0x09, 120 | 0x38,0x8A,0x0C,0x18,0x28,0x4F,0x81,0x04,0x11,0xC0, 121 | // ':' 122 | 0x3A,0x05,0x01,0x08,0x01,0x04, 123 | 0xC3, 124 | // ';' 125 | 0x3B,0x05,0x02,0x0B,0x00,0x04, 126 | 0x50,0x05,0x48, 127 | // '<' 128 | 0x3C,0x05,0x08,0x07,0x01,0x09, 129 | 0x02,0x0C,0x30,0x60,0x30,0x0C,0x02, 130 | // '=' 131 | 0x3D,0x06,0x07,0x04,0x01,0x09, 132 | 0xFE,0x00,0x07,0xF0, 133 | // '>' 134 | 0x3E,0x05,0x09,0x07,0x00,0x09, 135 | 0x40,0x1C,0x01,0x80,0x70,0x61,0xC1,0x00, 136 | // '?' 137 | 0x3F,0x02,0x06,0x0B,0x01,0x07, 138 | 0x78,0x30,0x41,0x18,0xC2,0x00,0x00,0x82,0x00, 139 | // '@' 140 | 0x40,0x02,0x0D,0x0D,0x01,0x0F, 141 | 0x0F,0x81,0x83,0x10,0x0C,0x8F,0xA8,0x84,0xC8,0x26,0x41,0x32,0x09,0x88,0x5A,0x3F,0x90,0x00,0x60,0x00,0xFC,0x00, 142 | // 'A' 143 | 0x41,0x02,0x0B,0x0B,0x00,0x0B, 144 | 0x04,0x01,0xC0,0x28,0x08,0x81,0x10,0x61,0x08,0x21,0xFC,0x60,0x48,0x0B,0x00,0x80, 145 | // 'B' 146 | 0x42,0x02,0x08,0x0B,0x01,0x0A, 147 | 0xF8,0x86,0x82,0x82,0x86,0xFC,0x82,0x81,0x81,0x82,0xFC, 148 | // 'C' 149 | 0x43,0x02,0x09,0x0B,0x01,0x0B, 150 | 0x1F,0x10,0x10,0x10,0x08,0x04,0x02,0x01,0x00,0x40,0x30,0x07,0xC0, 151 | // 'D' 152 | 0x44,0x02,0x09,0x0B,0x01,0x0B, 153 | 0xFC,0x41,0x20,0x50,0x18,0x0C,0x06,0x03,0x01,0x81,0x41,0x3F,0x00, 154 | // 'E' 155 | 0x45,0x02,0x07,0x0B,0x01,0x09, 156 | 0xFF,0x02,0x04,0x08,0x1F,0xA0,0x40,0x81,0x03,0xF8, 157 | // 'F' 158 | 0x46,0x02,0x07,0x0B,0x01,0x09, 159 | 0xFF,0x02,0x04,0x08,0x1F,0xA0,0x40,0x81,0x02,0x00, 160 | // 'G' 161 | 0x47,0x02,0x09,0x0B,0x01,0x0B, 162 | 0x1F,0x10,0x10,0x10,0x08,0x04,0x02,0x03,0x01,0x40,0xB0,0x47,0xE0, 163 | // 'H' 164 | 0x48,0x02,0x09,0x0B,0x01,0x0B, 165 | 0x80,0xC0,0x60,0x30,0x18,0x0F,0xFE,0x03,0x01,0x80,0xC0,0x60,0x20, 166 | // 'I' 167 | 0x49,0x02,0x01,0x0B,0x01,0x03, 168 | 0xFF,0xE0, 169 | // 'J' 170 | 0x4A,0x02,0x07,0x0B,0x00,0x08, 171 | 0x02,0x04,0x08,0x10,0x20,0x40,0x81,0x02,0x09,0xE0, 172 | // 'K' 173 | 0x4B,0x02,0x09,0x0B,0x01,0x0A, 174 | 0x81,0x41,0x23,0x12,0x0A,0x06,0x02,0xC1,0x10,0x86,0x40,0xA0,0x20, 175 | // 'L' 176 | 0x4C,0x02,0x07,0x0B,0x01,0x08, 177 | 0x81,0x02,0x04,0x08,0x10,0x20,0x40,0x81,0x03,0xF8, 178 | // 'M' 179 | 0x4D,0x02,0x0B,0x0B,0x01,0x0D, 180 | 0x40,0x4C,0x19,0x01,0x28,0xA5,0x14,0x94,0xB2,0x9C,0x33,0x84,0x30,0x06,0x00,0x80, 181 | // 'N' 182 | 0x4E,0x02,0x09,0x0B,0x01,0x0B, 183 | 0x80,0xE0,0x68,0x32,0x19,0x0C,0x46,0x13,0x05,0x82,0xC0,0xE0,0x20, 184 | // 'O' 185 | 0x4F,0x02,0x0B,0x0B,0x01,0x0D, 186 | 0x1F,0x04,0x11,0x01,0x40,0x18,0x03,0x00,0x60,0x0C,0x01,0x40,0x44,0x10,0x7C,0x00, 187 | // 'P' 188 | 0x50,0x02,0x08,0x0B,0x01,0x0A, 189 | 0xFC,0x82,0x81,0x81,0x81,0x82,0xFC,0x80,0x80,0x80,0x80, 190 | // 'Q' 191 | 0x51,0x02,0x0B,0x0E,0x01,0x0D, 192 | 0x1F,0x04,0x11,0x01,0x40,0x18,0x03,0x00,0x60,0x0C,0x01,0x40,0x44,0x10,0x78,0x02,0x00,0x30,0x01,0x80, 193 | // 'R' 194 | 0x52,0x02,0x09,0x0B,0x01,0x0A, 195 | 0xFC,0x41,0x20,0x50,0x28,0x14,0x13,0xF1,0x08,0x82,0x40,0xA0,0x20, 196 | // 'S' 197 | 0x53,0x02,0x08,0x0B,0x01,0x09, 198 | 0x3C,0xC2,0x80,0x80,0x40,0x1C,0x06,0x02,0x02,0x06,0x78, 199 | // 'T' 200 | 0x54,0x02,0x09,0x0B,0x00,0x09, 201 | 0xFF,0x84,0x02,0x01,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x00, 202 | // 'U' 203 | 0x55,0x02,0x09,0x0B,0x01,0x0B, 204 | 0x80,0xC0,0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x80,0xA0,0x8F,0x80, 205 | // 'V' 206 | 0x56,0x02,0x09,0x0B,0x00,0x09, 207 | 0x80,0xE0,0xD0,0x48,0x26,0x21,0x10,0x88,0x28,0x14,0x0E,0x02,0x00, 208 | // 'W' 209 | 0x57,0x02,0x0D,0x0B,0x00,0x0D, 210 | 0x80,0x0E,0x10,0xD0,0x84,0x8E,0x24,0x51,0x22,0x88,0xA2,0x85,0x14,0x38,0xE0,0xC2,0x04,0x10, 211 | // 'X' 212 | 0x58,0x02,0x09,0x0B,0x00,0x09, 213 | 0xC1,0xA0,0x88,0x86,0xC1,0x40,0x60,0x70,0x6C,0x22,0x20,0xB0,0x60, 214 | // 'Y' 215 | 0x59,0x02,0x09,0x0B,0x00,0x09, 216 | 0x80,0xA0,0x90,0x44,0x41,0x40,0xA0,0x20,0x10,0x08,0x04,0x02,0x00, 217 | // 'Z' 218 | 0x5A,0x02,0x07,0x0B,0x01,0x09, 219 | 0xFE,0x04,0x10,0x41,0x02,0x08,0x00,0x41,0x03,0xF8, 220 | // '[' 221 | 0x5B,0x00,0x03,0x10,0x02,0x05, 222 | 0xF2,0x49,0x24,0x92,0x49,0x27, 223 | // '\' 224 | 0x5C,0x00,0x07,0x10,0x00,0x06, 225 | 0x80,0x81,0x02,0x02,0x04,0x08,0x08,0x10,0x10,0x20,0x40,0x40,0x81,0x01, 226 | // ']' 227 | 0x5D,0x00,0x03,0x10,0x00,0x05, 228 | 0xE4,0x92,0x49,0x24,0x92,0x4F, 229 | // '^' 230 | 0x5E,0x02,0x07,0x06,0x01,0x09, 231 | 0x10,0x70,0xA2,0x24,0x50,0x40, 232 | // '_' 233 | 0x5F,0x0F,0x08,0x01,0x00,0x08, 234 | 0xFF, 235 | // '`' 236 | 0x60,0x01,0x04,0x03,0x01,0x06, 237 | 0x86,0x10, 238 | // 'a' 239 | 0x61,0x05,0x06,0x08,0x01,0x08, 240 | 0x78,0x30,0x5F,0xC6,0x18,0x5F, 241 | // 'b' 242 | 0x62,0x01,0x07,0x0C,0x01,0x09, 243 | 0x81,0x02,0x04,0x0F,0x90,0xA0,0xC1,0x83,0x06,0x17,0xC0, 244 | // 'c' 245 | 0x63,0x05,0x06,0x08,0x01,0x08, 246 | 0x3D,0x08,0x20,0x82,0x04,0x0F, 247 | // 'd' 248 | 0x64,0x01,0x07,0x0C,0x01,0x09, 249 | 0x02,0x04,0x08,0x13,0xE8,0x60,0xC1,0x83,0x05,0x09,0xF0, 250 | // 'e' 251 | 0x65,0x05,0x07,0x08,0x01,0x09, 252 | 0x3C,0x8A,0x0F,0xF8,0x10,0x10,0x1E, 253 | // 'f' 254 | 0x66,0x01,0x05,0x0C,0x01,0x06, 255 | 0x7E,0x21,0x0F,0xC2,0x10,0x84,0x21,0x00, 256 | // 'g' 257 | 0x67,0x05,0x07,0x0B,0x01,0x09, 258 | 0x3E,0x86,0x0C,0x18,0x30,0x50,0x9F,0x02,0x0B,0xE0, 259 | // 'h' 260 | 0x68,0x01,0x07,0x0C,0x01,0x09, 261 | 0x81,0x02,0x04,0x0F,0x90,0xE0,0xC1,0x83,0x06,0x0C,0x10, 262 | // 'i' 263 | 0x69,0x01,0x03,0x0C,0x00,0x03, 264 | 0x48,0x04,0x92,0x49,0x20, 265 | // 'j' 266 | 0x6A,0x01,0x04,0x0F,0xFF,0x03, 267 | 0x22,0x00,0x22,0x22,0x22,0x22,0x22,0xC0, 268 | // 'k' 269 | 0x6B,0x01,0x06,0x0C,0x01,0x08, 270 | 0x82,0x08,0x20,0x8A,0x4A,0x30,0xA2,0x48,0xA1, 271 | // 'l' 272 | 0x6C,0x01,0x04,0x0C,0x01,0x04, 273 | 0x88,0x88,0x88,0x88,0x88,0x86, 274 | // 'm' 275 | 0x6D,0x05,0x0B,0x08,0x01,0x0D, 276 | 0xFB,0xD1,0x8E,0x10,0xC2,0x18,0x43,0x08,0x61,0x0C,0x21, 277 | // 'n' 278 | 0x6E,0x05,0x07,0x08,0x01,0x09, 279 | 0xFD,0x0E,0x0C,0x18,0x30,0x60,0xC1, 280 | // 'o' 281 | 0x6F,0x05,0x08,0x08,0x01,0x0A, 282 | 0x3C,0x42,0x81,0x81,0x81,0x81,0x42,0x3C, 283 | // 'p' 284 | 0x70,0x05,0x07,0x0B,0x01,0x09, 285 | 0xF9,0x0A,0x0C,0x18,0x30,0x61,0x7C,0x81,0x02,0x00, 286 | // 'q' 287 | 0x71,0x05,0x07,0x0B,0x01,0x09, 288 | 0x3E,0x86,0x0C,0x18,0x30,0x50,0x9F,0x02,0x04,0x08, 289 | // 'r' 290 | 0x72,0x05,0x05,0x08,0x01,0x06, 291 | 0xFC,0x21,0x08,0x42,0x10, 292 | // 's' 293 | 0x73,0x05,0x05,0x08,0x01,0x07, 294 | 0x7C,0x20,0xC3,0x04,0x3E, 295 | // 't' 296 | 0x74,0x02,0x05,0x0B,0x01,0x07, 297 | 0x84,0x21,0xF8,0x42,0x10,0x84,0x1E, 298 | // 'u' 299 | 0x75,0x05,0x07,0x08,0x01,0x09, 300 | 0x83,0x06,0x0C,0x18,0x30,0x50,0xBF, 301 | // 'v' 302 | 0x76,0x05,0x07,0x08,0x00,0x07, 303 | 0x83,0x05,0x12,0x22,0x85,0x0E,0x08, 304 | // 'w' 305 | 0x77,0x05,0x0D,0x08,0x00,0x0D, 306 | 0x82,0x0C,0x10,0x51,0xC4,0x8A,0x26,0x5B,0x14,0x50,0xE3,0x82,0x08, 307 | // 'x' 308 | 0x78,0x05,0x08,0x08,0x00,0x08, 309 | 0xC3,0x66,0x24,0x18,0x18,0x24,0x42,0xC3, 310 | // 'y' 311 | 0x79,0x05,0x07,0x0B,0x00,0x07, 312 | 0x82,0x89,0x12,0x22,0x85,0x04,0x08,0x10,0x43,0x00, 313 | // 'z' 314 | 0x7A,0x05,0x06,0x08,0x01,0x08, 315 | 0xFC,0x10,0x84,0x21,0x08,0x3F, 316 | // '{' 317 | 0x7B,0x00,0x05,0x10,0x00,0x05, 318 | 0x19,0x08,0x42,0x10,0x98,0x61,0x08,0x42,0x10,0x83, 319 | // '|' 320 | 0x7C,0x00,0x01,0x10,0x02,0x05, 321 | 0xFF,0xFF, 322 | // '}' 323 | 0x7D,0x00,0x05,0x10,0x00,0x05, 324 | 0xC1,0x08,0x42,0x10,0x83,0x31,0x08,0x42,0x10,0x98, 325 | // '~' 326 | 0x7E,0x07,0x07,0x02,0x01,0x09, 327 | 0x73,0x18, 328 | 329 | // Terminator 330 | 0xFF 331 | }; 332 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/comic24.c: -------------------------------------------------------------------------------- 1 | // This comes with no warranty, implied or otherwise 2 | 3 | // This data structure was designed to support Proportional fonts 4 | // on Arduinos. It can however handle any ttf font that has been converted 5 | // using the conversion program. These could be fixed width or proportional 6 | // fonts. Individual characters do not have to be multiples of 8 bits wide. 7 | // Any width is fine and does not need to be fixed. 8 | 9 | // The data bits are packed to minimize data requirements, but the tradeoff 10 | // is that a header is required per character. 11 | 12 | // comic.c 13 | // Point Size : 24 14 | // Memory usage : 2814 bytes 15 | // # characters : 95 16 | 17 | // Header Format (to make Arduino UTFT Compatible): 18 | // ------------------------------------------------ 19 | // Character Width (Used as a marker to indicate use this format. i.e.: = 0x00) 20 | // Character Height 21 | // First Character (Reserved. 0x00) 22 | // Number Of Characters (Reserved. 0x00) 23 | 24 | unsigned char tft_Comic24[] = 25 | { 26 | 0x00, 0x19, 0x00, 0x00, 27 | 28 | // Individual Character Format: 29 | // ---------------------------- 30 | // Character Code 31 | // Adjusted Y Offset 32 | // Width 33 | // Height 34 | // xOffset 35 | // xDelta (the distance to move the cursor. Effective width of the character.) 36 | // Data[n] 37 | 38 | // NOTE: You can remove any of these characters if they are not needed in 39 | // your application. The first character number in each Glyph indicates 40 | // the ASCII character code. Therefore, these do not have to be sequential. 41 | // Just remove all the content for a particular character to save space. 42 | 43 | // ' ' 44 | 0x20,0x15,0x00,0x00,0x00,0x07, 45 | 46 | // '!' 47 | 0x21,0x02,0x02,0x14,0x01,0x06, 48 | 0xFF,0xFF,0xFF,0xFC,0x2D, 49 | // '"' 50 | 0x22,0x03,0x06,0x08,0x02,0x0A, 51 | 0xCF,0x3C,0xF3,0xCF,0x3C,0xF3, 52 | // '#' 53 | 0x23,0x03,0x14,0x12,0x01,0x14, 54 | 0x01,0x81,0x80,0x18,0x18,0x01,0x81,0x80,0x30,0x30,0x03,0x03,0x07,0xFF,0xFF,0x7F,0xFF,0xF0,0x60,0x60,0x06,0x06,0x00,0xC0,0xC0,0x0C,0x0C,0x0F,0xFF,0xFE,0xFF,0xFF,0xE1,0x81,0x80,0x18,0x18,0x03,0x83,0x00,0x30,0x30,0x03,0x03,0x00, 55 | // '$' 56 | 0x24,0x00,0x0B,0x19,0x02,0x11, 57 | 0x0C,0x01,0x80,0x30,0x0F,0x83,0xFC,0xD9,0xBB,0x06,0x60,0xCC,0x19,0x83,0xB0,0x3F,0x83,0xFC,0x1B,0x83,0x18,0x63,0x0C,0x71,0x9F,0x37,0x7F,0xC3,0xF0,0x18,0x03,0x00,0x60,0x0C,0x00, 58 | // '%' 59 | 0x25,0x01,0x11,0x14,0x02,0x14, 60 | 0x00,0x00,0x00,0x0C,0x0E,0x0E,0x0F,0x86,0x0C,0x67,0x06,0x33,0x03,0x19,0x80,0xF9,0x80,0x38,0xC0,0x00,0xE0,0x00,0x60,0x00,0x70,0x00,0x31,0xE0,0x39,0xF8,0x19,0xCE,0x1C,0xC3,0x0C,0x61,0x86,0x39,0xC6,0x0F,0xC3,0x03,0xC0, 61 | // '&' 62 | 0x26,0x03,0x0F,0x13,0x01,0x10, 63 | 0x01,0xC0,0x07,0xC0,0x19,0x80,0x33,0x00,0x6E,0x00,0xF8,0x01,0xE0,0x07,0x80,0x1F,0x8C,0x73,0x19,0xC3,0x37,0x07,0xEC,0x07,0xD8,0x07,0x30,0x0E,0x38,0x7E,0x3F,0xEC,0x3F,0x0C,0x00,0x18, 64 | // ''' 65 | 0x27,0x03,0x02,0x06,0x03,0x09, 66 | 0xFF,0xF0, 67 | // '(' 68 | 0x28,0x02,0x07,0x18,0x01,0x09, 69 | 0x06,0x1C,0x71,0xC3,0x0E,0x18,0x30,0xE1,0x83,0x06,0x0C,0x18,0x30,0x60,0xE0,0xC1,0x83,0x83,0x83,0x87,0x83, 70 | // ')' 71 | 0x29,0x02,0x06,0x18,0x02,0x09, 72 | 0xC3,0x86,0x0C,0x30,0x61,0x86,0x0C,0x30,0xC3,0x0C,0x30,0xC3,0x0C,0x61,0x86,0x31,0xCE,0x30, 73 | // '*' 74 | 0x2A,0x03,0x0B,0x09,0x01,0x0D, 75 | 0x0C,0x01,0x83,0xBF,0xFF,0xF3,0xFC,0x3C,0x0F,0xC3,0x9C,0x61,0x80, 76 | // '+' 77 | 0x2B,0x09,0x0A,0x0A,0x00,0x0C, 78 | 0x0C,0x03,0x00,0xC0,0x30,0xFF,0xFF,0xF0,0xC0,0x30,0x0C,0x03,0x00, 79 | // ',' 80 | 0x2C,0x13,0x04,0x06,0x02,0x07, 81 | 0x37,0x66,0xEC, 82 | // '-' 83 | 0x2D,0x0E,0x08,0x02,0x01,0x0A, 84 | 0xFF,0xFF, 85 | // '.' 86 | 0x2E,0x12,0x03,0x03,0x02,0x06, 87 | 0xFF,0x80, 88 | // '/' 89 | 0x2F,0x01,0x0A,0x15,0x01,0x0C, 90 | 0x00,0x00,0x30,0x0C,0x06,0x01,0x80,0x60,0x30,0x0C,0x06,0x01,0x80,0xC0,0x30,0x18,0x06,0x03,0x00,0xC0,0x60,0x18,0x0E,0x03,0x00,0xC0,0x00, 91 | // '0' 92 | 0x30,0x03,0x0D,0x12,0x01,0x0F, 93 | 0x0F,0x80,0xFF,0x0E,0x18,0xE0,0x66,0x03,0x70,0x0F,0x00,0x78,0x03,0xC0,0x1E,0x00,0xF0,0x07,0x80,0x3C,0x03,0xB0,0x19,0x81,0xC7,0x1C,0x3F,0xC0,0x7C,0x00, 94 | // '1' 95 | 0x31,0x03,0x06,0x12,0x03,0x0B, 96 | 0x10,0xC7,0x3C,0xB0,0xC3,0x0C,0x30,0xC3,0x0C,0x30,0xC3,0x0C,0xFF,0xF0, 97 | // '2' 98 | 0x32,0x03,0x0B,0x12,0x02,0x0F, 99 | 0x1F,0x07,0xFB,0xC3,0xE0,0x30,0x06,0x00,0xC0,0x38,0x0E,0x07,0x81,0xE0,0xF8,0x3C,0x07,0x01,0xC0,0x30,0x06,0x00,0xFF,0xDF,0xFC, 100 | // '3' 101 | 0x33,0x03,0x0B,0x12,0x02,0x0F, 102 | 0x1F,0x0F,0xF9,0xC3,0x80,0x30,0x06,0x00,0xC0,0x78,0x7E,0x0F,0x80,0x78,0x03,0x80,0x30,0x06,0x00,0xF0,0x1F,0x0E,0x7F,0x83,0xE0, 103 | // '4' 104 | 0x34,0x03,0x0D,0x12,0x02,0x0F, 105 | 0x01,0xC0,0x0E,0x00,0xF0,0x0F,0x80,0x6C,0x07,0x60,0x33,0x03,0x98,0x38,0xC1,0x86,0x1C,0x31,0xFF,0xFF,0xFF,0x80,0x60,0x03,0x00,0x18,0x00,0xC0,0x06,0x00, 106 | // '5' 107 | 0x35,0x02,0x0C,0x13,0x02,0x0F, 108 | 0x00,0x0F,0xFE,0xFF,0xE6,0x00,0x60,0x0E,0x00,0xEF,0x8F,0xFC,0xF8,0x6E,0x07,0xC0,0x30,0x03,0x00,0x30,0x03,0x00,0x7C,0x06,0xE1,0xE7,0xFC,0x3F,0x00, 109 | // '6' 110 | 0x36,0x03,0x0C,0x12,0x01,0x0F, 111 | 0x03,0x00,0x70,0x0E,0x01,0xC0,0x38,0x03,0x00,0x60,0x06,0xF8,0xFF,0xEE,0x0E,0xC0,0x3C,0x03,0xC0,0x3C,0x03,0x60,0x77,0x0E,0x3F,0xC1,0xF8, 112 | // '7' 113 | 0x37,0x02,0x0D,0x13,0x01,0x0F, 114 | 0x00,0x07,0xFF,0xFF,0xFE,0x00,0xE0,0x0E,0x00,0x60,0x06,0x00,0x30,0x03,0x80,0x18,0x01,0xC0,0x0C,0x00,0x60,0x07,0x00,0x30,0x03,0x80,0x18,0x00,0xC0,0x04,0x00, 115 | // '8' 116 | 0x38,0x02,0x0C,0x13,0x01,0x0F, 117 | 0x00,0x00,0xFC,0x3F,0xE3,0x07,0x60,0x36,0x03,0x60,0x37,0x8F,0x3F,0xE1,0xFE,0x38,0xE7,0x07,0x60,0x36,0x03,0x60,0x36,0x03,0x30,0x63,0xFE,0x0F,0x80, 118 | // '9' 119 | 0x39,0x03,0x0D,0x13,0x01,0x0F, 120 | 0x0F,0x01,0xFE,0x1C,0x38,0xC0,0xCC,0x07,0x60,0x1B,0x00,0xD8,0x06,0xE0,0x73,0x87,0x8F,0xF8,0x3E,0xC0,0x0E,0x00,0x60,0x07,0x00,0xF0,0x1F,0x03,0xE0,0x1C,0x00, 121 | // ':' 122 | 0x3A,0x09,0x03,0x0B,0x02,0x07, 123 | 0xFF,0x80,0x00,0xFF,0x80, 124 | // ';' 125 | 0x3B,0x09,0x04,0x0E,0x02,0x07, 126 | 0xEE,0xE0,0x00,0x00,0x03,0x7E,0xCC, 127 | // '<' 128 | 0x3C,0x09,0x07,0x0A,0x01,0x09, 129 | 0x06,0x1C,0x71,0xC7,0x1E,0x1E,0x0E,0x0E,0x0C, 130 | // '=' 131 | 0x3D,0x0A,0x09,0x09,0x01,0x0C, 132 | 0xFF,0xFF,0xC0,0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x00, 133 | // '>' 134 | 0x3E,0x08,0x08,0x0B,0x01,0x0A, 135 | 0x60,0x70,0x38,0x3C,0x1E,0x0F,0x06,0x0C,0x38,0x70,0xC0, 136 | // '?' 137 | 0x3F,0x04,0x0B,0x12,0x01,0x0D, 138 | 0x1E,0x0F,0xE3,0xC6,0x60,0x60,0x06,0x00,0xC0,0x18,0x07,0x01,0xE0,0xF8,0x3E,0x0F,0x01,0x80,0x00,0x00,0x01,0x80,0x30,0x06,0x00, 139 | // '@' 140 | 0x40,0x02,0x13,0x14,0x01,0x16, 141 | 0x03,0xF8,0x01,0xFF,0xC0,0x78,0x3C,0x1C,0x01,0xC3,0x00,0x1C,0xC1,0xC1,0x98,0xF8,0x1E,0x3C,0x03,0xC6,0x30,0x79,0x8E,0x0F,0x31,0xC1,0xE6,0x78,0x6C,0x7F,0xFC,0xC7,0x3E,0x18,0x00,0x01,0x80,0x00,0x38,0x00,0x03,0xC0,0xE0,0x1F,0xFC,0x00,0xFE,0x00, 142 | // 'A' 143 | 0x41,0x03,0x0E,0x12,0x01,0x11, 144 | 0x00,0x80,0x07,0x00,0x1C,0x00,0xF0,0x03,0xC0,0x1D,0x80,0x76,0x03,0x98,0x0E,0x20,0x70,0xC1,0xFF,0x0F,0xFC,0x7C,0x19,0xC0,0x67,0x01,0xB8,0x07,0xE0,0x0F,0x00,0x30, 145 | // 'B' 146 | 0x42,0x03,0x0B,0x13,0x03,0x0F, 147 | 0x7C,0x1F,0xE3,0x0E,0x60,0xEC,0x0D,0x81,0xB0,0x36,0x0E,0xC3,0x9F,0xE3,0xFC,0x61,0xEC,0x0F,0x80,0xF0,0x1E,0x0E,0xC7,0xDF,0xE3,0xF0,0x00, 148 | // 'C' 149 | 0x43,0x03,0x0D,0x12,0x01,0x0E, 150 | 0x01,0xF8,0x3F,0xC3,0xC6,0x38,0x31,0x80,0x1C,0x01,0xC0,0x0C,0x00,0x60,0x06,0x00,0x30,0x01,0x80,0x0C,0x00,0x60,0x19,0x81,0xCE,0x3C,0x3F,0xC0,0xF8,0x00, 151 | // 'D' 152 | 0x44,0x03,0x0D,0x12,0x02,0x11, 153 | 0x60,0x07,0xC0,0x37,0x81,0x8F,0x0C,0x1C,0x60,0x73,0x01,0xD8,0x06,0xC0,0x1E,0x00,0xF0,0x07,0x80,0x3C,0x01,0xE0,0x1B,0x01,0xDC,0x1C,0xFF,0xC1,0xF8,0x00, 154 | // 'E' 155 | 0x45,0x03,0x0D,0x12,0x02,0x0F, 156 | 0xFF,0xF7,0xFF,0xF0,0x01,0x80,0x0C,0x00,0x60,0x03,0x00,0x18,0x7E,0xFF,0xF7,0xE0,0x30,0x01,0x80,0x0C,0x00,0x60,0x03,0x00,0x18,0x00,0x7F,0xF1,0xFF,0x80, 157 | // 'F' 158 | 0x46,0x03,0x0C,0x12,0x02,0x0F, 159 | 0xFF,0xCF,0xFF,0xC0,0x7C,0x00,0xC0,0x0C,0x00,0xC0,0x0D,0xFE,0xFF,0xEF,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00,0xC0,0x0C,0x00, 160 | // 'G' 161 | 0x47,0x03,0x0F,0x12,0x01,0x10, 162 | 0x03,0xE0,0x0F,0xF0,0x38,0xE0,0xE0,0x03,0x80,0x06,0x00,0x18,0x00,0x30,0x00,0x61,0xFF,0x9F,0xFF,0x3C,0x36,0x00,0x6C,0x01,0x98,0x07,0x30,0x0C,0x30,0x70,0x7F,0xC0,0x3E,0x00, 163 | // 'H' 164 | 0x48,0x03,0x0F,0x12,0x02,0x12, 165 | 0xC0,0x03,0x80,0x0F,0x00,0x1E,0x00,0x3C,0x00,0x78,0x00,0xF0,0x01,0xE0,0x03,0xC0,0xFF,0xFF,0xFF,0xFC,0x1E,0x00,0x3C,0x00,0x78,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x80,0x0C, 166 | // 'I' 167 | 0x49,0x03,0x0C,0x12,0x00,0x0D, 168 | 0xFF,0xEF,0xFF,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0xFF,0xFF,0xFF, 169 | // 'J' 170 | 0x4A,0x03,0x0E,0x12,0x01,0x10, 171 | 0x1F,0xFC,0x7F,0xF0,0x0C,0x00,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0x00,0xC0,0x03,0x00,0x0C,0x00,0x30,0xC0,0xC3,0x06,0x0E,0x18,0x1C,0x60,0x3F,0x80,0x3C,0x00, 172 | // 'K' 173 | 0x4B,0x03,0x0C,0x12,0x03,0x0F, 174 | 0xC0,0x6C,0x0E,0xC1,0xCC,0x38,0xC7,0x0C,0xE0,0xDC,0x0F,0x80,0xF0,0x0F,0x00,0xF8,0x0F,0xC0,0xDE,0x0C,0xF0,0xC7,0x8C,0x1E,0xC0,0xFC,0x07, 175 | // 'L' 176 | 0x4C,0x03,0x0B,0x12,0x01,0x0D, 177 | 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xFF,0xEF,0xFC, 178 | // 'M' 179 | 0x4D,0x03,0x13,0x13,0x01,0x15, 180 | 0x0C,0x06,0x01,0x80,0xC0,0x78,0x3C,0x0F,0x07,0x81,0xE0,0xF0,0x3C,0x1E,0x07,0x83,0xC1,0xD8,0xEC,0x3B,0x1D,0x87,0x63,0xB0,0xCC,0xE6,0x38,0xDC,0x47,0x1B,0x8C,0xE3,0xF1,0xB8,0x3C,0x37,0x07,0x86,0xE0,0xF0,0x7C,0x1E,0x0F,0x01,0x81,0x80, 181 | // 'N' 182 | 0x4E,0x03,0x11,0x12,0x01,0x13, 183 | 0x60,0x01,0x38,0x00,0xDE,0x00,0x6F,0x00,0x37,0xC0,0x1B,0x70,0x0D,0x9C,0x06,0xCF,0x03,0x63,0x81,0xB0,0xE0,0xD8,0x38,0x6C,0x0E,0x36,0x03,0x9B,0x00,0xED,0x80,0x3E,0xC0,0x0F,0x60,0x03,0xB0,0x00,0xC0, 184 | // 'O' 185 | 0x4F,0x03,0x11,0x12,0x01,0x13, 186 | 0x01,0xF8,0x03,0xFF,0x07,0x81,0xC3,0x00,0x63,0x00,0x1B,0x80,0x0D,0x80,0x07,0xC0,0x03,0xC0,0x01,0xE0,0x00,0xF0,0x00,0xF8,0x00,0x6C,0x00,0x33,0x00,0x31,0xC0,0x38,0x70,0x78,0x1F,0xF8,0x03,0xF0,0x00, 187 | // 'P' 188 | 0x50,0x03,0x0B,0x12,0x01,0x0D, 189 | 0xFE,0x1F,0xF3,0x0F,0x60,0x7C,0x07,0x80,0xF0,0x1E,0x06,0xC3,0xDF,0xF3,0xF8,0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xC0,0x18,0x00, 190 | // 'Q' 191 | 0x51,0x03,0x14,0x17,0x01,0x15, 192 | 0x01,0xF8,0x00,0x7F,0xE0,0x1E,0x07,0x03,0x80,0x18,0x30,0x01,0xC6,0x00,0x0C,0x60,0x00,0xEC,0x00,0x06,0xC0,0x00,0x6C,0x00,0x06,0xC0,0x00,0x6C,0x00,0x06,0x60,0xE0,0xE7,0x0F,0x0C,0x38,0x79,0xC1,0xC3,0xF8,0x0F,0xFF,0x00,0x3F,0x78,0x00,0x03,0xC0,0x00,0x1E,0x00,0x00,0xF0,0x00,0x07,0x00,0x00,0x20, 193 | // 'R' 194 | 0x52,0x02,0x0D,0x13,0x01,0x0F, 195 | 0x00,0x03,0xE0,0x3F,0xC1,0x8F,0x0C,0x0E,0x60,0x33,0x00,0xD8,0x06,0xC0,0x36,0x03,0xB0,0x79,0xFF,0x8F,0xF0,0x7F,0x83,0x1F,0x18,0x3C,0xC0,0xF6,0x01,0xF0,0x06, 196 | // 'S' 197 | 0x53,0x03,0x0F,0x13,0x01,0x11, 198 | 0x01,0xF0,0x07,0xF8,0x18,0x70,0x60,0x01,0x80,0x03,0x00,0x06,0x00,0x0E,0x00,0x0F,0xF0,0x07,0xF0,0x00,0xF0,0x00,0x70,0x00,0x60,0x00,0xD8,0x01,0xB8,0x06,0x78,0x3C,0x7F,0xE0,0x3F,0x00, 199 | // 'T' 200 | 0x54,0x02,0x0F,0x13,0x01,0x10, 201 | 0x00,0x01,0xFF,0xFD,0xFF,0xF8,0x18,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x80,0x03,0x00,0x06,0x00,0x0C,0x00, 202 | // 'U' 203 | 0x55,0x03,0x11,0x12,0x01,0x12, 204 | 0x60,0x03,0x30,0x01,0x98,0x00,0xCC,0x00,0x66,0x00,0x33,0x00,0x19,0x80,0x0C,0xC0,0x06,0x60,0x03,0x30,0x01,0x98,0x01,0xCC,0x00,0xC7,0x00,0x61,0x80,0x70,0xE0,0x30,0x38,0x38,0x0F,0xF8,0x01,0xF0,0x00, 205 | // 'V' 206 | 0x56,0x03,0x0E,0x13,0x02,0x10, 207 | 0x80,0x0F,0x00,0x3C,0x01,0xB0,0x06,0x60,0x31,0x80,0xC6,0x03,0x0C,0x18,0x30,0x60,0xC1,0x81,0x8C,0x06,0x30,0x0D,0x80,0x36,0x00,0xF8,0x01,0xC0,0x07,0x00,0x08,0x00,0x00,0x00, 208 | // 'W' 209 | 0x57,0x03,0x17,0x12,0x01,0x19, 210 | 0xC0,0x20,0x0F,0xC0,0x60,0x19,0x81,0xC0,0x23,0x03,0x80,0xC6,0x07,0x01,0x86,0x1E,0x03,0x0C,0x36,0x0C,0x18,0x6C,0x18,0x11,0x98,0x60,0x33,0x30,0xC0,0x66,0x61,0x80,0xD8,0x66,0x01,0xB0,0xCC,0x01,0xC1,0xB0,0x03,0x83,0x60,0x07,0x07,0x80,0x0C,0x07,0x00,0x08,0x0E,0x00, 211 | // 'X' 212 | 0x58,0x03,0x10,0x12,0x01,0x11, 213 | 0x60,0x03,0x70,0x07,0x38,0x0E,0x1C,0x1C,0x0C,0x1C,0x0E,0x38,0x07,0x70,0x03,0xE0,0x01,0xC0,0x03,0xC0,0x07,0xE0,0x07,0x70,0x0E,0x38,0x1C,0x18,0x38,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03, 214 | // 'Y' 215 | 0x59,0x03,0x0F,0x13,0x00,0x10, 216 | 0x60,0x06,0xE0,0x1D,0xC0,0x31,0xC0,0xE1,0xC1,0x83,0x83,0x03,0x8C,0x07,0x18,0x07,0x70,0x0F,0xC0,0x0F,0x80,0x0F,0x00,0x1C,0x00,0x38,0x00,0x60,0x01,0xC0,0x03,0x00,0x06,0x00,0x08,0x00, 217 | // 'Z' 218 | 0x5A,0x03,0x0F,0x12,0x01,0x11, 219 | 0xFF,0xFF,0xFF,0xFC,0x00,0xF0,0x03,0x80,0x0E,0x00,0x3C,0x00,0xF0,0x03,0xC0,0x07,0x00,0x1E,0x00,0x38,0x00,0xE0,0x03,0xC0,0x07,0x00,0x1C,0x00,0x70,0x00,0xFF,0xFF,0xFF,0xFC, 220 | // '[' 221 | 0x5B,0x01,0x07,0x1A,0x01,0x09, 222 | 0x00,0xFD,0xFB,0x06,0x0C,0x18,0x30,0x60,0xC1,0x83,0x06,0x0C,0x18,0x30,0x60,0xC1,0x83,0x06,0x0C,0x18,0x3F,0x7E,0x00, 223 | // '\' 224 | 0x5C,0x03,0x0B,0x14,0x02,0x0D, 225 | 0xC0,0x18,0x01,0x80,0x30,0x03,0x00,0x60,0x06,0x00,0xC0,0x0C,0x01,0x80,0x18,0x03,0x00,0x20,0x06,0x00,0xC0,0x0C,0x01,0x80,0x18,0x03,0x00,0x60, 226 | // ']' 227 | 0x5D,0x01,0x07,0x1A,0x02,0x09, 228 | 0x01,0xFB,0xF0,0x60,0xC1,0x83,0x06,0x0C,0x18,0x30,0x60,0xC1,0x83,0x06,0x0C,0x18,0x30,0x60,0xC1,0x83,0x7E,0xFC,0x00, 229 | // '^' 230 | 0x5E,0x02,0x0A,0x06,0x02,0x0E, 231 | 0x0C,0x07,0x83,0xF1,0xCE,0xE1,0xF0,0x30, 232 | // '_' 233 | 0x5F,0x16,0x0F,0x04,0x00,0x0F, 234 | 0x00,0x01,0xFF,0xFF,0xFF,0xF8,0x00,0x00, 235 | // '`' 236 | 0x60,0x02,0x05,0x06,0x02,0x0D, 237 | 0xC7,0x1C,0x63,0x8C, 238 | // 'a' 239 | 0x61,0x09,0x0B,0x0C,0x01,0x0C, 240 | 0x0F,0x87,0xF9,0xE3,0x30,0x6E,0x0D,0x81,0xB0,0x36,0x06,0xC0,0xCC,0x39,0xFF,0x9F,0x30, 241 | // 'b' 242 | 0x62,0x02,0x0C,0x13,0x01,0x0E, 243 | 0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x78,0x7F,0xC7,0x8E,0x60,0x76,0x03,0x60,0x36,0x03,0x60,0x36,0x06,0x70,0xE7,0xFC,0x7F,0x00, 244 | // 'c' 245 | 0x63,0x09,0x0A,0x0C,0x01,0x0C, 246 | 0x0F,0x07,0xF3,0x0D,0x80,0x60,0x30,0x0C,0x03,0x00,0xC0,0x1C,0x33,0xFC,0x7C, 247 | // 'd' 248 | 0x64,0x02,0x0C,0x13,0x01,0x0E, 249 | 0x00,0x20,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x61,0xF6,0x3F,0xE7,0x0E,0x60,0x6C,0x06,0xC0,0x6C,0x06,0xC0,0x6E,0x06,0x70,0xE3,0xFE,0x1F,0x60, 250 | // 'e' 251 | 0x65,0x09,0x0B,0x0C,0x01,0x0D, 252 | 0x1F,0x07,0xF9,0xC7,0x30,0xEC,0x79,0xBE,0x3E,0x07,0x00,0xC0,0x6E,0x1D,0xFF,0x0F,0x80, 253 | // 'f' 254 | 0x66,0x02,0x0A,0x14,0x01,0x0C, 255 | 0x03,0x83,0xE0,0xE0,0x70,0x18,0x06,0x01,0x83,0xFF,0xFF,0xC6,0x01,0x80,0x60,0x18,0x06,0x01,0x80,0x60,0x18,0x06,0x01,0x80,0x60, 256 | // 'g' 257 | 0x67,0x09,0x0A,0x13,0x02,0x0D, 258 | 0x0F,0x0F,0xF7,0x0D,0x83,0xC0,0xF0,0x3C,0x1F,0x07,0xC1,0xD8,0xF7,0xEC,0xF3,0x00,0xC0,0x30,0x18,0x06,0x03,0xBF,0xC7,0xE0, 259 | // 'h' 260 | 0x68,0x02,0x0B,0x13,0x01,0x0E, 261 | 0x60,0x0C,0x01,0x80,0x30,0x06,0x00,0xC0,0x18,0x03,0x1E,0x6F,0xEF,0x8D,0xE1,0xB8,0x36,0x06,0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0x80, 262 | // 'i' 263 | 0x69,0x04,0x02,0x11,0x03,0x07, 264 | 0xF0,0x3F,0xFF,0xFF,0xC0, 265 | // 'j' 266 | 0x6A,0x04,0x08,0x18,0x00,0x0A, 267 | 0x03,0x03,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0xC3,0xE3,0x77,0x7E,0x1C, 268 | // 'k' 269 | 0x6B,0x03,0x0B,0x13,0x02,0x0E, 270 | 0xC0,0x18,0x03,0x00,0x60,0x0C,0x01,0x80,0x30,0x36,0x0E,0xC7,0x99,0xE3,0x70,0x7E,0x0F,0xE1,0xCE,0x30,0xE6,0x0E,0xC0,0xF8,0x08,0x00,0x00, 271 | // 'l' 272 | 0x6C,0x02,0x02,0x13,0x03,0x07, 273 | 0xFF,0xFF,0xFF,0xFF,0xFC, 274 | // 'm' 275 | 0x6D,0x09,0x10,0x0C,0x01,0x12, 276 | 0x67,0x3C,0x6F,0xFE,0x7D,0xEE,0x79,0x86,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86, 277 | // 'n' 278 | 0x6E,0x09,0x0B,0x0C,0x01,0x0D, 279 | 0x63,0x8D,0xF9,0xF1,0xBC,0x37,0x06,0xE0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x30, 280 | // 'o' 281 | 0x6F,0x09,0x0C,0x0C,0x01,0x0D, 282 | 0x0F,0x81,0xFC,0x38,0xC3,0x06,0x60,0x66,0x06,0x60,0x66,0x06,0x60,0xE3,0x1C,0x1F,0x80,0xF0, 283 | // 'p' 284 | 0x70,0x08,0x0A,0x14,0x02,0x0D, 285 | 0xC0,0x33,0xCF,0xFB,0xC6,0xC0,0xF0,0x3C,0x0F,0x03,0xC0,0xF0,0x7C,0x1B,0xFC,0xFE,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00, 286 | // 'q' 287 | 0x71,0x08,0x0A,0x14,0x01,0x0C, 288 | 0x00,0x03,0xF3,0xFD,0xE3,0x60,0xF8,0x3C,0x0F,0x03,0xC0,0xF0,0x76,0x1D,0xFF,0x1F,0x80,0x60,0x18,0x06,0x01,0x80,0x60,0x18,0x06, 289 | // 'r' 290 | 0x72,0x09,0x09,0x0C,0x01,0x0B, 291 | 0xCF,0x6F,0xFE,0x7C,0x3C,0x1E,0x03,0x01,0x80,0xC0,0x60,0x30,0x18,0x00, 292 | // 's' 293 | 0x73,0x09,0x09,0x0C,0x02,0x0C, 294 | 0x03,0x9F,0xDE,0x7C,0x3E,0x07,0xF0,0xFC,0x07,0x01,0xE0,0xFF,0xC7,0xC0, 295 | // 't' 296 | 0x74,0x05,0x0A,0x10,0x00,0x0A, 297 | 0x0C,0x03,0x00,0xC0,0x30,0xFF,0xFF,0xF0,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30, 298 | // 'u' 299 | 0x75,0x09,0x0B,0x0C,0x01,0x0C, 300 | 0xC0,0xD8,0x1B,0x03,0x60,0x6C,0x0D,0x81,0xB0,0x36,0x06,0xC0,0xD8,0x19,0xFF,0x1F,0x60, 301 | // 'v' 302 | 0x76,0x09,0x0B,0x0D,0x01,0x0C, 303 | 0xC0,0x78,0x1F,0x83,0x30,0x67,0x1C,0x63,0x0C,0xE0,0xD8,0x1E,0x03,0xC0,0x30,0x06,0x00,0x00, 304 | // 'w' 305 | 0x77,0x09,0x0F,0x0D,0x01,0x11, 306 | 0xC1,0x87,0x83,0x0F,0x0E,0x1E,0x1C,0x66,0x7C,0xCC,0xD9,0x99,0x36,0x36,0x6C,0x7C,0xD8,0x70,0xE0,0xE1,0xC0,0x83,0x80,0x00,0x00, 307 | // 'x' 308 | 0x78,0x09,0x0D,0x0D,0x01,0x0E, 309 | 0x60,0x1B,0x81,0xCE,0x1C,0x39,0xC0,0xFC,0x03,0xC0,0x3C,0x03,0xF0,0x39,0xC3,0x87,0x38,0x1D,0x80,0x70,0x01,0x80, 310 | // 'y' 311 | 0x79,0x09,0x0C,0x13,0x00,0x0D, 312 | 0xC0,0x3E,0x07,0x60,0x67,0x0C,0x30,0xC3,0x98,0x19,0x81,0xD8,0x0F,0x00,0xF0,0x06,0x00,0x60,0x0C,0x00,0xC0,0x18,0x01,0x80,0x30,0x03,0x00,0x30,0x00, 313 | // 'z' 314 | 0x7A,0x09,0x0B,0x0C,0x01,0x0D, 315 | 0xFF,0xFF,0xFC,0x07,0x00,0xC0,0x30,0x0C,0x03,0x80,0xE0,0x38,0x0E,0x03,0xFF,0xFF,0xF0, 316 | // '{' 317 | 0x7B,0x02,0x08,0x18,0x01,0x09, 318 | 0x0F,0x1F,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x60,0xE0,0xE0,0x70,0x30,0x30,0x30,0x30,0x30,0x38,0x18,0x1F,0x07, 319 | // '|' 320 | 0x7C,0x01,0x02,0x18,0x04,0x0A, 321 | 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 322 | // '}' 323 | 0x7D,0x02,0x08,0x18,0x01,0x09, 324 | 0x70,0xF8,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x06,0x07,0x07,0x0E,0x0C,0x0C,0x0C,0x0C,0x0C,0x1C,0x18,0xF8,0xE0, 325 | // '~' 326 | 0x7E,0x0B,0x0C,0x05,0x01,0x0E, 327 | 0x38,0x37,0xE3,0xE7,0x7C,0x3E,0x01,0xC0, 328 | 329 | // Terminator 330 | 0xFF 331 | }; 332 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/def_small.c: -------------------------------------------------------------------------------- 1 | // This comes with no warranty, implied or otherwise 2 | 3 | // This data structure was designed to support Proportional fonts 4 | // on Arduinos. It can however handle any ttf font that has been converted 5 | // using the conversion program. These could be fixed width or proportional 6 | // fonts. Individual characters do not have to be multiples of 8 bits wide. 7 | // Any width is fine and does not need to be fixed. 8 | 9 | // The data bits are packed to minimize data requirements, but the tradeoff 10 | // is that a header is required per character. 11 | 12 | // def_small.c 13 | // Point Size : 9 14 | // Memory usage : 928 bytes 15 | // # characters : 95 16 | 17 | // Header Format (to make Arduino UTFT Compatible): 18 | // ------------------------------------------------ 19 | // Character Width (Used as a marker to indicate use this format. i.e.: = 0x00) 20 | // Character Height 21 | // First Character (Reserved. 0x00) 22 | // Number Of Characters (Reserved. 0x00) 23 | 24 | 25 | unsigned char tft_def_small[] = 26 | { 27 | 0x00, 0x08, 0x00, 0x00, 28 | 29 | // Individual Character Format: 30 | // ---------------------------- 31 | // Character Code 32 | // Adjusted Y Offset 33 | // Width 34 | // Height 35 | // xOffset 36 | // xDelta (the distance to move the cursor. Effective width of the character.) 37 | // Data[n] 38 | 39 | // NOTE: You can remove any of these characters if they are not needed in 40 | // your application. The first character number in each Glyph indicates 41 | // the ASCII character code. Therefore, these do not have to be sequential. 42 | // Just remove all the content for a particular character to save space. 43 | 44 | // ' ' 45 | 0x20,0x08,0x00,0x00,0x00,0x03, 46 | 47 | // '!' 48 | 0x21,0x01,0x01,0x07,0x01,0x03, 49 | 0xFA, 50 | // '"' 51 | 0x22,0x01,0x03,0x02,0x01,0x04, 52 | 0xB4, 53 | // '#' 54 | 0x23,0x01,0x06,0x07,0x01,0x08, 55 | 0x28,0xAF,0xCA,0xFD,0x45,0x00, 56 | // '$' 57 | 0x24,0x01,0x06,0x08,0x00,0x06, 58 | 0x21,0xEA,0x38,0x38,0xAF,0x08, 59 | // '%' 60 | 0x25,0x01,0x08,0x07,0x00,0x09, 61 | 0x44,0xA4,0xA8,0x5A,0x15,0x25,0x22, 62 | // '&' 63 | 0x26,0x01,0x06,0x07,0x01,0x08, 64 | 0x31,0x04,0x19,0x9E,0x66,0xC0, 65 | // ''' 66 | 0x27,0x01,0x01,0x02,0x01,0x02, 67 | 0xC0, 68 | // '(' 69 | 0x28,0x00,0x02,0x08,0x01,0x04, 70 | 0x4A,0xA1, 71 | // ')' 72 | 0x29,0x00,0x02,0x08,0x01,0x04, 73 | 0x85,0x52, 74 | // '*' 75 | 0x2A,0x01,0x05,0x04,0x00,0x05, 76 | 0xAB,0x9D,0x50, 77 | // '+' 78 | 0x2B,0x03,0x05,0x05,0x01,0x08, 79 | 0x21,0x3E,0x42,0x00, 80 | // ',' 81 | 0x2C,0x07,0x01,0x02,0x01,0x03, 82 | 0xC0, 83 | // '-' 84 | 0x2D,0x05,0x02,0x01,0x01,0x03, 85 | 0xC0, 86 | // '.' 87 | 0x2E,0x07,0x01,0x01,0x01,0x03, 88 | 0x80, 89 | // '/' 90 | 0x2F,0x01,0x03,0x07,0x00,0x03, 91 | 0x25,0x25,0x20, 92 | // '0' 93 | 0x30,0x01,0x04,0x07,0x01,0x06, 94 | 0x69,0x99,0x99,0x60, 95 | // '1' 96 | 0x31,0x01,0x03,0x07,0x02,0x06, 97 | 0xC9,0x24,0xB8, 98 | // '2' 99 | 0x32,0x01,0x05,0x07,0x01,0x06, 100 | 0x64,0x84,0x44,0x43,0xC0, 101 | // '3' 102 | 0x33,0x01,0x04,0x07,0x01,0x06, 103 | 0x69,0x16,0x11,0x60, 104 | // '4' 105 | 0x34,0x01,0x05,0x07,0x01,0x06, 106 | 0x11,0x94,0xA9,0x7C,0x40, 107 | // '5' 108 | 0x35,0x01,0x04,0x07,0x01,0x06, 109 | 0xF8,0x8E,0x11,0xE0, 110 | // '6' 111 | 0x36,0x01,0x04,0x07,0x01,0x06, 112 | 0x7C,0x8E,0x99,0x60, 113 | // '7' 114 | 0x37,0x01,0x04,0x07,0x01,0x06, 115 | 0xF1,0x22,0x24,0x40, 116 | // '8' 117 | 0x38,0x01,0x04,0x07,0x01,0x06, 118 | 0x69,0x96,0x99,0x60, 119 | // '9' 120 | 0x39,0x01,0x04,0x07,0x01,0x06, 121 | 0x69,0x97,0x13,0xE0, 122 | // ':' 123 | 0x3A,0x03,0x01,0x05,0x01,0x03, 124 | 0x88, 125 | // ';' 126 | 0x3B,0x03,0x01,0x06,0x01,0x03, 127 | 0x8C, 128 | // '<' 129 | 0x3C,0x03,0x06,0x05,0x01,0x08, 130 | 0x04,0xEE,0x0E,0x04, 131 | // '=' 132 | 0x3D,0x04,0x06,0x03,0x01,0x08, 133 | 0xFC,0x0F,0xC0, 134 | // '>' 135 | 0x3E,0x03,0x06,0x05,0x01,0x08, 136 | 0x81,0xC1,0xDC,0x80, 137 | // '?' 138 | 0x3F,0x01,0x04,0x07,0x01,0x05, 139 | 0xE1,0x24,0x40,0x40, 140 | // '@' 141 | 0x40,0x01,0x08,0x08,0x01,0x0A, 142 | 0x3C,0x42,0x9D,0xA5,0xA5,0x9E,0x40,0x38, 143 | // 'A' 144 | 0x41,0x01,0x06,0x07,0x00,0x06, 145 | 0x30,0xC4,0x92,0x7A,0x18,0x40, 146 | // 'B' 147 | 0x42,0x01,0x05,0x07,0x01,0x07, 148 | 0xF4,0x63,0xE8,0xC7,0xC0, 149 | // 'C' 150 | 0x43,0x01,0x05,0x07,0x01,0x07, 151 | 0x72,0x61,0x08,0x25,0xC0, 152 | // 'D' 153 | 0x44,0x01,0x05,0x07,0x01,0x07, 154 | 0xF4,0xE3,0x18,0xCF,0xC0, 155 | // 'E' 156 | 0x45,0x01,0x04,0x07,0x01,0x06, 157 | 0xF8,0x8F,0x88,0xF0, 158 | // 'F' 159 | 0x46,0x01,0x04,0x07,0x01,0x06, 160 | 0xF8,0x8F,0x88,0x80, 161 | // 'G' 162 | 0x47,0x01,0x05,0x07,0x01,0x07, 163 | 0x76,0x61,0x38,0xE5,0xC0, 164 | // 'H' 165 | 0x48,0x01,0x05,0x07,0x01,0x07, 166 | 0x8C,0x63,0xF8,0xC6,0x20, 167 | // 'I' 168 | 0x49,0x01,0x01,0x07,0x01,0x03, 169 | 0xFE, 170 | // 'J' 171 | 0x4A,0x01,0x02,0x09,0x00,0x03, 172 | 0x55,0x55,0x80, 173 | // 'K' 174 | 0x4B,0x01,0x05,0x07,0x01,0x06, 175 | 0x8C,0xA9,0x8A,0x4A,0x20, 176 | // 'L' 177 | 0x4C,0x01,0x04,0x07,0x01,0x05, 178 | 0x88,0x88,0x88,0xF0, 179 | // 'M' 180 | 0x4D,0x01,0x06,0x07,0x01,0x08, 181 | 0x87,0x3C,0xED,0xB6,0x18,0x40, 182 | // 'N' 183 | 0x4E,0x01,0x05,0x07,0x01,0x07, 184 | 0x8E,0x73,0x59,0xCE,0x20, 185 | // 'O' 186 | 0x4F,0x01,0x05,0x07,0x01,0x07, 187 | 0x76,0xE3,0x18,0xED,0xC0, 188 | // 'P' 189 | 0x50,0x01,0x04,0x07,0x01,0x06, 190 | 0xE9,0x9E,0x88,0x80, 191 | // 'Q' 192 | 0x51,0x01,0x05,0x08,0x01,0x07, 193 | 0x76,0xE3,0x18,0xE9,0xC2, 194 | // 'R' 195 | 0x52,0x01,0x05,0x07,0x01,0x06, 196 | 0xE4,0xA5,0xCA,0x4A,0x20, 197 | // 'S' 198 | 0x53,0x01,0x06,0x07,0x01,0x07, 199 | 0x72,0x28,0x1C,0x0A,0x27,0x00, 200 | // 'T' 201 | 0x54,0x01,0x05,0x07,0x00,0x05, 202 | 0xF9,0x08,0x42,0x10,0x80, 203 | // 'U' 204 | 0x55,0x01,0x05,0x07,0x01,0x07, 205 | 0x8C,0x63,0x18,0xC5,0xC0, 206 | // 'V' 207 | 0x56,0x01,0x06,0x07,0x00,0x06, 208 | 0x86,0x14,0x92,0x48,0xC3,0x00, 209 | // 'W' 210 | 0x57,0x01,0x09,0x07,0xFF,0x07, 211 | 0x49,0x24,0x8A,0x85,0x43,0xE0,0xA0,0x50, 212 | // 'X' 213 | 0x58,0x01,0x06,0x07,0x00,0x06, 214 | 0xCD,0x23,0x0C,0x31,0x28,0xC0, 215 | // 'Y' 216 | 0x59,0x01,0x05,0x07,0x00,0x05, 217 | 0x8A,0x9C,0x42,0x10,0x80, 218 | // 'Z' 219 | 0x5A,0x01,0x05,0x07,0x00,0x05, 220 | 0xF8,0x44,0x44,0x43,0xE0, 221 | // '[' 222 | 0x5B,0x01,0x02,0x08,0x01,0x04, 223 | 0xEA,0xAB, 224 | // '\' 225 | 0x5C,0x01,0x03,0x07,0x00,0x03, 226 | 0x91,0x24,0x48, 227 | // ']' 228 | 0x5D,0x01,0x02,0x08,0x01,0x04, 229 | 0xD5,0x57, 230 | // '^' 231 | 0x5E,0x01,0x06,0x02,0x01,0x08, 232 | 0x31,0x20, 233 | // '_' 234 | 0x5F,0x09,0x05,0x01,0x00,0x05, 235 | 0xF8, 236 | // '`' 237 | 0x60,0x00,0x02,0x02,0x01,0x05, 238 | 0x90, 239 | // 'a' 240 | 0x61,0x03,0x04,0x05,0x01,0x06, 241 | 0x61,0x79,0xF0, 242 | // 'b' 243 | 0x62,0x00,0x04,0x08,0x01,0x06, 244 | 0x88,0x8E,0x99,0x9E, 245 | // 'c' 246 | 0x63,0x03,0x04,0x05,0x01,0x06, 247 | 0x78,0x88,0x70, 248 | // 'd' 249 | 0x64,0x00,0x04,0x08,0x01,0x06, 250 | 0x11,0x17,0x99,0x97, 251 | // 'e' 252 | 0x65,0x03,0x04,0x05,0x01,0x06, 253 | 0x69,0xF8,0x70, 254 | // 'f' 255 | 0x66,0x00,0x04,0x08,0x00,0x03, 256 | 0x34,0x4E,0x44,0x44, 257 | // 'g' 258 | 0x67,0x03,0x04,0x07,0x01,0x06, 259 | 0x79,0x99,0x71,0x60, 260 | // 'h' 261 | 0x68,0x00,0x04,0x08,0x01,0x06, 262 | 0x88,0x8E,0x99,0x99, 263 | // 'i' 264 | 0x69,0x01,0x01,0x07,0x01,0x03, 265 | 0xBE, 266 | // 'j' 267 | 0x6A,0x01,0x02,0x09,0x00,0x03, 268 | 0x45,0x55,0x80, 269 | // 'k' 270 | 0x6B,0x00,0x04,0x08,0x01,0x05, 271 | 0x88,0x89,0xAC,0xA9, 272 | // 'l' 273 | 0x6C,0x00,0x01,0x08,0x01,0x03, 274 | 0xFF, 275 | // 'm' 276 | 0x6D,0x03,0x07,0x05,0x01,0x09, 277 | 0xED,0x26,0x4C,0x99,0x20, 278 | // 'n' 279 | 0x6E,0x03,0x04,0x05,0x01,0x06, 280 | 0xE9,0x99,0x90, 281 | // 'o' 282 | 0x6F,0x03,0x04,0x05,0x01,0x06, 283 | 0x69,0x99,0x60, 284 | // 'p' 285 | 0x70,0x03,0x04,0x07,0x01,0x06, 286 | 0xE9,0x99,0xE8,0x80, 287 | // 'q' 288 | 0x71,0x03,0x04,0x07,0x01,0x06, 289 | 0x79,0x99,0x71,0x10, 290 | // 'r' 291 | 0x72,0x03,0x03,0x05,0x01,0x04, 292 | 0xF2,0x48, 293 | // 's' 294 | 0x73,0x03,0x04,0x05,0x01,0x05, 295 | 0x68,0x62,0xE0, 296 | // 't' 297 | 0x74,0x02,0x04,0x06,0x00,0x04, 298 | 0x4F,0x44,0x47, 299 | // 'u' 300 | 0x75,0x03,0x04,0x05,0x01,0x06, 301 | 0x99,0x99,0x70, 302 | // 'v' 303 | 0x76,0x03,0x07,0x05,0xFF,0x05, 304 | 0x44,0x98,0xA1,0xC1,0x00, 305 | // 'w' 306 | 0x77,0x03,0x07,0x05,0x00,0x07, 307 | 0x93,0x76,0xBA,0x24,0x40, 308 | // 'x' 309 | 0x78,0x03,0x05,0x05,0x00,0x05, 310 | 0x8A,0x88,0xA8,0x80, 311 | // 'y' 312 | 0x79,0x03,0x07,0x07,0xFF,0x05, 313 | 0x44,0x88,0xA1,0xC1,0x02,0x18,0x00, 314 | // 'z' 315 | 0x7A,0x03,0x04,0x05,0x01,0x06, 316 | 0xF1,0x24,0xF0, 317 | // '{' 318 | 0x7B,0x01,0x03,0x08,0x01,0x05, 319 | 0x69,0x64,0x93, 320 | // '|' 321 | 0x7C,0x01,0x01,0x09,0x01,0x03, 322 | 0xFF,0x80, 323 | // '}' 324 | 0x7D,0x01,0x03,0x08,0x01,0x05, 325 | 0xC9,0x34,0x96, 326 | // '~' 327 | 0x7E,0x03,0x06,0x03,0x01,0x08, 328 | 0x01,0x91,0x80, 329 | 330 | // Terminator 331 | 0xFF 332 | }; 333 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/default_tiny_9pt.c: -------------------------------------------------------------------------------- 1 | // This comes with no warranty, implied or otherwise 2 | 3 | // This data structure was designed to support Proportional fonts 4 | // on Arduinos. It can however handle any ttf font that has been converted 5 | // using the conversion program. These could be fixed width or proportional 6 | // fonts. Individual characters do not have to be multiples of 8 bits wide. 7 | // Any width is fine and does not need to be fixed. 8 | 9 | // The data bits are packed to minimize data requirements, but the tradeoff 10 | // is that a header is required per character. 11 | 12 | // def_small.c 13 | // Point Size : 9 14 | // Memory usage : 928 bytes 15 | // # characters : 95 16 | 17 | // Header Format (to make Arduino UTFT Compatible): 18 | // ------------------------------------------------ 19 | // Character Width (Used as a marker to indicate use this format. i.e.: = 0x00) 20 | // Character Height 21 | // First Character (Reserved. 0x00) 22 | // Number Of Characters (Reserved. 0x00) 23 | 24 | 25 | unsigned char default_tiny_9pt[] = 26 | { 27 | 0x00, 0x08, 0x00, 0x00, 28 | 29 | // Individual Character Format: 30 | // ---------------------------- 31 | // Character Code 32 | // Adjusted Y Offset 33 | // Width 34 | // Height 35 | // xOffset 36 | // xDelta (the distance to move the cursor. Effective width of the character.) 37 | // Data[n] 38 | 39 | // NOTE: You can remove any of these characters if they are not needed in 40 | // your application. The first character number in each Glyph indicates 41 | // the ASCII character code. Therefore, these do not have to be sequential. 42 | // Just remove all the content for a particular character to save space. 43 | 44 | // ' ' 45 | 0x20,0x08,0x00,0x00,0x00,0x02, 46 | 47 | // '!' 48 | 0x21,0x01,0x01,0x07,0x01,0x02, 49 | 0xFA, 50 | // '"' 51 | 0x22,0x01,0x03,0x02,0x01,0x03, 52 | 0xB4, 53 | // '#' 54 | 0x23,0x01,0x06,0x07,0x01,0x07, 55 | 0x28,0xAF,0xCA,0xFD,0x45,0x00, 56 | // '$' 57 | 0x24,0x01,0x06,0x08,0x00,0x05, 58 | 0x21,0xEA,0x38,0x38,0xAF,0x08, 59 | // '%' 60 | 0x25,0x01,0x08,0x07,0x00,0x08, 61 | 0x44,0xA4,0xA8,0x5A,0x15,0x25,0x22, 62 | // '&' 63 | 0x26,0x01,0x06,0x07,0x01,0x07, 64 | 0x31,0x04,0x19,0x9E,0x66,0xC0, 65 | // ''' 66 | 0x27,0x01,0x01,0x02,0x01,0x01, 67 | 0xC0, 68 | // '(' 69 | 0x28,0x00,0x02,0x08,0x01,0x03, 70 | 0x4A,0xA1, 71 | // ')' 72 | 0x29,0x00,0x02,0x08,0x01,0x03, 73 | 0x85,0x52, 74 | // '*' 75 | 0x2A,0x01,0x05,0x04,0x00,0x04, 76 | 0xAB,0x9D,0x50, 77 | // '+' 78 | 0x2B,0x03,0x05,0x05,0x01,0x07, 79 | 0x21,0x3E,0x42,0x00, 80 | // ',' 81 | 0x2C,0x07,0x01,0x02,0x01,0x02, 82 | 0xC0, 83 | // '-' 84 | 0x2D,0x05,0x02,0x01,0x01,0x03, 85 | 0xC0, 86 | // '.' 87 | 0x2E,0x07,0x01,0x01,0x01,0x02, 88 | 0x80, 89 | // '/' 90 | 0x2F,0x01,0x03,0x07,0x00,0x02, 91 | 0x25,0x25,0x20, 92 | // '0' 93 | 0x30,0x01,0x04,0x07,0x01,0x05, 94 | 0x69,0x99,0x99,0x60, 95 | // '1' 96 | 0x31,0x01,0x03,0x07,0x02,0x05, 97 | 0xC9,0x24,0xB8, 98 | // '2' 99 | 0x32,0x01,0x05,0x07,0x01,0x05, 100 | 0x64,0x84,0x44,0x43,0xC0, 101 | // '3' 102 | 0x33,0x01,0x04,0x07,0x01,0x05, 103 | 0x69,0x16,0x11,0x60, 104 | // '4' 105 | 0x34,0x01,0x05,0x07,0x01,0x05, 106 | 0x11,0x94,0xA9,0x7C,0x40, 107 | // '5' 108 | 0x35,0x01,0x04,0x07,0x01,0x05, 109 | 0xF8,0x8E,0x11,0xE0, 110 | // '6' 111 | 0x36,0x01,0x04,0x07,0x01,0x05, 112 | 0x7C,0x8E,0x99,0x60, 113 | // '7' 114 | 0x37,0x01,0x04,0x07,0x01,0x05, 115 | 0xF1,0x22,0x24,0x40, 116 | // '8' 117 | 0x38,0x01,0x04,0x07,0x01,0x05, 118 | 0x69,0x96,0x99,0x60, 119 | // '9' 120 | 0x39,0x01,0x04,0x07,0x01,0x05, 121 | 0x69,0x97,0x13,0xE0, 122 | // ':' 123 | 0x3A,0x03,0x01,0x05,0x01,0x02, 124 | 0x88, 125 | // ';' 126 | 0x3B,0x03,0x01,0x06,0x01,0x02, 127 | 0x8C, 128 | // '<' 129 | 0x3C,0x03,0x06,0x05,0x01,0x07, 130 | 0x04,0xEE,0x0E,0x04, 131 | // '=' 132 | 0x3D,0x04,0x06,0x03,0x01,0x07, 133 | 0xFC,0x0F,0xC0, 134 | // '>' 135 | 0x3E,0x03,0x06,0x05,0x01,0x07, 136 | 0x81,0xC1,0xDC,0x80, 137 | // '?' 138 | 0x3F,0x01,0x04,0x07,0x01,0x04, 139 | 0xE1,0x24,0x40,0x40, 140 | // '@' 141 | 0x40,0x01,0x08,0x08,0x01,0x09, 142 | 0x3C,0x42,0x9D,0xA5,0xA5,0x9E,0x40,0x38, 143 | // 'A' 144 | 0x41,0x01,0x06,0x07,0x00,0x05, 145 | 0x30,0xC4,0x92,0x7A,0x18,0x40, 146 | // 'B' 147 | 0x42,0x01,0x05,0x07,0x01,0x06, 148 | 0xF4,0x63,0xE8,0xC7,0xC0, 149 | // 'C' 150 | 0x43,0x01,0x05,0x07,0x01,0x06, 151 | 0x72,0x61,0x08,0x25,0xC0, 152 | // 'D' 153 | 0x44,0x01,0x05,0x07,0x01,0x06, 154 | 0xF4,0xE3,0x18,0xCF,0xC0, 155 | // 'E' 156 | 0x45,0x01,0x04,0x07,0x01,0x05, 157 | 0xF8,0x8F,0x88,0xF0, 158 | // 'F' 159 | 0x46,0x01,0x04,0x07,0x01,0x05, 160 | 0xF8,0x8F,0x88,0x80, 161 | // 'G' 162 | 0x47,0x01,0x05,0x07,0x01,0x06, 163 | 0x76,0x61,0x38,0xE5,0xC0, 164 | // 'H' 165 | 0x48,0x01,0x05,0x07,0x01,0x06, 166 | 0x8C,0x63,0xF8,0xC6,0x20, 167 | // 'I' 168 | 0x49,0x01,0x01,0x07,0x01,0x02, 169 | 0xFE, 170 | // 'J' 171 | 0x4A,0x01,0x02,0x09,0x00,0x02, 172 | 0x55,0x55,0x80, 173 | // 'K' 174 | 0x4B,0x01,0x05,0x07,0x01,0x05, 175 | 0x8C,0xA9,0x8A,0x4A,0x20, 176 | // 'L' 177 | 0x4C,0x01,0x04,0x07,0x01,0x04, 178 | 0x88,0x88,0x88,0xF0, 179 | // 'M' 180 | 0x4D,0x01,0x06,0x07,0x01,0x07, 181 | 0x87,0x3C,0xED,0xB6,0x18,0x40, 182 | // 'N' 183 | 0x4E,0x01,0x05,0x07,0x01,0x06, 184 | 0x8E,0x73,0x59,0xCE,0x20, 185 | // 'O' 186 | 0x4F,0x01,0x05,0x07,0x01,0x06, 187 | 0x76,0xE3,0x18,0xED,0xC0, 188 | // 'P' 189 | 0x50,0x01,0x04,0x07,0x01,0x05, 190 | 0xE9,0x9E,0x88,0x80, 191 | // 'Q' 192 | 0x51,0x01,0x05,0x08,0x01,0x06, 193 | 0x76,0xE3,0x18,0xE9,0xC2, 194 | // 'R' 195 | 0x52,0x01,0x05,0x07,0x01,0x05, 196 | 0xE4,0xA5,0xCA,0x4A,0x20, 197 | // 'S' 198 | 0x53,0x01,0x06,0x07,0x01,0x06, 199 | 0x72,0x28,0x1C,0x0A,0x27,0x00, 200 | // 'T' 201 | 0x54,0x01,0x05,0x07,0x00,0x04, 202 | 0xF9,0x08,0x42,0x10,0x80, 203 | // 'U' 204 | 0x55,0x01,0x05,0x07,0x01,0x06, 205 | 0x8C,0x63,0x18,0xC5,0xC0, 206 | // 'V' 207 | 0x56,0x01,0x06,0x07,0x00,0x05, 208 | 0x86,0x14,0x92,0x48,0xC3,0x00, 209 | // 'W' 210 | 0x57,0x01,0x09,0x07,0xFF,0x05, 211 | 0x49,0x24,0x8A,0x85,0x43,0xE0,0xA0,0x50, 212 | // 'X' 213 | 0x58,0x01,0x06,0x07,0x00,0x05, 214 | 0xCD,0x23,0x0C,0x31,0x28,0xC0, 215 | // 'Y' 216 | 0x59,0x01,0x05,0x07,0x00,0x04, 217 | 0x8A,0x9C,0x42,0x10,0x80, 218 | // 'Z' 219 | 0x5A,0x01,0x05,0x07,0x00,0x04, 220 | 0xF8,0x44,0x44,0x43,0xE0, 221 | // '[' 222 | 0x5B,0x01,0x02,0x08,0x01,0x03, 223 | 0xEA,0xAB, 224 | // '\' 225 | 0x5C,0x01,0x03,0x07,0x00,0x02, 226 | 0x91,0x24,0x48, 227 | // ']' 228 | 0x5D,0x01,0x02,0x08,0x01,0x03, 229 | 0xD5,0x57, 230 | // '^' 231 | 0x5E,0x01,0x06,0x02,0x01,0x07, 232 | 0x31,0x20, 233 | // '_' 234 | 0x5F,0x09,0x05,0x01,0x00,0x04, 235 | 0xF8, 236 | // '`' 237 | 0x60,0x00,0x02,0x02,0x01,0x04, 238 | 0x90, 239 | // 'a' 240 | 0x61,0x03,0x04,0x05,0x01,0x05, 241 | 0x61,0x79,0xF0, 242 | // 'b' 243 | 0x62,0x00,0x04,0x08,0x01,0x05, 244 | 0x88,0x8E,0x99,0x9E, 245 | // 'c' 246 | 0x63,0x03,0x04,0x05,0x01,0x05, 247 | 0x78,0x88,0x70, 248 | // 'd' 249 | 0x64,0x00,0x04,0x08,0x01,0x05, 250 | 0x11,0x17,0x99,0x97, 251 | // 'e' 252 | 0x65,0x03,0x04,0x05,0x01,0x05, 253 | 0x69,0xF8,0x70, 254 | // 'f' 255 | 0x66,0x00,0x04,0x08,0x00,0x02, 256 | 0x34,0x4E,0x44,0x44, 257 | // 'g' 258 | 0x67,0x03,0x04,0x07,0x01,0x05, 259 | 0x79,0x99,0x71,0x60, 260 | // 'h' 261 | 0x68,0x00,0x04,0x08,0x01,0x05, 262 | 0x88,0x8E,0x99,0x99, 263 | // 'i' 264 | 0x69,0x01,0x01,0x07,0x01,0x02, 265 | 0xBE, 266 | // 'j' 267 | 0x6A,0x01,0x02,0x09,0x00,0x02, 268 | 0x45,0x55,0x80, 269 | // 'k' 270 | 0x6B,0x00,0x04,0x08,0x01,0x04, 271 | 0x88,0x89,0xAC,0xA9, 272 | // 'l' 273 | 0x6C,0x00,0x01,0x08,0x01,0x02, 274 | 0xFF, 275 | // 'm' 276 | 0x6D,0x03,0x07,0x05,0x01,0x08, 277 | 0xED,0x26,0x4C,0x99,0x20, 278 | // 'n' 279 | 0x6E,0x03,0x04,0x05,0x01,0x05, 280 | 0xE9,0x99,0x90, 281 | // 'o' 282 | 0x6F,0x03,0x04,0x05,0x01,0x05, 283 | 0x69,0x99,0x60, 284 | // 'p' 285 | 0x70,0x03,0x04,0x07,0x01,0x05, 286 | 0xE9,0x99,0xE8,0x80, 287 | // 'q' 288 | 0x71,0x03,0x04,0x07,0x01,0x05, 289 | 0x79,0x99,0x71,0x10, 290 | // 'r' 291 | 0x72,0x03,0x03,0x05,0x01,0x03, 292 | 0xF2,0x48, 293 | // 's' 294 | 0x73,0x03,0x04,0x05,0x01,0x04, 295 | 0x68,0x62,0xE0, 296 | // 't' 297 | 0x74,0x02,0x04,0x06,0x00,0x03, 298 | 0x4F,0x44,0x47, 299 | // 'u' 300 | 0x75,0x03,0x04,0x05,0x01,0x05, 301 | 0x99,0x99,0x70, 302 | // 'v' 303 | 0x76,0x03,0x07,0x05,0xFF,0x04, 304 | 0x44,0x98,0xA1,0xC1,0x00, 305 | // 'w' 306 | 0x77,0x03,0x07,0x05,0x00,0x06, 307 | 0x93,0x76,0xBA,0x24,0x40, 308 | // 'x' 309 | 0x78,0x03,0x05,0x05,0x00,0x04, 310 | 0x8A,0x88,0xA8,0x80, 311 | // 'y' 312 | 0x79,0x03,0x07,0x07,0xFF,0x04, 313 | 0x44,0x88,0xA1,0xC1,0x02,0x18,0x00, 314 | // 'z' 315 | 0x7A,0x03,0x04,0x05,0x01,0x05, 316 | 0xF1,0x24,0xF0, 317 | // '{' 318 | 0x7B,0x01,0x03,0x08,0x01,0x04, 319 | 0x69,0x64,0x93, 320 | // '|' 321 | 0x7C,0x01,0x01,0x09,0x01,0x02, 322 | 0xFF,0x80, 323 | // '}' 324 | 0x7D,0x01,0x03,0x08,0x01,0x04, 325 | 0xC9,0x34,0x96, 326 | // '~' 327 | 0x7E,0x03,0x06,0x03,0x01,0x07, 328 | 0x01,0x91,0x80, 329 | 330 | // Terminator 331 | 0xFF 332 | }; 333 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/font/minya24.c: -------------------------------------------------------------------------------- 1 | // This comes with no warranty, implied or otherwise 2 | 3 | // This data structure was designed to support Proportional fonts 4 | // on Arduinos. It can however handle any ttf font that has been converted 5 | // using the conversion program. These could be fixed width or proportional 6 | // fonts. Individual characters do not have to be multiples of 8 bits wide. 7 | // Any width is fine and does not need to be fixed. 8 | 9 | // The data bits are packed to minimize data requirements, but the tradeoff 10 | // is that a header is required per character. 11 | 12 | // minya24.c 13 | // Point Size : 24 14 | // Memory usage : 2807 bytes 15 | // # characters : 95 16 | 17 | // Header Format (to make Arduino UTFT Compatible): 18 | // ------------------------------------------------ 19 | // Character Width (Used as a marker to indicate use this format. i.e.: = 0x00) 20 | // Character Height 21 | // First Character (Reserved. 0x00) 22 | // Number Of Characters (Reserved. 0x00) 23 | 24 | unsigned char tft_minya24[] = 25 | { 26 | 0x00, 0x15, 0x00, 0x00, 27 | 28 | // Individual Character Format: 29 | // ---------------------------- 30 | // Character Code 31 | // Adjusted Y Offset 32 | // Width 33 | // Height 34 | // xOffset 35 | // xDelta (the distance to move the cursor. Effective width of the character.) 36 | // Data[n] 37 | 38 | // NOTE: You can remove any of these characters if they are not needed in 39 | // your application. The first character number in each Glyph indicates 40 | // the ASCII character code. Therefore, these do not have to be sequential. 41 | // Just remove all the content for a particular character to save space. 42 | 43 | // ' ' 44 | 0x20,0x13,0x00,0x00,0x00,0x07, 45 | 46 | // '!' 47 | 0x21,0x02,0x05,0x12,0x00,0x05, 48 | 0x11,0x8C,0x63,0x18,0xC6,0x31,0x8C,0x42,0x01,0xCE,0x73,0x80, 49 | // '"' 50 | 0x22,0x01,0x06,0x08,0x00,0x06, 51 | 0x01,0xA6,0xDB,0x6D,0xB6,0xC0, 52 | // '#' 53 | 0x23,0x04,0x0C,0x0E,0x00,0x0B, 54 | 0x04,0x80,0x6C,0x0C,0x80,0xD8,0x7F,0xE7,0xFE,0x1B,0x01,0xB0,0x7F,0xE7,0xFC,0x12,0x03,0x20,0x32,0x00,0x00, 55 | // '$' 56 | 0x24,0x02,0x0A,0x11,0x00,0x0B, 57 | 0x04,0x01,0x61,0xF8,0xFE,0x65,0x19,0x06,0x40,0xF0,0x1F,0x01,0xE0,0x4C,0x93,0x7C,0xCF,0xE0,0x60,0x10,0x04,0x00, 58 | // '%' 59 | 0x25,0x01,0x0D,0x14,0x01,0x0F, 60 | 0x00,0x01,0xC1,0x1F,0x19,0x8C,0xCC,0x6C,0x63,0x61,0x36,0x0F,0xB0,0x1B,0x00,0x18,0x01,0x80,0x0C,0x00,0xCE,0x06,0xF8,0x6C,0x66,0x63,0x33,0x13,0x0F,0x98,0x38,0x00,0x00, 61 | // '&' 62 | 0x26,0x02,0x0E,0x11,0x00,0x0D, 63 | 0x0E,0x00,0x7C,0x01,0xB0,0x06,0xC0,0x1E,0x00,0x38,0x00,0xC3,0x07,0x8C,0x37,0x60,0xCD,0x86,0x1E,0x18,0x70,0x41,0xE1,0x07,0xC6,0x33,0x9F,0x86,0x38,0x00, 64 | // ''' 65 | 0x27,0x02,0x03,0x08,0x00,0x03, 66 | 0x6D,0xB6,0xD8, 67 | // '(' 68 | 0x28,0x01,0x05,0x14,0x02,0x07, 69 | 0x00,0x8E,0x66,0x33,0x18,0xC6,0x31,0x8C,0x61,0x0C,0x63,0x8C,0x00, 70 | // ')' 71 | 0x29,0x01,0x06,0x15,0x00,0x07, 72 | 0x01,0x86,0x0C,0x18,0x61,0x82,0x08,0x30,0xC2,0x08,0x61,0x86,0x30,0xC6,0x10,0x00, 73 | // '*' 74 | 0x2A,0x04,0x0A,0x0D,0x01,0x0B, 75 | 0x08,0x03,0x04,0xC1,0xF6,0x7F,0x07,0x81,0xC0,0xF8,0x3F,0x1B,0xCC,0xD8,0x30,0x0C,0x00, 76 | // '+' 77 | 0x2B,0x06,0x0A,0x0A,0x01,0x0B, 78 | 0x00,0x03,0x00,0xC0,0x30,0x7F,0xBF,0xE0,0xC0,0x30,0x0C,0x00,0x00, 79 | // ',' 80 | 0x2C,0x10,0x05,0x07,0x00,0x05, 81 | 0x33,0x9C,0x63,0x20,0x00, 82 | // '-' 83 | 0x2D,0x09,0x07,0x02,0x00,0x07, 84 | 0x7D,0xF8, 85 | // '.' 86 | 0x2E,0x10,0x04,0x04,0x01,0x05, 87 | 0x6E,0xE6, 88 | // '/' 89 | 0x2F,0x01,0x0C,0x13,0x00,0x0B, 90 | 0x00,0x00,0x06,0x00,0x60,0x0C,0x00,0xC0,0x18,0x01,0x80,0x30,0x03,0x00,0x60,0x06,0x00,0xC0,0x0C,0x01,0x80,0x18,0x03,0x00,0x30,0x06,0x00,0x40,0x00, 91 | // '0' 92 | 0x30,0x08,0x0B,0x0B,0x00,0x0B, 93 | 0x0E,0x03,0xE0,0xC6,0x30,0x66,0x0C,0xC0,0x98,0x33,0x06,0x61,0xC7,0xF0,0x7C,0x00, 94 | // '1' 95 | 0x31,0x08,0x0A,0x0D,0x00,0x09, 96 | 0x04,0x1F,0x03,0xC0,0x30,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x03,0x07,0xF9,0xFE,0x00,0x00, 97 | // '2' 98 | 0x32,0x06,0x0A,0x0E,0x00,0x0A, 99 | 0x0E,0x07,0xC3,0x30,0xCC,0x03,0x01,0x80,0x60,0x30,0x18,0x0C,0x03,0x01,0xF8,0x7F,0xC0,0x20, 100 | // '3' 101 | 0x33,0x08,0x09,0x10,0x00,0x08, 102 | 0x78,0x3F,0x81,0x81,0x81,0xC0,0xC0,0xE0,0x78,0x06,0x01,0x01,0x80,0xC0,0xE1,0xE0,0xC0,0x00, 103 | // '4' 104 | 0x34,0x03,0x0B,0x13,0x00,0x0A, 105 | 0x00,0x00,0xC0,0x18,0x03,0x00,0x60,0x08,0x03,0x00,0x60,0x0D,0x83,0x20,0x64,0x18,0x83,0x10,0xC6,0x1F,0xF3,0xFE,0x03,0x00,0x60,0x0C,0x00, 106 | // '5' 107 | 0x35,0x09,0x0A,0x0E,0x00,0x0A, 108 | 0x3F,0x8F,0xE3,0x00,0x80,0x60,0x1F,0x87,0xF0,0x06,0x01,0x80,0x60,0x19,0x86,0x7F,0x07,0x80, 109 | // '6' 110 | 0x36,0x03,0x0A,0x12,0x00,0x0A, 111 | 0x00,0x01,0x80,0xE0,0x30,0x18,0x06,0x03,0x00,0xC0,0x60,0x1B,0x87,0xF1,0x86,0x61,0x90,0x66,0x19,0x86,0x3F,0x07,0x80, 112 | // '7' 113 | 0x37,0x09,0x0A,0x0E,0x00,0x0A, 114 | 0x7F,0x9F,0xF0,0x18,0x0C,0x06,0x01,0x80,0xC0,0x30,0x18,0x06,0x01,0x80,0x40,0x10,0x0C,0x00, 115 | // '8' 116 | 0x38,0x03,0x0B,0x11,0x00,0x0B, 117 | 0x0F,0x07,0xF0,0xC3,0x30,0x66,0x0C,0x63,0x87,0xE0,0xF8,0x39,0xCE,0x19,0x81,0x30,0x34,0x06,0xC1,0x98,0x71,0xFC,0x1F,0x00, 118 | // '9' 119 | 0x39,0x07,0x0A,0x11,0x00,0x0A, 120 | 0x1E,0x0F,0xC6,0x19,0x86,0x41,0x98,0x66,0x18,0xFE,0x1D,0x80,0x40,0x30,0x0C,0x06,0x03,0x01,0xC0,0x20,0x00,0x00, 121 | // ':' 122 | 0x3A,0x0A,0x05,0x0A,0x00,0x05, 123 | 0x33,0x9C,0x60,0x00,0xCE,0x71,0x80, 124 | // ';' 125 | 0x3B,0x09,0x05,0x0D,0x00,0x06, 126 | 0x33,0xDE,0x60,0x00,0x0E,0x73,0x8C,0xC0,0x00, 127 | // '<' 128 | 0x3C,0x06,0x0A,0x0C,0x00,0x09, 129 | 0x00,0x00,0xE0,0x70,0x38,0x1C,0x1C,0x03,0x00,0x70,0x0E,0x01,0xC0,0x10,0x00, 130 | // '=' 131 | 0x3D,0x09,0x08,0x06,0x01,0x0A, 132 | 0xFF,0xFE,0x00,0x00,0x7F,0xFF, 133 | // '>' 134 | 0x3E,0x06,0x0A,0x0C,0x00,0x09, 135 | 0x00,0x18,0x03,0x80,0x70,0x0E,0x00,0xE0,0x30,0x38,0x1C,0x0E,0x02,0x00,0x00, 136 | // '?' 137 | 0x3F,0x02,0x09,0x12,0x00,0x09, 138 | 0x1E,0x1F,0x98,0x6C,0x30,0x18,0x18,0x38,0x30,0x30,0x18,0x0C,0x02,0x01,0x00,0x00,0x60,0x78,0x3C,0x0C,0x00, 139 | // '@' 140 | 0x40,0x02,0x11,0x11,0x00,0x11, 141 | 0x01,0xF0,0x03,0xFE,0x03,0x03,0x83,0x00,0xC3,0x04,0x31,0x1F,0x19,0x9F,0x0C,0xCC,0x86,0x4C,0x43,0x24,0x21,0x12,0x39,0x89,0xF7,0x84,0x71,0x83,0x00,0x00,0xC1,0x80,0x3F,0xC0,0x0F,0x80,0x00, 142 | // 'A' 143 | 0x41,0x02,0x12,0x13,0x00,0x10, 144 | 0x00,0x00,0x01,0xF0,0x00,0x7E,0x00,0x03,0x80,0x01,0xA0,0x00,0x6C,0x00,0x1B,0x00,0x0C,0x40,0x03,0x18,0x01,0x86,0x00,0x61,0x80,0x1F,0xE0,0x0F,0xFC,0x03,0x03,0x01,0x80,0xC0,0x60,0x10,0x18,0x1F,0x9F,0xC7,0xEF,0xF8,0x00, 145 | // 'B' 146 | 0x42,0x02,0x0E,0x13,0x00,0x0E, 147 | 0x7F,0x81,0xFF,0x81,0x86,0x06,0x18,0x18,0xC0,0x66,0x01,0xFC,0x07,0xFC,0x1C,0x30,0x60,0x61,0x81,0x86,0x06,0x18,0x18,0x60,0x61,0x81,0x06,0x0C,0x18,0xE0,0xFE,0x03,0xE0,0x00, 148 | // 'C' 149 | 0x43,0x02,0x0F,0x12,0x00,0x0F, 150 | 0x03,0xF0,0x1F,0xE0,0x70,0xC1,0x80,0x83,0x00,0x04,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x80,0x03,0x00,0x06,0x00,0x06,0x00,0x0E,0x01,0x0E,0x0E,0x0F,0xF8,0x07,0xE0, 151 | // 'D' 152 | 0x44,0x02,0x0F,0x13,0x00,0x0F, 153 | 0x3F,0xC0,0x7F,0xE0,0x60,0xE0,0xC0,0xC1,0x80,0xC3,0x01,0x86,0x03,0x0C,0x02,0x18,0x04,0x30,0x08,0x60,0x30,0xC0,0x61,0x80,0x83,0x03,0x06,0x0C,0x0C,0x38,0x18,0xE0,0xFF,0x81,0xF8,0x00, 154 | // 'E' 155 | 0x45,0x02,0x0D,0x13,0x00,0x0D, 156 | 0x3F,0xF1,0xFF,0x86,0x0C,0x30,0x61,0x80,0x0C,0x40,0x62,0x03,0xF0,0x1F,0x80,0xC4,0x06,0x20,0x30,0x01,0x80,0x0C,0x00,0x60,0xC3,0x06,0x7F,0xF3,0xFF,0x80,0x00, 157 | // 'F' 158 | 0x46,0x01,0x0E,0x13,0x00,0x0E, 159 | 0x00,0x01,0xFF,0xE7,0xFF,0x86,0x06,0x18,0x18,0x63,0x01,0x8C,0x03,0xF0,0x0F,0xC0,0x63,0x01,0x8C,0x06,0x30,0x18,0x00,0x60,0x01,0x80,0x06,0x00,0x3F,0x81,0xFE,0x00,0x00,0x00, 160 | // 'G' 161 | 0x47,0x01,0x11,0x14,0x00,0x11, 162 | 0x00,0x00,0x03,0xC8,0x03,0xFC,0x03,0x0E,0x03,0x03,0x01,0x00,0x01,0x80,0x00,0xC0,0x00,0x60,0x03,0x30,0x3F,0xD8,0x1F,0x0C,0x01,0x86,0x00,0xC3,0x80,0x60,0xC0,0x30,0x70,0x38,0x1C,0x3C,0x07,0xF6,0x01,0xF3,0x80,0x01,0xE0, 163 | // 'H' 164 | 0x48,0x01,0x10,0x13,0x00,0x10, 165 | 0x00,0x00,0x7C,0x0F,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x08,0x0C,0x08,0x0F,0xF8,0x0F,0xF8,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x18,0x0C,0x1A,0x7C,0x1F,0x7C,0x10, 166 | // 'I' 167 | 0x49,0x02,0x08,0x13,0x00,0x08, 168 | 0x7E,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x7E, 169 | // 'J' 170 | 0x4A,0x01,0x0C,0x14,0x00,0x0B, 171 | 0x00,0x00,0x7E,0x07,0xE0,0x18,0x01,0x80,0x18,0x01,0x80,0x18,0x00,0x80,0x08,0x00,0x80,0x18,0x61,0x84,0x18,0x41,0x8C,0x18,0xC3,0x06,0x70,0x7E,0x01,0x80, 172 | // 'K' 173 | 0x4B,0x02,0x11,0x13,0x00,0x10, 174 | 0x7E,0x7E,0x3F,0x3E,0x06,0x06,0x03,0x06,0x01,0x86,0x00,0xC6,0x00,0x66,0x00,0x37,0x00,0x1F,0x80,0x0E,0x60,0x06,0x10,0x03,0x0C,0x01,0x06,0x00,0x81,0x00,0x60,0x80,0x30,0x66,0x7E,0x1B,0x3F,0x0F,0x80,0x01,0x80, 175 | // 'L' 176 | 0x4C,0x02,0x0D,0x11,0x00,0x0D, 177 | 0x7E,0x03,0xF0,0x06,0x00,0x30,0x01,0x80,0x0C,0x00,0x60,0x03,0x00,0x18,0x00,0xC0,0x06,0x00,0x30,0x01,0x81,0x0C,0x08,0x60,0x4F,0xFF,0x7F,0xF8, 178 | // 'M' 179 | 0x4D,0x02,0x14,0x12,0x00,0x13, 180 | 0x7C,0x07,0x87,0xC0,0x7C,0x0C,0x06,0x00,0xE0,0xE0,0x0E,0x0E,0x00,0xE0,0xE0,0x1B,0x1E,0x01,0xB1,0x60,0x0B,0x16,0x00,0x9B,0x60,0x09,0xA6,0x00,0x9E,0x60,0x08,0xE6,0x00,0x8C,0x60,0x08,0xC6,0x03,0x8C,0x7E,0x78,0x47,0xE0,0x00,0x00, 181 | // 'N' 182 | 0x4E,0x01,0x12,0x13,0x00,0x12, 183 | 0x00,0x00,0x1F,0x03,0xF3,0xC0,0x7C,0x38,0x10,0x0E,0x04,0x03,0xC1,0x00,0xB0,0x40,0x26,0x10,0x09,0x84,0x02,0x31,0x00,0x8C,0x40,0x21,0x90,0x08,0x74,0x06,0x0F,0x01,0x81,0xC0,0x60,0x70,0x78,0x0C,0x3E,0x03,0x00,0x00,0x40, 184 | // 'O' 185 | 0x4F,0x02,0x11,0x12,0x00,0x11, 186 | 0x03,0xE0,0x07,0xFC,0x07,0x07,0x06,0x01,0x82,0x00,0x63,0x00,0x11,0x80,0x0C,0x80,0x06,0x40,0x03,0x20,0x01,0x98,0x00,0xCC,0x00,0x66,0x00,0x31,0x80,0x30,0xE0,0x18,0x38,0x18,0x0F,0xF8,0x01,0xF0,0x00, 187 | // 'P' 188 | 0x50,0x02,0x0C,0x12,0x00,0x0C, 189 | 0x7F,0x07,0xFC,0x10,0x61,0x03,0x10,0x31,0x03,0x10,0x31,0x06,0x10,0xE1,0xFC,0x1E,0x01,0x00,0x18,0x01,0x80,0x18,0x01,0x80,0x7E,0x07,0xF0, 190 | // 'Q' 191 | 0x51,0x02,0x13,0x15,0x00,0x11, 192 | 0x07,0xE0,0x01,0xFE,0x00,0x60,0x70,0x18,0x06,0x06,0x00,0x60,0xC0,0x0C,0x18,0x00,0xC2,0x00,0x18,0x40,0x03,0x08,0x0C,0x61,0x83,0xCC,0x30,0xCD,0x83,0x09,0xE0,0x60,0x3C,0x06,0x07,0x00,0x7F,0xE3,0x07,0xEC,0x40,0x01,0x98,0x00,0x33,0x00,0x03,0xC0,0x00,0x30, 193 | // 'R' 194 | 0x52,0x02,0x0F,0x13,0x00,0x0F, 195 | 0x7F,0x80,0xFF,0xE0,0x60,0xE0,0xC0,0x61,0x80,0xC3,0x01,0x86,0x07,0x0C,0x1C,0x1F,0xF0,0x3F,0x80,0x66,0x00,0xC4,0x01,0x8C,0x63,0x18,0xC6,0x11,0x8C,0x33,0x7E,0x7C,0xFC,0x70,0x00,0x00, 196 | // 'S' 197 | 0x53,0x01,0x0D,0x13,0x00,0x0D, 198 | 0x00,0x60,0x7B,0x07,0xF8,0x71,0xC3,0x06,0x18,0x00,0xC0,0x03,0x80,0x0E,0x00,0x1C,0x00,0x78,0x00,0xC0,0x03,0x30,0x19,0x80,0xCC,0x06,0x30,0x70,0xFF,0x03,0xE0, 199 | // 'T' 200 | 0x54,0x01,0x0F,0x12,0x00,0x0F, 201 | 0x00,0x00,0xFF,0xF9,0xFF,0xF3,0x18,0x66,0x30,0xCC,0x61,0x90,0xC3,0x01,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x80,0x0F,0xE0,0x1F,0xC0, 202 | // 'U' 203 | 0x55,0x02,0x10,0x11,0x00,0x0F, 204 | 0x7C,0x7E,0x7C,0x7E,0x30,0x08,0x30,0x08,0x30,0x08,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x10,0x08,0x18,0x18,0x18,0x18,0x0C,0x30,0x0F,0xF0,0x03,0xC0, 205 | // 'V' 206 | 0x56,0x01,0x10,0x12,0x00,0x10, 207 | 0x00,0x7E,0xFE,0x7E,0x7E,0x18,0x18,0x30,0x18,0x30,0x18,0x20,0x08,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x40,0x0C,0xC0,0x04,0xC0,0x04,0xC0,0x06,0x80,0x07,0x80,0x07,0x80,0x03,0x00,0x03,0x00, 208 | // 'W' 209 | 0x57,0x01,0x14,0x13,0x00,0x14, 210 | 0x00,0x00,0x0F,0xC4,0xFF,0xF0,0x4F,0xE3,0x06,0x10,0x30,0xE3,0x01,0x8E,0x30,0x18,0xE3,0x01,0x8E,0x30,0x19,0xA3,0x01,0x9A,0x20,0x09,0xA6,0x00,0xD2,0x60,0x0D,0x36,0x00,0xF3,0x40,0x0F,0x34,0x00,0x63,0xC0,0x06,0x1C,0x00,0x61,0x80,0x00,0x18,0x00, 211 | // 'X' 212 | 0x58,0x01,0x10,0x13,0x00,0x10, 213 | 0x00,0x00,0x7F,0x7F,0x7E,0x7E,0x0C,0x30,0x06,0x20,0x06,0x60,0x03,0xC0,0x01,0x80,0x01,0x80,0x03,0x80,0x02,0xC0,0x06,0x40,0x04,0x60,0x0C,0x60,0x18,0x30,0x18,0x30,0x7C,0x30,0xFC,0xFE,0x00,0xFF, 214 | // 'Y' 215 | 0x59,0x01,0x11,0x13,0x00,0x10, 216 | 0x00,0x00,0x7F,0x3F,0xBF,0x07,0x03,0x03,0x00,0xC1,0x00,0x31,0x80,0x18,0x80,0x06,0xC0,0x01,0xC0,0x00,0xE0,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x0C,0x00,0x06,0x00,0x03,0x00,0x07,0x80,0x03,0xF8,0x00,0x7C,0x00, 217 | // 'Z' 218 | 0x5A,0x02,0x0E,0x12,0x00,0x0D, 219 | 0x7F,0xF9,0xFF,0xE6,0x03,0x18,0x18,0x60,0xC1,0x07,0x00,0x18,0x00,0xC0,0x06,0x00,0x18,0x00,0xC0,0x06,0x00,0x18,0x30,0xC0,0xC3,0x03,0x1F,0xFE,0x7F,0xF8,0x00,0x60, 220 | // '[' 221 | 0x5B,0x01,0x08,0x14,0x01,0x08, 222 | 0x00,0x7C,0x7C,0x40,0x40,0x40,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x7E,0x7E,0x00, 223 | // '\' 224 | 0x5C,0x01,0x0A,0x13,0x00,0x0A, 225 | 0x00,0x10,0x06,0x01,0x80,0x30,0x0C,0x01,0x80,0x60,0x0C,0x03,0x00,0x60,0x18,0x06,0x00,0xC0,0x30,0x06,0x01,0x80,0x60,0x08, 226 | // ']' 227 | 0x5D,0x01,0x08,0x14,0x00,0x08, 228 | 0x00,0x7C,0x7E,0x04,0x04,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x7C,0xFC, 229 | // '^' 230 | 0x5E,0x03,0x0B,0x0B,0x00,0x0B, 231 | 0x00,0x00,0x40,0x18,0x03,0x00,0xF0,0x32,0x0C,0x63,0x86,0x60,0xC0,0x0C,0x00,0x00, 232 | // '_' 233 | 0x5F,0x15,0x11,0x02,0xFF,0x0F, 234 | 0x7F,0xFF,0x3F,0xFF,0x80, 235 | // '`' 236 | 0x60,0x00,0x06,0x07,0x00,0x06, 237 | 0x01,0x87,0x0C,0x18,0x20,0x00, 238 | // 'a' 239 | 0x61,0x06,0x0C,0x0D,0x00,0x0B, 240 | 0x0E,0x03,0xF0,0x31,0x06,0x10,0x23,0x80,0xF8,0x3D,0x87,0x10,0x61,0x0C,0x18,0x63,0xA7,0xFE,0x1C,0xC0, 241 | // 'b' 242 | 0x62,0x01,0x0C,0x14,0x00,0x0C, 243 | 0x00,0x07,0xC0,0x3C,0x01,0x80,0x18,0x01,0x80,0x18,0x01,0x98,0x1F,0xC1,0xC6,0x18,0x21,0x83,0x10,0x31,0x03,0x18,0x31,0x83,0x18,0x6F,0xC6,0xF7,0xC0,0x30, 244 | // 'c' 245 | 0x63,0x06,0x0B,0x0D,0x00,0x0B, 246 | 0x06,0x03,0xF0,0xC7,0x31,0xE4,0x1C,0x80,0x30,0x06,0x00,0x60,0x0C,0x01,0xC3,0x1F,0xC0,0xF0, 247 | // 'd' 248 | 0x64,0x01,0x0D,0x13,0x00,0x0D, 249 | 0x00,0x00,0x1E,0x00,0xF0,0x01,0x80,0x0C,0x00,0x60,0x03,0x01,0x98,0x3E,0x81,0x9C,0x18,0x60,0xC3,0x04,0x08,0x60,0x41,0x02,0x0C,0x30,0x71,0x91,0xFF,0x87,0x1C, 250 | // 'e' 251 | 0x65,0x07,0x0B,0x0C,0x00,0x0B, 252 | 0x0F,0x03,0xF0,0xC3,0x30,0x66,0x1C,0xDE,0x1E,0x03,0x00,0x60,0x06,0x18,0x7E,0x07,0x80, 253 | // 'f' 254 | 0x66,0x02,0x0A,0x12,0x00,0x08, 255 | 0x07,0x07,0xE1,0xB8,0x4E,0x10,0x04,0x07,0xE1,0xF8,0x18,0x06,0x01,0x80,0x60,0x18,0x06,0x01,0x81,0xF8,0x7E,0x00,0x00, 256 | // 'g' 257 | 0x67,0x05,0x0A,0x12,0x00,0x0A, 258 | 0x00,0x00,0x20,0x18,0x7E,0x3F,0x18,0x64,0x09,0x02,0x61,0x9F,0xC1,0xE0,0x0C,0x01,0x84,0x67,0x19,0x8C,0x7E,0x0F,0x00, 259 | // 'h' 260 | 0x68,0x02,0x0E,0x12,0x00,0x0D, 261 | 0x78,0x01,0xE0,0x01,0x80,0x06,0x00,0x19,0xC0,0x2F,0x80,0xE6,0x07,0x08,0x18,0x20,0x60,0x81,0x82,0x06,0x08,0x18,0x20,0x60,0x81,0x82,0x1F,0x9E,0x7E,0x78,0x00,0x00, 262 | // 'i' 263 | 0x69,0x02,0x08,0x11,0x00,0x08, 264 | 0x30,0x78,0x78,0x30,0x00,0x78,0x78,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x7F, 265 | // 'j' 266 | 0x6A,0x02,0x09,0x15,0xFE,0x07, 267 | 0x06,0x07,0x03,0x81,0xC0,0x00,0xF8,0x7C,0x06,0x03,0x01,0x80,0xC0,0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x99,0x8F,0xC3,0xC0, 268 | // 'k' 269 | 0x6B,0x02,0x0D,0x12,0x00,0x0D, 270 | 0x78,0x03,0xC0,0x06,0x00,0x37,0xC1,0xBC,0x0C,0xC0,0x6C,0x03,0xC0,0x1C,0x00,0xC0,0x07,0x00,0x3E,0x01,0xB8,0x08,0x61,0xC1,0xCF,0x07,0x00,0x10,0x00,0x00, 271 | // 'l' 272 | 0x6C,0x02,0x08,0x12,0x00,0x08, 273 | 0x78,0x78,0x18,0x08,0x08,0x08,0x08,0x08,0x08,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x7E,0x00, 274 | // 'm' 275 | 0x6D,0x08,0x14,0x0D,0x00,0x14, 276 | 0x40,0xC3,0x0F,0xBE,0xF8,0x1E,0x78,0xC1,0xC7,0x0C,0x18,0x20,0xC1,0x82,0x0C,0x10,0x20,0xC1,0x82,0x08,0x18,0x60,0x81,0x84,0x18,0x7E,0x71,0xE7,0xE7,0x9E,0x00,0x00,0x00, 277 | // 'n' 278 | 0x6E,0x06,0x0E,0x0E,0x00,0x0D, 279 | 0x79,0xC1,0xEF,0x81,0xE6,0x07,0x08,0x18,0x30,0x60,0xC1,0x82,0x06,0x08,0x18,0x20,0x60,0x81,0x82,0x1F,0x1E,0x7E,0x78,0x00,0x00, 280 | // 'o' 281 | 0x6F,0x08,0x0B,0x0C,0x00,0x0C, 282 | 0x0F,0x03,0xF8,0xC3,0x30,0x36,0x06,0x80,0xD0,0x1B,0x03,0x60,0x66,0x18,0xFE,0x07,0x80, 283 | // 'p' 284 | 0x70,0x07,0x0B,0x10,0x00,0x0B, 285 | 0x07,0x1F,0xF1,0xE3,0x18,0x23,0x06,0x60,0xCC,0x19,0x82,0x30,0xC6,0x18,0xFE,0x1B,0x83,0x00,0x60,0x1C,0x07,0x80, 286 | // 'q' 287 | 0x71,0x06,0x0D,0x11,0x00,0x0B, 288 | 0x0C,0x01,0xF7,0x0C,0xF8,0xC3,0x04,0x18,0x20,0x41,0x02,0x08,0x10,0x60,0x83,0x04,0x0C,0x60,0x7F,0x01,0xE8,0x00,0xC0,0x06,0xC0,0x1E,0x00,0xE0, 289 | // 'r' 290 | 0x72,0x08,0x0A,0x0D,0x00,0x09, 291 | 0x77,0x3F,0xE3,0xB8,0xCE,0x33,0x0C,0x03,0x00,0xC0,0x30,0x04,0x07,0xC1,0xF0,0x00,0x00, 292 | // 's' 293 | 0x73,0x05,0x0A,0x0E,0x00,0x0A, 294 | 0x03,0x00,0xC1,0xF0,0xFC,0x63,0x18,0x47,0x00,0xF8,0x07,0x80,0x64,0x19,0x86,0x7F,0x07,0x80, 295 | // 't' 296 | 0x74,0x02,0x09,0x13,0x00,0x09, 297 | 0x30,0x18,0x0C,0x06,0x02,0x07,0xE3,0xF8,0x40,0x20,0x10,0x08,0x04,0x02,0x11,0x18,0x84,0x62,0x33,0x0F,0x83,0x00, 298 | // 'u' 299 | 0x75,0x06,0x0E,0x0E,0x00,0x0D, 300 | 0x00,0x03,0xE7,0xC7,0x9F,0x0C,0x30,0x30,0xC0,0xC3,0x03,0x0C,0x0C,0x30,0x30,0xC0,0xC3,0x03,0x0C,0x0E,0x7C,0x1F,0xF8,0x3C,0x00, 301 | // 'v' 302 | 0x76,0x07,0x0E,0x0D,0x00,0x0D, 303 | 0x01,0xFB,0xF3,0xEF,0xC6,0x06,0x18,0x18,0x60,0x31,0x00,0xCC,0x01,0x30,0x06,0x80,0x0A,0x00,0x38,0x00,0xE0,0x01,0x00, 304 | // 'w' 305 | 0x77,0x08,0x11,0x0D,0x00,0x11, 306 | 0x04,0x1F,0xFF,0x6F,0xBE,0x31,0x83,0x1C,0xC1,0x9E,0x40,0x4D,0x20,0x34,0xB0,0x1A,0x78,0x05,0x3C,0x03,0x8E,0x01,0x86,0x00,0x43,0x00,0x00,0x00, 307 | // 'x' 308 | 0x78,0x08,0x0D,0x0D,0x00,0x0D, 309 | 0x0C,0xFB,0xE7,0xDE,0x18,0x31,0x80,0xD8,0x03,0x80,0x18,0x01,0xE0,0x19,0x81,0x8C,0x0E,0x7D,0xF3,0xE4,0x00,0x00, 310 | // 'y' 311 | 0x79,0x06,0x0F,0x11,0x00,0x0D, 312 | 0x7C,0x01,0xF8,0x00,0xC3,0xF0,0xC7,0xE1,0x82,0x01,0x0C,0x03,0x18,0x06,0x20,0x06,0xC0,0x0D,0x00,0x0E,0x00,0x18,0x00,0x30,0x06,0xC0,0x1F,0x00,0x3E,0x00,0x30,0x00, 313 | // 'z' 314 | 0x7A,0x08,0x0B,0x0B,0x00,0x0B, 315 | 0x7F,0xCF,0xF9,0x86,0x31,0x86,0x60,0x1C,0x07,0x00,0xC6,0x30,0xCF,0xF9,0xFF,0x00, 316 | // '{' 317 | 0x7B,0x02,0x09,0x12,0x00,0x08, 318 | 0x07,0x07,0x83,0x01,0x01,0x80,0xC0,0x60,0xE0,0x70,0x0C,0x06,0x03,0x01,0x80,0xC0,0x60,0x30,0x1F,0x03,0x80, 319 | // '|' 320 | 0x7C,0x02,0x03,0x12,0x01,0x05, 321 | 0x49,0x24,0x92,0x6D,0xB6,0xDB,0x6C, 322 | // '}' 323 | 0x7D,0x02,0x07,0x11,0x00,0x07, 324 | 0x30,0xF0,0x20,0x41,0x83,0x02,0x06,0x0E,0x18,0x60,0xC0,0x81,0x83,0x3C,0x78, 325 | // '~' 326 | 0x7E,0x09,0x0D,0x04,0x00,0x0D, 327 | 0x18,0x03,0xF1,0x98,0xFC,0x83,0xC0, 328 | 329 | // Terminator 330 | 0xFF 331 | }; -------------------------------------------------------------------------------- /components/m5stickc-idf/util/i2smic.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/m5stack/M5StickC-IDF/8d34a2ff711ef06ce663929511d4157ec8ae4b85/components/m5stickc-idf/util/i2smic.c -------------------------------------------------------------------------------- /components/m5stickc-idf/util/include/AXP192.h: -------------------------------------------------------------------------------- 1 | #ifndef __AXP192_H__ 2 | #define __AXP192_H__ 3 | 4 | #include 5 | #include "esp_log.h" 6 | #include "wire.h" 7 | 8 | int8_t AxpInitFromList( wire_t* wire, uint8_t* Buff ); 9 | void AxpWriteByte( wire_t* wire, uint8_t Addr , uint8_t Data ); 10 | uint8_t AxpRead8bit( wire_t* wire, uint8_t Addr ); 11 | uint16_t AxpRead12Bit( wire_t* wire, uint8_t Addr); 12 | uint16_t AxpRead13Bit( wire_t* wire, uint8_t Addr); 13 | uint16_t AxpRead16bit( wire_t* wire, uint8_t Addr ); 14 | uint32_t AxpRead24bit( wire_t* wire, uint8_t Addr ); 15 | uint32_t AxpRead32bit( wire_t* wire, uint8_t Addr ); 16 | void AxpReadBuff( wire_t* wire, uint8_t Addr , uint8_t Size , uint8_t *Buff ); 17 | 18 | float AXP192GetBatVoltage( wire_t* wire ); 19 | float AXP192GetBatCurrent( wire_t* wire ); 20 | float AXP192GetVinVoltage( wire_t* wire ); 21 | float AXP192GetVinCurrent( wire_t* wire ); 22 | float AXP192GetVBusVoltage( wire_t* wire ); 23 | float AXP192GetVBusCurrent( wire_t* wire ); 24 | float AXP192GetTempInAXP192( wire_t* wire ); 25 | float AXP192GetBatPower( wire_t* wire ); 26 | float AXP192GetBatChargeCurrent( wire_t* wire ); 27 | float AXP192GetAPSVoltage( wire_t* wire ); 28 | float AXP192GetBatCoulomInput( wire_t* wire ); 29 | float AXP192GetBatCoulomOut( wire_t* wire ); 30 | void AXP192SetCouloClear( wire_t* wire ); 31 | void AXP192SetLDO2( wire_t* wire, bool State ); 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/include/MPU6886.h: -------------------------------------------------------------------------------- 1 | /* 2 | Note: The MPU6886 is an I2C sensor and uses the Arduino Wire library. 3 | Because the sensor is not 5V tolerant, we are using a 3.3 V 8 MHz Pro Mini or 4 | a 3.3 V Teensy 3.1. We have disabled the internal pull-ups used by the Wire 5 | library in the Wire.h/twi.c utility file. We are also using the 400 kHz fast 6 | I2C mode by setting the TWI_FREQ to 400000L /twi.h utility file. 7 | */ 8 | #ifndef _MPU6886_H_ 9 | #define _MPU6886_H_ 10 | 11 | #include 12 | #include "esp_log.h" 13 | #include "wire.h" 14 | 15 | #define MPU6886_ADDRESS 0x68 16 | #define MPU6886_WHOAMI 0x75 17 | #define MPU6886_ACCEL_INTEL_CTRL 0x69 18 | #define MPU6886_SMPLRT_DIV 0x19 19 | #define MPU6886_INT_PIN_CFG 0x37 20 | #define MPU6886_INT_ENABLE 0x38 21 | #define MPU6886_ACCEL_XOUT_H 0x3B 22 | #define MPU6886_ACCEL_XOUT_L 0x3C 23 | #define MPU6886_ACCEL_YOUT_H 0x3D 24 | #define MPU6886_ACCEL_YOUT_L 0x3E 25 | #define MPU6886_ACCEL_ZOUT_H 0x3F 26 | #define MPU6886_ACCEL_ZOUT_L 0x40 27 | 28 | #define MPU6886_TEMP_OUT_H 0x41 29 | #define MPU6886_TEMP_OUT_L 0x42 30 | 31 | #define MPU6886_GYRO_XOUT_H 0x43 32 | #define MPU6886_GYRO_XOUT_L 0x44 33 | #define MPU6886_GYRO_YOUT_H 0x45 34 | #define MPU6886_GYRO_YOUT_L 0x46 35 | #define MPU6886_GYRO_ZOUT_H 0x47 36 | #define MPU6886_GYRO_ZOUT_L 0x48 37 | 38 | #define MPU6886_USER_CTRL 0x6A 39 | #define MPU6886_PWR_MGMT_1 0x6B 40 | #define MPU6886_PWR_MGMT_2 0x6C 41 | #define MPU6886_CONFIG 0x1A 42 | #define MPU6886_GYRO_CONFIG 0x1B 43 | #define MPU6886_ACCEL_CONFIG 0x1C 44 | #define MPU6886_ACCEL_CONFIG2 0x1D 45 | #define MPU6886_FIFO_EN 0x23 46 | 47 | #define MPU6886_FIFO_ENABLE 0x23 48 | #define MPU6886_FIFO_CONUTH 0x72 49 | #define MPU6886_FIFO_CONUTL 0x73 50 | #define MPU6886_FIFO_R_W 0x74 51 | 52 | //#define G (9.8) 53 | #define RtA 57.324841 54 | #define AtR 0.0174533 55 | #define Gyro_Gr 0.0010653 56 | 57 | enum Ascale { 58 | AFS_2G = 0, 59 | AFS_4G, 60 | AFS_8G, 61 | AFS_16G 62 | }; 63 | 64 | enum Gscale { 65 | GFS_250DPS = 0, 66 | GFS_500DPS, 67 | GFS_1000DPS, 68 | GFS_2000DPS 69 | }; 70 | 71 | extern enum Gscale Gyscale; 72 | extern enum Ascale Acscale; 73 | 74 | int MPU6886Init(void); 75 | void MPU6886getAccelAdc(int16_t* ax, int16_t* ay, int16_t* az); 76 | void MPU6886getGyroAdc(int16_t* gx, int16_t* gy, int16_t* gz); 77 | void MPU6886getTempAdc(int16_t *t); 78 | 79 | void MPU6886getAccelData(float* ax, float* ay, float* az); 80 | void MPU6886getGyroData(float* gx, float* gy, float* gz); 81 | void MPU6886getTempData(float *t); 82 | 83 | void MPU6886SetGyroFsr(enum Gscale scale); 84 | void MPU6886SetAccelFsr(enum Ascale scale); 85 | 86 | void MPU6886getAhrsData(float *pitch,float *roll,float *yaw); 87 | void MPU6886setFIFOEnable( bool ); 88 | uint8_t MPU6886ReadFIFO(); 89 | uint16_t MPU6886ReadFIFOCount(); 90 | void MPU6886ReadFIFOBuff( uint8_t *DataBuff ,uint16_t Length ); 91 | 92 | float aRes, gRes; 93 | 94 | void MPU6886I2C_Read_NBytes(uint8_t driver_Addr, uint8_t start_Addr, uint8_t number_Bytes, uint8_t *read_Buffer); 95 | void MPU6886I2C_Write_NBytes(uint8_t driver_Addr, uint8_t start_Addr, uint8_t number_Bytes, uint8_t *write_Buffer); 96 | void MPU6886getGres(); 97 | void MPU6886getAres(); 98 | 99 | #endif -------------------------------------------------------------------------------- /components/m5stickc-idf/util/include/axp192_reg.h: -------------------------------------------------------------------------------- 1 | /** 2 | * AXP192_reg.h - Register aliases of AXP192 3 | * 4 | * Human-readable names (as readable as they can be) for AXP192 registers. 5 | * 6 | * (C) 2019 - Pablo Bacho 7 | * This code is licensed under the MIT License. 8 | */ 9 | 10 | #ifndef _AXP192_REG_H_ 11 | #define _AXP192_REG_H_ 12 | 13 | // Group 1: Basic power control 14 | #define INPUT_POWER_STATUS_REG 0x00 15 | #define MODE_POWER_CHARGE_STATUS_REG 0x01 16 | #define OTG_VBUS_STATUS_REG 0x04 17 | #define DATA_BUFFER_0_REG 0x06 18 | #define DATA_BUFFER_1_REG 0x07 19 | #define DATA_BUFFER_2_REG 0x08 20 | #define DATA_BUFFER_3_REG 0x09 21 | #define DATA_BUFFER_4_REG 0x0A 22 | #define DATA_BUFFER_5_REG 0x0B 23 | #define EXTEN_DCDC2_SWITCH_CONTROL_REG 0x10 24 | #define DCDC1_DCDC3_LDO2_LDO3_SWITCH_CONTROL_REG 0x12 25 | #define DCDC2_VOLTAGE_SETTING_REG 0x23 26 | #define DCDC2_VOLTAGE_SLOPE_SETTING_REG 0x25 27 | #define DCDC1_VOLTAGE_SETTING_REG 0x26 28 | #define DCDC3_VOLTAGE_SETTING_REG 0x27 29 | #define LDO2_LDO3_VOLTAGE_SETTING_REG 0x28 30 | #define VBUS_IPSOUT_PATH_SETTING_REG 0x30 31 | #define VOFF_SHUTDOWN_VOLTAGE_SETTING_REG 0x31 32 | #define OFF_BATTERY_DETECTION_CHGLED_CONTROL_REG 0x32 33 | #define CHARGE_CONTROL_1_REG 0x33 34 | #define CHARGE_CONTROL_2_REG 0x34 35 | #define BACKUP_BATTERY_CHARGING_CONTROL_REG 0x35 36 | #define PEK_SETTING_REG 0x36 37 | #define DCDC_CONVERTER_OPERATING_FREQUENCY_REG 0x37 38 | #define LOW_BATTERY_CHARGE_WARNING_REG 0x38 39 | #define BATTERY_CHARGING_HIGH_TEMPERATURE_ALARM_REG 0x39 40 | #define APS_LOW_LEVEL_1_REG 0x3A 41 | #define APS_LOW_LEVEL_2_REG 0x3B 42 | #define LOW_BATTERY_DISCHARGE_ALARM_REG 0x3C 43 | #define BATTERY_DISCHARGE_HIGH_TEMPERATURE_ALARM_REG 0x3D 44 | #define DCDC_OPERATION_MODE_REG 0x80 45 | #define ADC_ENABLE_1_REG 0x82 46 | #define ADC_ENABLE_2_REG 0x83 47 | #define ADC_SAMPLE_RATE_TS_PIN_CONTROL_REG 0x84 48 | #define GPIO_INPUT_RANGE_REG 0x85 49 | #define GPIO1_ADC_IRQ_RISING_THRESHOLD_REG 0x86 50 | #define GPIO1_ADC_IRQ_FALLING_THRESHOLD_REG 0x87 51 | #define TIMER_CONTROL_REG 0x8A 52 | #define VBUS_MONITORING_REG 0x8B 53 | #define OVERTEMPERATURE_SHUTDOWN_CONTROL_REG 0x8F 54 | 55 | // Group 2: GPIO Control 56 | #define GPIO0_CONTROL_REG 0x90 57 | #define GPIO0_LDO_MODE_OUTPUT_VOLTAGE_REG 0x91 // ??? 58 | #define GPIO1_CONTROL_REG 0x92 59 | #define GPIO2_CONTROL_REG 0x93 60 | #define GPIO_2_0_SIGNAL_STATUS_REG 0x94 61 | #define GPIO_4_3_FUNCTION_CONTROL_REG 0x95 62 | #define GPIO_4_3_SIGNAL_STATUS_REG 0x96 63 | #define GPIO_2_0_PULLDOWN_CONTROL_REG 0x97 64 | #define PWM1_FREQUENCY_REG 0x98 65 | #define PWM1_DUTY_CYCLE_1_REG 0x99 66 | #define PWM1_DUTY_CYCLE_2_REG 0x9A 67 | #define PWM2_FREQUENCY_REG 0x9B 68 | #define PWM2_DUTY_CYCLE_1_REG 0x9C 69 | #define PWM2_DUTY_CYCLE_2_REG 0x9D 70 | #define N_RSTO_GPIO5_CONTROL_REG 0x9E 71 | 72 | // Group 3: Interrupt control 73 | #define IRQ_ENABLE_CONTROL_1_REG 0x40 74 | #define IRQ_ENABLE_CONTROL_2_REG 0x41 75 | #define IRQ_ENABLE_CONTROL_3_REG 0x42 76 | #define IRQ_ENABLE_CONTROL_4_REG 0x43 77 | #define IRQ_ENABLE_CONTROL_5_REG 0x4A 78 | #define IRQ_STATUS_1_REG 0x44 79 | #define IRQ_STATUS_2_REG 0x45 80 | #define IRQ_STATUS_3_REG 0x46 81 | #define IRQ_STATUS_4_REG 0x47 82 | #define IRQ_STATUS_5_REG 0x4D 83 | 84 | // Group 4: ADC 85 | #define ACIN_VOLTAGE_ADC_DATA_HIGH_REG 0x56 86 | #define ACIN_VOLTAGE_ADC_DATA_LOW_REG 0x57 // ??? 87 | #define ACIN_CURRENT_ADC_DATA_HIGH_REG 0x58 88 | #define ACIN_CURRENT_ADC_DATA_LOW_REG 0x59 89 | #define VBUS_VOLTAGE_ADC_DATA_HIGH_REG 0x5A 90 | #define VBUS_VOLTAGE_ADC_DATA_LOW_REG 0x5B 91 | #define VBUS_CURRENT_ADC_DATA_HIGH_REG 0x5C 92 | #define VBUS_CURRENT_ADC_DATA_LOW_REG 0x5D 93 | #define INTERNAL_TEMPERATURE_ADC_DATA_HIGH_REG 0x5E 94 | #define INTERNAL_TEMPERATURE_ADC_DATA_LOW_REG 0x5F 95 | #define TS_ADC_DATA_HIGH = 0x62 96 | #define TS_ADC_DATA_LOW = 0x63 97 | #define GPIO0_VOLTAGE_ADC_DATA_HIGH = 0x64 98 | #define GPIO0_VOLTAGE_ADC_DATA_LOW = 0x65 99 | #define GPIO1_VOLTAGE_ADC_DATA_HIGH = 0x66 100 | #define GPIO1_VOLTAGE_ADC_DATA_LOW = 0x67 101 | #define GPIO2_VOLTAGE_ADC_DATA_HIGH = 0x68 102 | #define GPIO2_VOLTAGE_ADC_DATA_LOW = 0x69 103 | #define GPIO3_VOLTAGE_ADC_DATA_HIGH = 0x6A 104 | #define GPIO3_VOLTAGE_ADC_DATA_LOW = 0x6B 105 | // Todo: 0x70 to 0x7F 106 | 107 | #define BATTERY_CHARGING_COULOMB_COUNTER_DATA_31_24_REG 0xB0 108 | #define BATTERY_CHARGING_COULOMB_COUNTER_DATA_23_16_REG 0xB1 109 | #define BATTERY_CHARGING_COULOMB_COUNTER_DATA_15_8_REG 0xB2 110 | #define BATTERY_CHARGING_COULOMB_COUNTER_DATA_7_0_REG 0xB3 111 | #define BATTERY_DISCHARGE_COULOMB_COUNTER_DATA_31_24_REG 0xB4 112 | #define BATTERY_DISCHARGE_COULOMB_COUNTER_DATA_23_16_REG 0xB5 113 | #define BATTERY_DISCHARGE_COULOMB_COUNTER_DATA_15_8_REG 0xB6 114 | #define BATTERY_DISCHARGE_COULOMB_COUNTER_DATA_7_0_REG 0xB7 115 | #define COULOMB_COUNTER_CONTROL_REG 0xB8 116 | 117 | #endif // _AXP192_REG_H_ -------------------------------------------------------------------------------- /components/m5stickc-idf/util/include/spi_master_lobo.h: -------------------------------------------------------------------------------- 1 | // Copyright 2010-2016 Espressif Systems (Shanghai) PTE LTD 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | 16 | #ifndef _DRIVER_SPI_MASTER_LOBO_H_ 17 | #define _DRIVER_SPI_MASTER_LOBO_H_ 18 | 19 | #include "esp_err.h" 20 | #include "freertos/FreeRTOS.h" 21 | #include "freertos/semphr.h" 22 | #include "soc/spi_struct.h" 23 | 24 | #include "esp_intr.h" 25 | #include "esp_intr_alloc.h" 26 | #include "rom/lldesc.h" 27 | 28 | 29 | #ifdef __cplusplus 30 | extern "C" { 31 | #endif 32 | 33 | 34 | //Maximum amount of bytes that can be put in one DMA descriptor 35 | #define SPI_MAX_DMA_LEN (4096-4) 36 | 37 | /** 38 | * @brief Enum with the three SPI peripherals that are software-accessible in it 39 | */ 40 | typedef enum { 41 | TFT_SPI_HOST=0, ///< SPI1, SPI; Cannot be used in this driver! 42 | TFT_HSPI_HOST=1, ///< SPI2, HSPI 43 | TFT_VSPI_HOST=2 ///< SPI3, VSPI 44 | } spi_lobo_host_device_t; 45 | 46 | 47 | /** 48 | * @brief This is a configuration structure for a SPI bus. 49 | * 50 | * You can use this structure to specify the GPIO pins of the bus. Normally, the driver will use the 51 | * GPIO matrix to route the signals. An exception is made when all signals either can be routed through 52 | * the IO_MUX or are -1. In that case, the IO_MUX is used, allowing for >40MHz speeds. 53 | */ 54 | typedef struct { 55 | int mosi_io_num; ///< GPIO pin for Master Out Slave In (=spi_d) signal, or -1 if not used. 56 | int miso_io_num; ///< GPIO pin for Master In Slave Out (=spi_q) signal, or -1 if not used. 57 | int sclk_io_num; ///< GPIO pin for Spi CLocK signal, or -1 if not used. 58 | int quadwp_io_num; ///< GPIO pin for WP (Write Protect) signal which is used as D2 in 4-bit communication modes, or -1 if not used. 59 | int quadhd_io_num; ///< GPIO pin for HD (HolD) signal which is used as D3 in 4-bit communication modes, or -1 if not used. 60 | int max_transfer_sz; ///< Maximum transfer size, in bytes. Defaults to 4094 if 0. 61 | } spi_lobo_bus_config_t; 62 | 63 | 64 | #define LB_SPI_DEVICE_TXBIT_LSBFIRST (1<<0) ///< Transmit command/address/data LSB first instead of the default MSB first 65 | #define LB_SPI_DEVICE_RXBIT_LSBFIRST (1<<1) ///< Receive data LSB first instead of the default MSB first 66 | #define LB_SPI_DEVICE_BIT_LSBFIRST (SPI_TXBIT_LSBFIRST|SPI_RXBIT_LSBFIRST); ///< Transmit and receive LSB first 67 | #define LB_SPI_DEVICE_3WIRE (1<<2) ///< Use spiq for both sending and receiving data 68 | #define LB_SPI_DEVICE_POSITIVE_CS (1<<3) ///< Make CS positive during a transaction instead of negative 69 | #define LB_SPI_DEVICE_HALFDUPLEX (1<<4) ///< Transmit data before receiving it, instead of simultaneously 70 | #define LB_SPI_DEVICE_CLK_AS_CS (1<<5) ///< Output clock on CS line if CS is active 71 | 72 | #define SPI_ERR_OTHER_CONFIG 7001 73 | 74 | typedef struct spi_lobo_transaction_t spi_lobo_transaction_t; 75 | typedef void(*spi_lobo_transaction_cb_t)(spi_lobo_transaction_t *trans); 76 | 77 | /** 78 | * @brief This is a configuration for a SPI slave device that is connected to one of the SPI buses. 79 | */ 80 | typedef struct { 81 | uint8_t command_bits; ///< Amount of bits in command phase (0-16) 82 | uint8_t address_bits; ///< Amount of bits in address phase (0-64) 83 | uint8_t dummy_bits; ///< Amount of dummy bits to insert between address and data phase 84 | uint8_t mode; ///< SPI mode (0-3) 85 | uint8_t duty_cycle_pos; ///< Duty cycle of positive clock, in 1/256th increments (128 = 50%/50% duty). Setting this to 0 (=not setting it) is equivalent to setting this to 128. 86 | uint8_t cs_ena_pretrans; ///< Amount of SPI bit-cycles the cs should be activated before the transmission (0-16). This only works on half-duplex transactions. 87 | uint8_t cs_ena_posttrans; ///< Amount of SPI bit-cycles the cs should stay active after the transmission (0-16) 88 | int clock_speed_hz; ///< Clock speed, in Hz 89 | int spics_io_num; ///< CS GPIO pin for this device, handled by hardware; set to -1 if not used 90 | int spics_ext_io_num; ///< CS GPIO pin for this device, handled by software (spi_lobo_device_select/spi_lobo_device_deselect); only used if spics_io_num=-1 91 | uint32_t flags; ///< Bitwise OR of LB_SPI_DEVICE_* flags 92 | spi_lobo_transaction_cb_t pre_cb; ///< Callback to be called before a transmission is started. This callback from 'spi_lobo_transfer_data' function. 93 | spi_lobo_transaction_cb_t post_cb; ///< Callback to be called after a transmission has completed. This callback from 'spi_lobo_transfer_data' function. 94 | uint8_t selected; ///< **INTERNAL** 1 if the device's CS pin is active 95 | } spi_lobo_device_interface_config_t; 96 | 97 | 98 | #define LB_SPI_TRANS_MODE_DIO (1<<0) ///< Transmit/receive data in 2-bit mode 99 | #define LB_SPI_TRANS_MODE_QIO (1<<1) ///< Transmit/receive data in 4-bit mode 100 | #define LB_SPI_TRANS_MODE_DIOQIO_ADDR (1<<2) ///< Also transmit address in mode selected by SPI_MODE_DIO/SPI_MODE_QIO 101 | #define LB_SPI_TRANS_USE_RXDATA (1<<3) ///< Receive into rx_data member of spi_lobo_transaction_t instead into memory at rx_buffer. 102 | #define LB_SPI_TRANS_USE_TXDATA (1<<4) ///< Transmit tx_data member of spi_lobo_transaction_t instead of data at tx_buffer. Do not set tx_buffer when using this. 103 | 104 | /** 105 | * This structure describes one SPI transmission 106 | */ 107 | struct spi_lobo_transaction_t { 108 | uint32_t flags; ///< Bitwise OR of LB_SPI_TRANS_* flags 109 | uint16_t command; ///< Command data. Specific length was given when device was added to the bus. 110 | uint64_t address; ///< Address. Specific length was given when device was added to the bus. 111 | size_t length; ///< Total data length to be transmitted to the device, in bits; if 0, no data is transmitted 112 | size_t rxlength; ///< Total data length to be received from the device, in bits; if 0, no data is received 113 | void *user; ///< User-defined variable. Can be used to store eg transaction ID or data to be used by pre_cb and/or post_cb callbacks. 114 | union { 115 | const void *tx_buffer; ///< Pointer to transmit buffer, or NULL for no MOSI phase 116 | uint8_t tx_data[4]; ///< If SPI_USE_TXDATA is set, data set here is sent directly from this variable. 117 | }; 118 | union { 119 | void *rx_buffer; ///< Pointer to receive buffer, or NULL for no MISO phase 120 | uint8_t rx_data[4]; ///< If SPI_USE_RXDATA is set, data is received directly to this variable 121 | }; 122 | }; 123 | 124 | #define NO_CS 3 // Number of CS pins per SPI host 125 | #define NO_DEV 6 // Number of spi devices per SPI host; more than 3 devices can be attached to the same bus if using software CS's 126 | #define SPI_SEMAPHORE_WAIT 2000 // Time in ms to wait for SPI mutex 127 | 128 | typedef struct spi_lobo_device_t spi_lobo_device_t; 129 | 130 | typedef struct { 131 | spi_lobo_device_t *device[NO_DEV]; 132 | intr_handle_t intr; 133 | spi_dev_t *hw; 134 | //spi_lobo_transaction_t *cur_trans; 135 | int cur_device; 136 | lldesc_t *dmadesc_tx; 137 | lldesc_t *dmadesc_rx; 138 | bool no_gpio_matrix; 139 | int dma_chan; 140 | int max_transfer_sz; 141 | QueueHandle_t spi_lobo_bus_mutex; 142 | spi_lobo_bus_config_t cur_bus_config; 143 | } spi_lobo_host_t; 144 | 145 | struct spi_lobo_device_t { 146 | spi_lobo_device_interface_config_t cfg; 147 | spi_lobo_host_t *host; 148 | spi_lobo_bus_config_t bus_config; 149 | spi_lobo_host_device_t host_dev; 150 | }; 151 | 152 | typedef spi_lobo_device_t* spi_lobo_device_handle_t; ///< Handle for a device on a SPI bus 153 | typedef spi_lobo_host_t* spi_lobo_host_handle_t; 154 | typedef spi_lobo_device_interface_config_t* spi_lobo_device_interface_config_handle_t; 155 | 156 | 157 | /** 158 | * @brief Add a device. This allocates a CS line for the device, allocates memory for the device structure and hooks 159 | * up the CS pin to whatever is specified. 160 | * 161 | * This initializes the internal structures for a device, plus allocates a CS pin on the indicated SPI master 162 | * peripheral and routes it to the indicated GPIO. All SPI master devices have three hw CS pins and can thus control 163 | * up to three devices. Software handled CS pin can also be used for additional devices on the same SPI bus. 164 | * 165 | * ### If selected SPI host device bus is not yet initialized, it is initialized first with 'bus_config' function ### 166 | * 167 | * @note While in general, speeds up to 80MHz on the dedicated SPI pins and 40MHz on GPIO-matrix-routed pins are 168 | * supported, full-duplex transfers routed over the GPIO matrix only support speeds up to 26MHz. 169 | * 170 | * @param host SPI peripheral to allocate device on (HSPI or VSPI) 171 | * @param dev_config SPI interface protocol config for the device 172 | * @param bus_config Pointer to a spi_lobo_bus_config_t struct specifying how the host device bus should be initialized 173 | * @param handle Pointer to variable to hold the device handle 174 | * @return 175 | * - ESP_ERR_INVALID_ARG if parameter is invalid 176 | * - ESP_ERR_NOT_FOUND if host doesn't have any free CS slots 177 | * - ESP_ERR_NO_MEM if out of memory 178 | * - ESP_OK on success 179 | */ 180 | esp_err_t spi_lobo_bus_add_device(spi_lobo_host_device_t host, spi_lobo_bus_config_t *bus_config, spi_lobo_device_interface_config_t *dev_config, spi_lobo_device_handle_t *handle); 181 | 182 | /** 183 | * @brief Remove a device from the SPI bus. If after removal no other device is attached to the spi bus device, it is freed. 184 | * 185 | * @param handle Device handle to free 186 | * @return 187 | * - ESP_ERR_INVALID_ARG if parameter is invalid 188 | * - ESP_ERR_INVALID_STATE if device already is freed 189 | * - ESP_OK on success 190 | */ 191 | esp_err_t spi_lobo_bus_remove_device(spi_lobo_device_handle_t handle); 192 | 193 | 194 | /** 195 | * @brief Return the actuall SPI bus speed for the spi device in Hz 196 | * 197 | * Some frequencies cannot be set, for example 30000000 will actually set SPI clock to 26666666 Hz 198 | * 199 | * @param handle Device handle obtained using spi_lobo_bus_add_device 200 | * 201 | * @return 202 | * - actuall SPI clock 203 | */ 204 | uint32_t spi_lobo_get_speed(spi_lobo_device_handle_t handle); 205 | 206 | /** 207 | * @brief Set the new clock speed for the device, return the actuall SPI bus speed set, in Hz 208 | * This function can be used after the device is initialized 209 | * 210 | * Some frequencies cannot be set, for example 30000000 will actually set SPI clock to 26666666 Hz 211 | * 212 | * @param handle Device handle obtained using spi_lobo_bus_add_device 213 | * @param speed New device spi clock to be set in Hz 214 | * 215 | * @return 216 | * - actuall SPI clock 217 | * - 0 if speed cannot be set 218 | */ 219 | uint32_t spi_lobo_set_speed(spi_lobo_device_handle_t handle, uint32_t speed); 220 | 221 | /** 222 | * @brief Select spi device for transmission 223 | * 224 | * It configures spi bus with selected spi device parameters if previously selected device was different than the current 225 | * If device's spics_io_num=-1 and spics_ext_io_num > 0 'spics_ext_io_num' pin is set to active state (low) 226 | * 227 | * spi bus device's semaphore is taken before selecting the device 228 | * 229 | * @param handle Device handle obtained using spi_lobo_bus_add_device 230 | * @param force configure spi bus even if the previous device was the same 231 | * 232 | * @return 233 | * - ESP_ERR_INVALID_ARG if parameter is invalid 234 | * - ESP_OK on success 235 | */ 236 | esp_err_t spi_lobo_device_select(spi_lobo_device_handle_t handle, int force); 237 | 238 | /** 239 | * @brief De-select spi device 240 | * 241 | * If device's spics_io_num=-1 and spics_ext_io_num > 0 'spics_ext_io_num' pin is set to inactive state (high) 242 | * 243 | * spi bus device's semaphore is given after selecting the device 244 | * 245 | * @param handle Device handle obtained using spi_lobo_bus_add_device 246 | * 247 | * @return 248 | * - ESP_ERR_INVALID_ARG if parameter is invalid 249 | * - ESP_OK on success 250 | */ 251 | esp_err_t spi_lobo_device_deselect(spi_lobo_device_handle_t handle); 252 | 253 | 254 | /** 255 | * @brief Check if spi bus uses native spi pins 256 | * 257 | * @param handle Device handle obtained using spi_lobo_bus_add_device 258 | * 259 | * @return 260 | * - true if native spi pins are used 261 | * - false if spi pins are routed through gpio matrix 262 | */ 263 | bool spi_lobo_uses_native_pins(spi_lobo_device_handle_t handle); 264 | 265 | /** 266 | * @brief Get spi bus native spi pins 267 | * 268 | * @param handle Device handle obtained using spi_lobo_bus_add_device 269 | * 270 | * @return 271 | * places spi bus native pins in provided pointers 272 | */ 273 | void spi_lobo_get_native_pins(int host, int *sdi, int *sdo, int *sck); 274 | 275 | /** 276 | * @brief Transimit and receive data to/from spi device based on transaction data 277 | * 278 | * TRANSMIT 8-bit data to spi device from 'trans->tx_buffer' or 'trans->tx_data' (trans->lenght/8 bytes) 279 | * and RECEIVE data to 'trans->rx_buffer' or 'trans->rx_data' (trans->rx_length/8 bytes) 280 | * Lengths must be 8-bit multiples! 281 | * If trans->rx_buffer is NULL or trans->rx_length is 0, only transmits data 282 | * If trans->tx_buffer is NULL or trans->length is 0, only receives data 283 | * If the device is in duplex mode (LB_SPI_DEVICE_HALFDUPLEX flag NOT set), data are transmitted and received simultaneously. 284 | * If the device is in half duplex mode (LB_SPI_DEVICE_HALFDUPLEX flag IS set), data are received after transmission 285 | * 'address', 'command' and 'dummy bits' are transmitted before data phase IF set in device's configuration 286 | * and IF 'trans->length' and 'trans->rx_length' are NOT both 0 287 | * If device was not previously selected, it will be selected before transmission and deselected after transmission. 288 | * 289 | * @param handle Device handle obtained using spi_lobo_bus_add_device 290 | * 291 | * @param trans Pointer to variable containing the description of the transaction that is executed 292 | * 293 | * @return 294 | * - ESP_ERR_INVALID_ARG if parameter is invalid 295 | * - ESP error code if device cannot be selected 296 | * - ESP_OK on success 297 | * 298 | */ 299 | esp_err_t spi_lobo_transfer_data(spi_lobo_device_handle_t handle, spi_lobo_transaction_t *trans); 300 | 301 | 302 | /* 303 | * SPI transactions uses the semaphore (taken in select function) to protect the transfer 304 | */ 305 | esp_err_t spi_lobo_device_TakeSemaphore(spi_lobo_device_handle_t handle); 306 | void spi_lobo_device_GiveSemaphore(spi_lobo_device_handle_t handle); 307 | 308 | 309 | /** 310 | * @brief Setup a DMA link chain 311 | * 312 | * This routine will set up a chain of linked DMA descriptors in the array pointed to by 313 | * ``dmadesc``. Enough DMA descriptors will be used to fit the buffer of ``len`` bytes in, and the 314 | * descriptors will point to the corresponding positions in ``buffer`` and linked together. The 315 | * end result is that feeding ``dmadesc[0]`` into DMA hardware results in the entirety ``len`` bytes 316 | * of ``data`` being read or written. 317 | * 318 | * @param dmadesc Pointer to array of DMA descriptors big enough to be able to convey ``len`` bytes 319 | * @param len Length of buffer 320 | * @param data Data buffer to use for DMA transfer 321 | * @param isrx True if data is to be written into ``data``, false if it's to be read from ``data``. 322 | */ 323 | void spi_lobo_setup_dma_desc_links(lldesc_t *dmadesc, int len, const uint8_t *data, bool isrx); 324 | 325 | /** 326 | * @brief Check if a DMA reset is requested but has not completed yet 327 | * 328 | * @return True when a DMA reset is requested but hasn't completed yet. False otherwise. 329 | */ 330 | bool spi_lobo_dmaworkaround_reset_in_progress(); 331 | 332 | 333 | /** 334 | * @brief Mark a DMA channel as idle. 335 | * 336 | * A call to this function tells the workaround logic that this channel will 337 | * not be affected by a global SPI DMA reset. 338 | */ 339 | void spi_lobo_dmaworkaround_idle(int dmachan); 340 | 341 | /** 342 | * @brief Mark a DMA channel as active. 343 | * 344 | * A call to this function tells the workaround logic that this channel will 345 | * be affected by a global SPI DMA reset, and a reset like that should not be attempted. 346 | */ 347 | void spi_lobo_dmaworkaround_transfer_active(int dmachan); 348 | 349 | 350 | #ifdef __cplusplus 351 | } 352 | #endif 353 | 354 | #endif 355 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/include/stmpe610.h: -------------------------------------------------------------------------------- 1 | /* 2 | STMPE610 Touch controller constants 3 | */ 4 | 5 | #ifndef _STMPE610_H 6 | #define _STMPE610_H 7 | 8 | #include 9 | 10 | #define STMPE610_SPI_MODE 1 11 | 12 | // Identification registers 13 | #define STMPE610_REG_CHP_ID 0x00 // 16-bit 14 | #define STMPE610_REG_ID_VER 0x02 15 | 16 | // System registers 17 | #define STMPE610_REG_SYS_CTRL1 0x03 18 | #define STMPE610_REG_SYS_CTRL2 0x04 19 | #define STMPE610_REG_SPI_CFG 0x08 20 | 21 | // Interrupt control registers 22 | #define STMPE610_REG_INT_CTRL 0x09 23 | #define STMPE610_REG_INT_EN 0x0A 24 | #define STMPE610_REG_INT_STA 0x0B 25 | #define STMPE610_REG_GPIO_INT_EN 0x0C 26 | #define STMPE610_REG_GPIO_INT_STA 0x0D 27 | #define STMPE610_REG_ADC_INT_EN 0x0E 28 | #define STMPE610_REG_ADC_INT_STA 0x0F 29 | 30 | // GPIO registers 31 | #define STMPE610_REG_GPIO_SET_PIN 0x10 32 | #define STMPE610_REG_GPIO_CLR_PIN 0x11 33 | #define STMPE610_REG_GPIO_MP_STA 0x12 34 | #define STMPE610_REG_GPIO_DIR 0x13 35 | #define STMPE610_REG_GPIO_ED 0x14 36 | #define STMPE610_REG_GPIO_RE 0x15 37 | #define STMPE610_REG_GPIO_FE 0x16 38 | #define STMPE610_REG_GPIO_AF 0x17 39 | 40 | // ADC registers 41 | #define STMPE610_REG_ADC_CTRL1 0x20 42 | #define STMPE610_REG_ADC_CTRL2 0x21 43 | #define STMPE610_REG_ADC_CAPT 0x22 44 | #define STMPE610_REG_ADC_DATA_CH0 0x30 // 16-bit 45 | #define STMPE610_REG_ADC_DATA_CH1 0x32 // 16-bit 46 | #define STMPE610_REG_ADC_DATA_CH4 0x38 // 16-bit 47 | #define STMPE610_REG_ADC_DATA_CH5 0x3A // 16-bit 48 | #define STMPE610_REG_ADC_DATA_CH6 0x3C // 16-bit 49 | #define STMPE610_REG_ADC_DATA_CH7 0x3E // 16-bit 50 | 51 | // Touchscreen registers 52 | #define STMPE610_REG_TSC_CTRL 0x40 53 | #define STMPE610_REG_TSC_CFG 0x41 54 | #define STMPE610_REG_WDW_TR_X 0x42 // 16-bit 55 | #define STMPE610_REG_WDW_TR_Y 0x44 // 16-bit 56 | #define STMPE610_REG_WDW_BL_X 0x46 // 16-bit 57 | #define STMPE610_REG_WDW_BL_Y 0x48 // 16-bit 58 | #define STMPE610_REG_FIFO_TH 0x4A 59 | #define STMPE610_REG_FIFO_STA 0x4B 60 | #define STMPE610_REG_FIFO_SIZE 0x4C 61 | #define STMPE610_REG_TSC_DATA_X 0x4D // 16-bit 62 | #define STMPE610_REG_TSC_DATA_Y 0x4F // 16-bit 63 | #define STMPE610_REG_TSC_DATA_Z 0x51 64 | #define STMPE610_REG_TSC_DATA_XYZ 0x52 // 32-bit 65 | #define STMPE610_REG_TSC_FRACT_XYZ 0x56 66 | #define STMPE610_REG_TSC_DATA 0x57 67 | #define STMPE610_REG_TSC_I_DRIVE 0x58 68 | #define STMPE610_REG_TSC_SHIELD 0x59 69 | 70 | 71 | #endif /* _STMPE610_H */ 72 | -------------------------------------------------------------------------------- /components/m5stickc-idf/util/include/wire.h: -------------------------------------------------------------------------------- 1 | #ifndef __WIRE_H__ 2 | #define __WIRE_H__ 3 | 4 | #include 5 | #include "esp_log.h" 6 | #include "esp_log.h" 7 | #include "driver/i2c.h" 8 | 9 | #define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave*/ 10 | #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ 11 | #define ACK_VAL 0x0 /*!< I2C ack value */ 12 | #define NACK_VAL 0x1 /*!< I2C nack value */ 13 | 14 | typedef struct wire_s{ 15 | uint8_t i2cnum ; 16 | uint8_t io_scl ; 17 | uint8_t io_sda ; 18 | uint32_t i2c_speed ; 19 | }wire_t; 20 | 21 | extern wire_t wire0; 22 | extern wire_t wire1; 23 | 24 | esp_err_t InitI2CWire( wire_t* wire ); 25 | uint8_t I2Creadbyte( wire_t* wire, uint8_t device_addr, uint8_t reg_addr ); 26 | uint8_t I2CreadBuff( wire_t* wire, uint8_t device_addr, uint8_t reg_addr, uint8_t* rd_buff, uint8_t length ); 27 | uint8_t I2Cwirtebyte( wire_t* wire, uint8_t device_addr, uint8_t reg_addr, uint8_t Data); 28 | uint8_t I2Cwirtebuff( wire_t* wire, uint8_t device_addr, uint8_t reg_addr, uint8_t* wd_buff,uint8_t length); 29 | uint8_t I2CbeginTransmission( wire_t* wire, uint8_t device_addr, uint8_t reg_addr ); 30 | 31 | #endif -------------------------------------------------------------------------------- /components/m5stickc-idf/util/wire.c: -------------------------------------------------------------------------------- 1 | #include "wire.h" 2 | 3 | esp_err_t InitI2CWire( wire_t* wire ) 4 | { 5 | i2c_config_t conf; 6 | esp_err_t err; 7 | conf.mode = I2C_MODE_MASTER; 8 | conf.sda_io_num = wire->io_sda; 9 | conf.sda_pullup_en = GPIO_PULLUP_ENABLE; 10 | conf.scl_io_num = wire->io_scl; 11 | conf.scl_pullup_en = GPIO_PULLUP_ENABLE; 12 | conf.master.clk_speed = wire->i2c_speed; 13 | err = i2c_param_config(wire->i2cnum, &conf); 14 | if( err != ESP_OK ) return err; 15 | err = i2c_driver_install(wire->i2cnum, conf.mode, 16 | 0, //I2C_MASTER_RX_BUF_DISABLE 17 | 0, //I2C_MASTER_TX_BUF_DISABLE 18 | 0); 19 | return err; 20 | } 21 | 22 | uint8_t I2Creadbyte( wire_t* wire, uint8_t device_addr, uint8_t reg_addr ) 23 | { 24 | uint8_t rd_data = 0; 25 | I2CreadBuff( wire, device_addr, reg_addr, &rd_data, 1); 26 | return rd_data; 27 | } 28 | 29 | uint8_t I2CreadBuff( wire_t* wire, uint8_t device_addr, uint8_t reg_addr, uint8_t* rd_buff, uint8_t length ) 30 | { 31 | i2c_cmd_handle_t cmd = i2c_cmd_link_create(); 32 | esp_err_t ret; 33 | if( length == 0 ) 34 | { 35 | return -1; 36 | } 37 | I2CbeginTransmission( wire, device_addr, reg_addr ); 38 | i2c_master_start(cmd); 39 | i2c_master_write_byte(cmd, (device_addr << 1) | I2C_MASTER_READ, ACK_CHECK_EN); 40 | if (length > 1) 41 | { 42 | i2c_master_read(cmd, rd_buff, length - 1, ACK_VAL); 43 | } 44 | i2c_master_read_byte(cmd, rd_buff + length - 1, NACK_VAL); 45 | i2c_master_stop(cmd); 46 | ret = i2c_master_cmd_begin(wire->i2cnum, cmd, 1000 / portTICK_RATE_MS); 47 | i2c_cmd_link_delete(cmd); 48 | return ret; 49 | } 50 | 51 | uint8_t I2Cwirtebyte( wire_t* wire, uint8_t device_addr, uint8_t reg_addr, uint8_t Data) 52 | { 53 | i2c_cmd_handle_t cmd = i2c_cmd_link_create(); 54 | esp_err_t ret; 55 | i2c_master_start(cmd); 56 | i2c_master_write_byte(cmd, (device_addr << 1) | I2C_MASTER_WRITE, ACK_CHECK_EN); 57 | i2c_master_write_byte(cmd, reg_addr, ACK_CHECK_EN); 58 | i2c_master_write_byte(cmd, Data, ACK_CHECK_EN); 59 | i2c_master_stop(cmd); 60 | ret = i2c_master_cmd_begin(wire->i2cnum, cmd, 1000 / portTICK_RATE_MS); 61 | i2c_cmd_link_delete(cmd); 62 | return ret; 63 | } 64 | 65 | uint8_t I2Cwirtebuff( wire_t* wire, uint8_t device_addr, uint8_t reg_addr, uint8_t* wd_buff,uint8_t length) 66 | { 67 | i2c_cmd_handle_t cmd = i2c_cmd_link_create(); 68 | esp_err_t ret; 69 | i2c_master_start(cmd); 70 | i2c_master_write_byte(cmd, (device_addr << 1) | I2C_MASTER_WRITE, ACK_CHECK_EN); 71 | i2c_master_write_byte(cmd, reg_addr, ACK_CHECK_EN); 72 | i2c_master_write(cmd, wd_buff, length, ACK_CHECK_EN); 73 | i2c_master_stop(cmd); 74 | ret = i2c_master_cmd_begin(wire->i2cnum, cmd, 1000 / portTICK_RATE_MS); 75 | i2c_cmd_link_delete(cmd); 76 | return ret; 77 | } 78 | 79 | uint8_t I2CbeginTransmission( wire_t* wire, uint8_t device_addr, uint8_t reg_addr ) 80 | { 81 | i2c_cmd_handle_t cmd; 82 | 83 | cmd = i2c_cmd_link_create(); 84 | ESP_ERROR_CHECK(i2c_master_start(cmd)); 85 | ESP_ERROR_CHECK(i2c_master_write_byte(cmd, (device_addr << 1) | I2C_MASTER_WRITE, 1)); 86 | ESP_ERROR_CHECK(i2c_master_write_byte(cmd, reg_addr, 1)); 87 | ESP_ERROR_CHECK(i2c_master_stop(cmd)); 88 | ESP_ERROR_CHECK(i2c_master_cmd_begin(wire->i2cnum, cmd, 1000/portTICK_PERIOD_MS)); 89 | i2c_cmd_link_delete(cmd); 90 | 91 | return 0; 92 | } 93 | 94 | wire_t wire0={ 95 | .i2cnum = 0, 96 | .io_scl = 22, 97 | .io_sda = 21, 98 | .i2c_speed = 10000 99 | }; 100 | 101 | wire_t wire1= 102 | { 103 | .i2cnum = 1, 104 | .io_scl = 32, 105 | .io_sda = 32, 106 | .i2c_speed = 10000 107 | }; -------------------------------------------------------------------------------- /main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(COMPONENT_SRCS "main.c") 2 | set(COMPONENT_ADD_INCLUDEDIRS ".") 3 | 4 | register_component() 5 | -------------------------------------------------------------------------------- /main/Kconfig.projbuild: -------------------------------------------------------------------------------- 1 | menu "Example Configuration" 2 | 3 | menu "I2C Master" 4 | config I2C_MASTER_SCL 5 | int "SCL GPIO Num" 6 | default 19 7 | help 8 | GPIO number for I2C Master clock line. 9 | 10 | config I2C_MASTER_SDA 11 | int "SDA GPIO Num" 12 | default 18 13 | help 14 | GPIO number for I2C Master data line. 15 | 16 | config I2C_MASTER_PORT_NUM 17 | int "Port Number" 18 | default 1 19 | help 20 | Port number for I2C Master device. 21 | 22 | config I2C_MASTER_FREQUENCY 23 | int "Master Frequency" 24 | default 100000 25 | help 26 | I2C Speed of Master device. 27 | endmenu 28 | 29 | menu "I2C Slave" 30 | config I2C_SLAVE_SCL 31 | int "SCL GPIO Num" 32 | default 26 33 | help 34 | GPIO number for I2C Slave clock line. 35 | 36 | config I2C_SLAVE_SDA 37 | int "SDA GPIO Num" 38 | default 25 39 | help 40 | GPIO number for I2C Slave data line. 41 | 42 | config I2C_SLAVE_PORT_NUM 43 | int "Port Number" 44 | default 0 45 | help 46 | Port number for I2C Slave device. 47 | 48 | config I2C_SLAVE_ADDRESS 49 | hex "ESP Slave Address" 50 | default 0x28 51 | help 52 | Hardware Address of I2C Slave Port. 53 | endmenu 54 | 55 | menu "BH1750 Sensor" 56 | choice BH1750_ADDR 57 | prompt "BH1750 I2C Address" 58 | default BH1750_I2C_ADDRESS_LOW 59 | help 60 | Hardware address of BH1750, which is 2 types, and determined by ADDR terminal. 61 | 62 | config BH1750_I2C_ADDRESS_LOW 63 | bool "BH1750 I2C Address(ADDR=0)" 64 | help 65 | I2C Address of BH1750 Sensor according to your schemetic configuration. 66 | 67 | config BH1750_I2C_ADDRESS_High 68 | bool "BH1750 I2C Address(ADDR=1)" 69 | help 70 | I2C Address of BH1750 Sensor according to your schemetic configuration. 71 | endchoice 72 | 73 | config BH1750_ADDR 74 | hex 75 | default 0x5C if BH1750_I2C_ADDRESS_High 76 | default 0x23 if BH1750_I2C_ADDRESS_LOW 77 | 78 | choice BH1750_MODE 79 | prompt "BH1750 Operation Mode" 80 | default BH1750_ONETIME_L_RESOLUTION 81 | help 82 | Operation Mode of BH1750. 83 | Different mode means different resolution and measurement time. 84 | config BH1750_CONTINU_H_RESOLUTION 85 | bool "Continuously H-Resolution Mode" 86 | help 87 | Resolution is 1lx, measurement time is typically 120ms. 88 | config BH1750_CONTINU_H_RESOLUTION2 89 | bool "Continuously H-Resolution Mode2" 90 | help 91 | Resolution is 0.5lx, measurement time is typically 120ms. 92 | config BH1750_CONTINU_L_RESOLUTION 93 | bool "Continuously L-Resolution Mode" 94 | help 95 | Resolution is 4lx, measurement time is typically 16ms. 96 | config BH1750_ONETIME_H_RESOLUTION 97 | bool "One Time H-Resolution Mode" 98 | help 99 | Resolution is 1lx, measurement time is typically 120ms. 100 | It is automatically set to Power Down mode after measurement. 101 | config BH1750_ONETIME_H_RESOLUTION2 102 | bool "One Time H-Resolution Mode2" 103 | help 104 | Resolution is 0.5lx, measurement time is typically 120ms. 105 | It is automatically set to Power Down mode after measurement. 106 | config BH1750_ONETIME_L_RESOLUTION 107 | bool "One Time L-Resolution Mode" 108 | help 109 | Resolution is 4lx, measurement time is typically 16ms. 110 | It is automatically set to Power Down mode after measurement. 111 | endchoice 112 | 113 | config BH1750_OPMODE 114 | hex 115 | default 0x10 if BH1750_CONTINU_H_RESOLUTION 116 | default 0x11 if BH1750_CONTINU_H_RESOLUTION2 117 | default 0x13 if BH1750_CONTINU_L_RESOLUTION 118 | default 0x20 if BH1750_ONETIME_H_RESOLUTION 119 | default 0x21 if BH1750_ONETIME_H_RESOLUTION2 120 | default 0x23 if BH1750_ONETIME_L_RESOLUTION 121 | 122 | endmenu 123 | 124 | endmenu 125 | -------------------------------------------------------------------------------- /main/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Main Makefile. This is basically the same as a component makefile. 3 | # 4 | 5 | COMPONENT_DIRS := ../components -------------------------------------------------------------------------------- /main/main.c: -------------------------------------------------------------------------------- 1 | /* M5StackC - Example 2 | 3 | See README.md file to get detailed usage of this example. 4 | */ 5 | #include 6 | #include "esp_system.h" 7 | #include "esp_err.h" 8 | #include "esp_log.h" 9 | #include "m5stickc.h" 10 | #include "sdkconfig.h" 11 | #include "wire.h" 12 | #include "AXP192.h" 13 | #include "driver/i2s.h" 14 | 15 | static uint8_t strbuff[50]; 16 | static bool button_a_flag = false; 17 | 18 | static void AXP192Test(void) 19 | { 20 | float temp; 21 | float bat_voltage; 22 | float bat_current; 23 | float vin_voltage; 24 | float vin_current; 25 | 26 | while (button_a_flag == false) 27 | { 28 | temp = AXP192GetTempInAXP192(&wire0); 29 | sprintf((char *)strbuff, "AXP192-temp:%.2fC", temp); 30 | TFT_print((char *)strbuff, 5, 10); 31 | bat_voltage = AXP192GetBatVoltage(&wire0); 32 | sprintf((char *)strbuff, "bat_voltage:%.2fV", bat_voltage); 33 | TFT_print((char *)strbuff, 5, 20); 34 | bat_current = AXP192GetBatCurrent(&wire0); 35 | sprintf((char *)strbuff, "bat_current:%.2fmA", bat_current); 36 | TFT_print((char *)strbuff, 5, 30); 37 | vin_voltage = AXP192GetVinVoltage(&wire0); 38 | sprintf((char *)strbuff, "vin_voltage:%.2fV", vin_voltage); 39 | TFT_print((char *)strbuff, 5, 40); 40 | vin_current = AXP192GetVinCurrent(&wire0); 41 | sprintf((char *)strbuff, "vin_current:%.2fmA", vin_current); 42 | TFT_print((char *)strbuff, 5, 50); 43 | 44 | vTaskDelay(200 / portTICK_PERIOD_MS); 45 | } 46 | button_a_flag = false; 47 | vTaskDelay(200 / portTICK_PERIOD_MS); 48 | TFT_fillScreen(TFT_BLACK); 49 | TFT_print(">>>M5 StickC<<<", CENTER, 0); 50 | } 51 | 52 | static void MPU6886Test(void) 53 | { 54 | float accX = 0; 55 | float accY = 0; 56 | float accZ = 0; 57 | float gyroX = 0; 58 | float gyroY = 0; 59 | float gyroZ = 0; 60 | float temp = 0; 61 | 62 | while (button_a_flag == false) 63 | { 64 | MPU6886getGyroData(&gyroX, &gyroY, &gyroZ); 65 | MPU6886getAccelData(&accX, &accY, &accZ); 66 | MPU6886getTempData(&temp); 67 | 68 | printf("%.2f %.2f %.2f ", gyroX, gyroY, gyroZ); 69 | printf("o/s\n"); 70 | printf("%.2f %.2f %.2f ", accX * 1000, accY * 1000, accZ * 1000); 71 | printf("mg\n"); 72 | printf("temperature : %.2f C\n", temp); 73 | 74 | TFT_print(" |", 5, 20); 75 | TFT_print("Gyro", 30, 10); 76 | TFT_print("| Accel", 80, 10); 77 | TFT_print("X|", 5, 20); 78 | TFT_print("Y|", 5, 30); 79 | TFT_print("Z|", 5, 40); 80 | 81 | sprintf((char *)strbuff, "%.2f", gyroX); 82 | TFT_print((char *)strbuff, 30, 20); 83 | sprintf((char *)strbuff, "%.2f", gyroY); 84 | TFT_print((char *)strbuff, 30, 30); 85 | sprintf((char *)strbuff, "%.2f", gyroZ); 86 | TFT_print((char *)strbuff, 30, 40); 87 | 88 | sprintf((char *)strbuff, "| %.2f", accX * 1000); 89 | TFT_print((char *)strbuff, 80, 20); 90 | sprintf((char *)strbuff, "| %.2f", accY * 1000); 91 | TFT_print((char *)strbuff, 80, 30); 92 | sprintf((char *)strbuff, "| %.2f", accZ * 1000); 93 | TFT_print((char *)strbuff, 80, 40); 94 | 95 | sprintf((char *)strbuff, "temperature:%.2fC\n", temp); 96 | TFT_print((char *)strbuff, 5, 50); 97 | 98 | vTaskDelay(20 / portTICK_PERIOD_MS); 99 | } 100 | 101 | vTaskDelay(200 / portTICK_PERIOD_MS); 102 | button_a_flag = false; 103 | TFT_fillScreen(TFT_BLACK); 104 | TFT_print(">>>M5 StickC<<<", CENTER, 0); 105 | } 106 | 107 | #define PIN_CLK 0 108 | #define PIN_DATA 34 109 | #define READ_LEN (2 * 200) 110 | 111 | uint8_t i2s_read_buff[READ_LEN] = {0}; 112 | int16_t adc_data_buff[200] = {}; 113 | int16_t *padc_16bit_buffer = NULL; 114 | 115 | long map(long x, long in_min, long in_max, long out_min, long out_max) 116 | { 117 | return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; 118 | } 119 | 120 | void MicRecordTest() 121 | { 122 | uint16_t posX = 0, yData, lastY = 0; 123 | uint16_t count_n = 0, count_i = 0; 124 | int32_t sumData; 125 | size_t bytesread; 126 | 127 | TFT_fillScreen(TFT_BLACK); 128 | 129 | TFT_drawLine(0, 73, 110, 73, TFT_WHITE); 130 | TFT_drawLine(5, 5, 5, 75, TFT_WHITE); 131 | for (count_n = 0; count_n < 10; count_n++) 132 | { 133 | TFT_drawLine(15 + count_n * 10, 72, 15 + count_n * 10, 75, TFT_WHITE); 134 | 135 | } 136 | 137 | for (count_n = 0; count_n < 200; count_n++) 138 | { 139 | adc_data_buff[count_n] = 0; 140 | } 141 | 142 | while (button_a_flag == false) 143 | { 144 | i2s_read(I2S_NUM_0, (char *)i2s_read_buff, READ_LEN, &bytesread, (100 / portTICK_RATE_MS)); 145 | padc_16bit_buffer = (int16_t *)i2s_read_buff; 146 | 147 | posX += 10; 148 | if (posX >= 200) 149 | { 150 | posX = 0; 151 | } 152 | 153 | for (count_n = 0; count_n < 10; count_n++) 154 | { 155 | sumData = 0; 156 | for (count_i = 0; count_i < 20; count_i++) 157 | { 158 | sumData = sumData + padc_16bit_buffer[count_i + count_n * 20] * 5; 159 | } 160 | 161 | if (posX + 100 + count_n >= 200) 162 | { 163 | adc_data_buff[posX + 100 + count_n - 200] = (sumData / 20); 164 | } 165 | else 166 | { 167 | adc_data_buff[posX + 100 + count_n] = (sumData / 20); 168 | } 169 | } 170 | 171 | TFT_fillRect(6, 0, 106, 70, TFT_BLACK); 172 | for (count_n = 0; count_n < 100; count_n++) 173 | { 174 | if ((posX + count_n) < 200) 175 | { 176 | yData = map(adc_data_buff[posX + count_n], INT16_MIN, INT16_MAX, 10, 70); 177 | } 178 | else 179 | { 180 | yData = map(adc_data_buff[posX + count_n - 200], INT16_MIN, INT16_MAX, 10, 70); 181 | } 182 | if (lastY == yData) 183 | { 184 | TFT_drawPixel(105 - count_n, yData, TFT_WHITE, 1); 185 | } 186 | else 187 | { 188 | TFT_drawLine(105 - count_n, lastY, 105 - count_n + 1, yData, TFT_WHITE); 189 | } 190 | 191 | lastY = yData; 192 | } 193 | vTaskDelay(50 / portTICK_RATE_MS); 194 | } 195 | 196 | vTaskDelay(200 / portTICK_PERIOD_MS); 197 | button_a_flag = false; 198 | TFT_fillScreen(TFT_BLACK); 199 | TFT_print(">>>M5 StickC<<<", CENTER, 0); 200 | } 201 | 202 | static void stickc_test_task(void *arg) 203 | { 204 | while (1) 205 | { 206 | MPU6886Test(); 207 | AXP192Test(); 208 | MicRecordTest(); 209 | } 210 | } 211 | 212 | void buttonEvent(void *handler_arg, esp_event_base_t base, int32_t id, void *event_data) 213 | { 214 | if ((base == button_a.esp_event_base) && (id == BUTTON_PRESSED_EVENT)) 215 | { 216 | TFT_print("button A", CENTER, 60); 217 | button_a_flag = true; 218 | } 219 | 220 | if ((base == button_b.esp_event_base) && (id == BUTTON_PRESSED_EVENT)) 221 | { 222 | TFT_print("button B", CENTER, 60); 223 | } 224 | } 225 | 226 | void i2sInit() 227 | { 228 | i2s_config_t i2s_config = { 229 | .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX | I2S_MODE_PDM), 230 | .sample_rate = 44100, 231 | .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, // is fixed at 12bit, stereo, MSB 232 | .channel_format = I2S_CHANNEL_FMT_ALL_RIGHT, 233 | .communication_format = I2S_COMM_FORMAT_I2S, 234 | .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, 235 | .dma_buf_count = 2, 236 | .dma_buf_len = 128, 237 | }; 238 | 239 | i2s_pin_config_t pin_config; 240 | pin_config.bck_io_num = I2S_PIN_NO_CHANGE; 241 | pin_config.ws_io_num = PIN_CLK; 242 | pin_config.data_out_num = I2S_PIN_NO_CHANGE; 243 | pin_config.data_in_num = PIN_DATA; 244 | 245 | i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL); 246 | i2s_set_pin(I2S_NUM_0, &pin_config); 247 | i2s_set_clk(I2S_NUM_0, 44100, I2S_BITS_PER_SAMPLE_16BIT, I2S_CHANNEL_MONO); 248 | } 249 | 250 | void app_main(void) 251 | { 252 | M5Init(); 253 | i2sInit(); 254 | 255 | esp_event_handler_register_with(event_loop, BUTTON_A_EVENT_BASE, BUTTON_PRESSED_EVENT, buttonEvent, NULL); 256 | esp_event_handler_register_with(event_loop, BUTTON_B_EVENT_BASE, BUTTON_PRESSED_EVENT, buttonEvent, NULL); 257 | 258 | font_rotate = 0; 259 | text_wrap = 0; 260 | font_transparent = 0; 261 | font_forceFixed = 0; 262 | gray_scale = 0; 263 | TFT_setGammaCurve(DEFAULT_GAMMA_CURVE); 264 | TFT_setRotation(LANDSCAPE); 265 | TFT_setFont(SMALL_FONT, NULL); 266 | TFT_resetclipwin(); 267 | 268 | TFT_print(">>>M5 StickC<<<", CENTER, 0); 269 | vTaskDelay(500 / portTICK_PERIOD_MS); 270 | 271 | xTaskCreate(stickc_test_task, "stickc_test_task", 1024 * 2, (void *)0, 10, NULL); 272 | } 273 | -------------------------------------------------------------------------------- /sdkconfig: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file; DO NOT EDIT. 3 | # Espressif IoT Development Framework Configuration 4 | # 5 | 6 | # 7 | # SDK tool configuration 8 | # 9 | CONFIG_TOOLPREFIX="xtensa-esp32-elf-" 10 | CONFIG_PYTHON="python" 11 | CONFIG_MAKE_WARN_UNDEFINED_VARIABLES=y 12 | 13 | # 14 | # Bootloader config 15 | # 16 | CONFIG_LOG_BOOTLOADER_LEVEL_NONE= 17 | CONFIG_LOG_BOOTLOADER_LEVEL_ERROR= 18 | CONFIG_LOG_BOOTLOADER_LEVEL_WARN= 19 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 20 | CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG= 21 | CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE= 22 | CONFIG_LOG_BOOTLOADER_LEVEL=3 23 | CONFIG_BOOTLOADER_SPI_WP_PIN=7 24 | CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y 25 | CONFIG_BOOTLOADER_FACTORY_RESET= 26 | CONFIG_BOOTLOADER_APP_TEST= 27 | CONFIG_BOOTLOADER_WDT_ENABLE=y 28 | CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE= 29 | CONFIG_BOOTLOADER_WDT_TIME_MS=9000 30 | 31 | # 32 | # Security features 33 | # 34 | CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT= 35 | CONFIG_SECURE_BOOT_ENABLED= 36 | CONFIG_FLASH_ENCRYPTION_ENABLED= 37 | 38 | # 39 | # Serial flasher config 40 | # 41 | CONFIG_ESPTOOLPY_PORT="/dev/ttyUSB0" 42 | CONFIG_ESPTOOLPY_BAUD_115200B= 43 | CONFIG_ESPTOOLPY_BAUD_230400B= 44 | CONFIG_ESPTOOLPY_BAUD_921600B= 45 | CONFIG_ESPTOOLPY_BAUD_2MB= 46 | CONFIG_ESPTOOLPY_BAUD_OTHER=y 47 | CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=750000 48 | CONFIG_ESPTOOLPY_BAUD=750000 49 | CONFIG_ESPTOOLPY_COMPRESSED=y 50 | CONFIG_FLASHMODE_QIO=y 51 | CONFIG_FLASHMODE_QOUT= 52 | CONFIG_FLASHMODE_DIO= 53 | CONFIG_FLASHMODE_DOUT= 54 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 55 | CONFIG_ESPTOOLPY_FLASHFREQ_80M=y 56 | CONFIG_ESPTOOLPY_FLASHFREQ_40M= 57 | CONFIG_ESPTOOLPY_FLASHFREQ_26M= 58 | CONFIG_ESPTOOLPY_FLASHFREQ_20M= 59 | CONFIG_ESPTOOLPY_FLASHFREQ="80m" 60 | CONFIG_ESPTOOLPY_FLASHSIZE_1MB= 61 | CONFIG_ESPTOOLPY_FLASHSIZE_2MB= 62 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y 63 | CONFIG_ESPTOOLPY_FLASHSIZE_8MB= 64 | CONFIG_ESPTOOLPY_FLASHSIZE_16MB= 65 | CONFIG_ESPTOOLPY_FLASHSIZE="4MB" 66 | CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y 67 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 68 | CONFIG_ESPTOOLPY_BEFORE_NORESET= 69 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 70 | CONFIG_ESPTOOLPY_AFTER_RESET=y 71 | CONFIG_ESPTOOLPY_AFTER_NORESET= 72 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 73 | CONFIG_MONITOR_BAUD_9600B= 74 | CONFIG_MONITOR_BAUD_57600B= 75 | CONFIG_MONITOR_BAUD_115200B=y 76 | CONFIG_MONITOR_BAUD_230400B= 77 | CONFIG_MONITOR_BAUD_921600B= 78 | CONFIG_MONITOR_BAUD_2MB= 79 | CONFIG_MONITOR_BAUD_OTHER= 80 | CONFIG_MONITOR_BAUD_OTHER_VAL=115200 81 | CONFIG_MONITOR_BAUD=115200 82 | 83 | # 84 | # Example Configuration 85 | # 86 | 87 | # 88 | # I2C Master 89 | # 90 | CONFIG_I2C_MASTER_SCL=19 91 | CONFIG_I2C_MASTER_SDA=18 92 | CONFIG_I2C_MASTER_PORT_NUM=1 93 | CONFIG_I2C_MASTER_FREQUENCY=100000 94 | 95 | # 96 | # I2C Slave 97 | # 98 | CONFIG_I2C_SLAVE_SCL=26 99 | CONFIG_I2C_SLAVE_SDA=25 100 | CONFIG_I2C_SLAVE_PORT_NUM=0 101 | CONFIG_I2C_SLAVE_ADDRESS=0x28 102 | 103 | # 104 | # BH1750 Sensor 105 | # 106 | CONFIG_BH1750_I2C_ADDRESS_LOW=y 107 | CONFIG_BH1750_I2C_ADDRESS_High= 108 | CONFIG_BH1750_ADDR=0x23 109 | CONFIG_BH1750_CONTINU_H_RESOLUTION= 110 | CONFIG_BH1750_CONTINU_H_RESOLUTION2= 111 | CONFIG_BH1750_CONTINU_L_RESOLUTION= 112 | CONFIG_BH1750_ONETIME_H_RESOLUTION= 113 | CONFIG_BH1750_ONETIME_H_RESOLUTION2= 114 | CONFIG_BH1750_ONETIME_L_RESOLUTION=y 115 | CONFIG_BH1750_OPMODE=0x23 116 | 117 | # 118 | # Partition Table 119 | # 120 | CONFIG_PARTITION_TABLE_SINGLE_APP=y 121 | CONFIG_PARTITION_TABLE_TWO_OTA= 122 | CONFIG_PARTITION_TABLE_CUSTOM= 123 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 124 | CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" 125 | CONFIG_PARTITION_TABLE_OFFSET=0x8000 126 | CONFIG_PARTITION_TABLE_MD5=y 127 | 128 | # 129 | # Compiler options 130 | # 131 | CONFIG_OPTIMIZATION_LEVEL_DEBUG=y 132 | CONFIG_OPTIMIZATION_LEVEL_RELEASE= 133 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 134 | CONFIG_OPTIMIZATION_ASSERTIONS_SILENT= 135 | CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED= 136 | CONFIG_CXX_EXCEPTIONS= 137 | CONFIG_STACK_CHECK_NONE=y 138 | CONFIG_STACK_CHECK_NORM= 139 | CONFIG_STACK_CHECK_STRONG= 140 | CONFIG_STACK_CHECK_ALL= 141 | CONFIG_STACK_CHECK= 142 | CONFIG_WARN_WRITE_STRINGS= 143 | CONFIG_DISABLE_GCC8_WARNINGS= 144 | 145 | # 146 | # Component config 147 | # 148 | 149 | # 150 | # Application Level Tracing 151 | # 152 | CONFIG_ESP32_APPTRACE_DEST_TRAX= 153 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 154 | CONFIG_ESP32_APPTRACE_ENABLE= 155 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 156 | CONFIG_AWS_IOT_SDK= 157 | 158 | # 159 | # Bluetooth 160 | # 161 | CONFIG_BT_ENABLED= 162 | CONFIG_BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_EFF=0 163 | CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 164 | CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 165 | CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 166 | CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 167 | CONFIG_BT_RESERVE_DRAM=0 168 | 169 | # 170 | # Driver configurations 171 | # 172 | 173 | # 174 | # ADC configuration 175 | # 176 | CONFIG_ADC_FORCE_XPD_FSM= 177 | CONFIG_ADC2_DISABLE_DAC=y 178 | 179 | # 180 | # SPI configuration 181 | # 182 | CONFIG_SPI_MASTER_IN_IRAM= 183 | CONFIG_SPI_MASTER_ISR_IN_IRAM=y 184 | CONFIG_SPI_SLAVE_IN_IRAM= 185 | CONFIG_SPI_SLAVE_ISR_IN_IRAM=y 186 | 187 | # 188 | # ESP32-specific 189 | # 190 | CONFIG_ESP32_DEFAULT_CPU_FREQ_80= 191 | CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y 192 | CONFIG_ESP32_DEFAULT_CPU_FREQ_240= 193 | CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 194 | CONFIG_SPIRAM_SUPPORT= 195 | CONFIG_MEMMAP_TRACEMEM= 196 | CONFIG_MEMMAP_TRACEMEM_TWOBANKS= 197 | CONFIG_ESP32_TRAX= 198 | CONFIG_TRACEMEM_RESERVE_DRAM=0x0 199 | CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH= 200 | CONFIG_ESP32_ENABLE_COREDUMP_TO_UART= 201 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 202 | CONFIG_ESP32_ENABLE_COREDUMP= 203 | CONFIG_TWO_UNIVERSAL_MAC_ADDRESS= 204 | CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y 205 | CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 206 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 207 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 208 | CONFIG_MAIN_TASK_STACK_SIZE=3584 209 | CONFIG_IPC_TASK_STACK_SIZE=1024 210 | CONFIG_TIMER_TASK_STACK_SIZE=3584 211 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 212 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF= 213 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR= 214 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF= 215 | CONFIG_NEWLIB_STDIN_LINE_ENDING_LF= 216 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 217 | CONFIG_NEWLIB_NANO_FORMAT= 218 | CONFIG_CONSOLE_UART_DEFAULT=y 219 | CONFIG_CONSOLE_UART_CUSTOM= 220 | CONFIG_CONSOLE_UART_NONE= 221 | CONFIG_CONSOLE_UART_NUM=0 222 | CONFIG_CONSOLE_UART_BAUDRATE=115200 223 | CONFIG_ULP_COPROC_ENABLED= 224 | CONFIG_ULP_COPROC_RESERVE_MEM=0 225 | CONFIG_ESP32_PANIC_PRINT_HALT= 226 | CONFIG_ESP32_PANIC_PRINT_REBOOT=y 227 | CONFIG_ESP32_PANIC_SILENT_REBOOT= 228 | CONFIG_ESP32_PANIC_GDBSTUB= 229 | CONFIG_ESP32_DEBUG_OCDAWARE=y 230 | CONFIG_ESP32_DEBUG_STUBS_ENABLE=y 231 | CONFIG_INT_WDT=y 232 | CONFIG_INT_WDT_TIMEOUT_MS=300 233 | CONFIG_INT_WDT_CHECK_CPU1=y 234 | CONFIG_TASK_WDT=y 235 | CONFIG_TASK_WDT_PANIC= 236 | CONFIG_TASK_WDT_TIMEOUT_S=5 237 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 238 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 239 | CONFIG_BROWNOUT_DET=y 240 | CONFIG_BROWNOUT_DET_LVL_SEL_0=y 241 | CONFIG_BROWNOUT_DET_LVL_SEL_1= 242 | CONFIG_BROWNOUT_DET_LVL_SEL_2= 243 | CONFIG_BROWNOUT_DET_LVL_SEL_3= 244 | CONFIG_BROWNOUT_DET_LVL_SEL_4= 245 | CONFIG_BROWNOUT_DET_LVL_SEL_5= 246 | CONFIG_BROWNOUT_DET_LVL_SEL_6= 247 | CONFIG_BROWNOUT_DET_LVL_SEL_7= 248 | CONFIG_BROWNOUT_DET_LVL=0 249 | CONFIG_REDUCE_PHY_TX_POWER=y 250 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y 251 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC= 252 | CONFIG_ESP32_TIME_SYSCALL_USE_FRC1= 253 | CONFIG_ESP32_TIME_SYSCALL_USE_NONE= 254 | CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y 255 | CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL= 256 | CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC= 257 | CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256= 258 | CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 259 | CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 260 | CONFIG_ESP32_XTAL_FREQ_40=y 261 | CONFIG_ESP32_XTAL_FREQ_26= 262 | CONFIG_ESP32_XTAL_FREQ_AUTO= 263 | CONFIG_ESP32_XTAL_FREQ=40 264 | CONFIG_DISABLE_BASIC_ROM_CONSOLE= 265 | CONFIG_NO_BLOBS= 266 | CONFIG_ESP_TIMER_PROFILING= 267 | CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS= 268 | CONFIG_ESP_ERR_TO_NAME_LOOKUP=y 269 | 270 | # 271 | # Wi-Fi 272 | # 273 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 274 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 275 | CONFIG_ESP32_WIFI_STATIC_TX_BUFFER= 276 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 277 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 278 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 279 | CONFIG_ESP32_WIFI_CSI_ENABLED= 280 | CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y 281 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 282 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 283 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 284 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 285 | CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y 286 | CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1= 287 | CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 288 | CONFIG_ESP32_WIFI_IRAM_OPT=y 289 | CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 290 | 291 | # 292 | # PHY 293 | # 294 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 295 | CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION= 296 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 297 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 298 | 299 | # 300 | # Power Management 301 | # 302 | CONFIG_PM_ENABLE= 303 | 304 | # 305 | # ADC-Calibration 306 | # 307 | CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y 308 | CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y 309 | CONFIG_ADC_CAL_LUT_ENABLE=y 310 | 311 | # 312 | # Event Loop Library 313 | # 314 | CONFIG_EVENT_LOOP_PROFILING= 315 | 316 | # 317 | # ESP HTTP client 318 | # 319 | CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y 320 | 321 | # 322 | # HTTP Server 323 | # 324 | CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 325 | CONFIG_HTTPD_MAX_URI_LEN=512 326 | CONFIG_HTTPD_PURGE_BUF_LEN=32 327 | CONFIG_HTTPD_LOG_PURGE_DATA= 328 | 329 | # 330 | # Ethernet 331 | # 332 | CONFIG_DMA_RX_BUF_NUM=10 333 | CONFIG_DMA_TX_BUF_NUM=10 334 | CONFIG_EMAC_L2_TO_L3_RX_BUF_MODE= 335 | CONFIG_EMAC_CHECK_LINK_PERIOD_MS=2000 336 | CONFIG_EMAC_TASK_PRIORITY=20 337 | CONFIG_EMAC_TASK_STACK_SIZE=3072 338 | 339 | # 340 | # FAT Filesystem support 341 | # 342 | CONFIG_FATFS_CODEPAGE_DYNAMIC= 343 | CONFIG_FATFS_CODEPAGE_437=y 344 | CONFIG_FATFS_CODEPAGE_720= 345 | CONFIG_FATFS_CODEPAGE_737= 346 | CONFIG_FATFS_CODEPAGE_771= 347 | CONFIG_FATFS_CODEPAGE_775= 348 | CONFIG_FATFS_CODEPAGE_850= 349 | CONFIG_FATFS_CODEPAGE_852= 350 | CONFIG_FATFS_CODEPAGE_855= 351 | CONFIG_FATFS_CODEPAGE_857= 352 | CONFIG_FATFS_CODEPAGE_860= 353 | CONFIG_FATFS_CODEPAGE_861= 354 | CONFIG_FATFS_CODEPAGE_862= 355 | CONFIG_FATFS_CODEPAGE_863= 356 | CONFIG_FATFS_CODEPAGE_864= 357 | CONFIG_FATFS_CODEPAGE_865= 358 | CONFIG_FATFS_CODEPAGE_866= 359 | CONFIG_FATFS_CODEPAGE_869= 360 | CONFIG_FATFS_CODEPAGE_932= 361 | CONFIG_FATFS_CODEPAGE_936= 362 | CONFIG_FATFS_CODEPAGE_949= 363 | CONFIG_FATFS_CODEPAGE_950= 364 | CONFIG_FATFS_CODEPAGE=437 365 | CONFIG_FATFS_LFN_NONE=y 366 | CONFIG_FATFS_LFN_HEAP= 367 | CONFIG_FATFS_LFN_STACK= 368 | CONFIG_FATFS_FS_LOCK=0 369 | CONFIG_FATFS_TIMEOUT_MS=10000 370 | CONFIG_FATFS_PER_FILE_CACHE=y 371 | 372 | # 373 | # Modbus configuration 374 | # 375 | CONFIG_MB_QUEUE_LENGTH=20 376 | CONFIG_MB_SERIAL_TASK_STACK_SIZE=2048 377 | CONFIG_MB_SERIAL_BUF_SIZE=256 378 | CONFIG_MB_SERIAL_TASK_PRIO=10 379 | CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT= 380 | CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 381 | CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 382 | CONFIG_MB_CONTROLLER_STACK_SIZE=4096 383 | CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 384 | CONFIG_MB_TIMER_PORT_ENABLED=y 385 | CONFIG_MB_TIMER_GROUP=0 386 | CONFIG_MB_TIMER_INDEX=0 387 | 388 | # 389 | # FreeRTOS 390 | # 391 | CONFIG_FREERTOS_UNICORE= 392 | CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF 393 | CONFIG_FREERTOS_CORETIMER_0=y 394 | CONFIG_FREERTOS_CORETIMER_1= 395 | CONFIG_FREERTOS_HZ=100 396 | CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y 397 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE= 398 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL= 399 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 400 | CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK= 401 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 402 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 403 | CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y 404 | CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE= 405 | CONFIG_FREERTOS_ASSERT_DISABLE= 406 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 407 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 408 | CONFIG_FREERTOS_LEGACY_HOOKS= 409 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 410 | CONFIG_SUPPORT_STATIC_ALLOCATION= 411 | CONFIG_TIMER_TASK_PRIORITY=1 412 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 413 | CONFIG_TIMER_QUEUE_LENGTH=10 414 | CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 415 | CONFIG_FREERTOS_USE_TRACE_FACILITY= 416 | CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS= 417 | CONFIG_FREERTOS_DEBUG_INTERNALS= 418 | CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y 419 | 420 | # 421 | # Heap memory debugging 422 | # 423 | CONFIG_HEAP_POISONING_DISABLED=y 424 | CONFIG_HEAP_POISONING_LIGHT= 425 | CONFIG_HEAP_POISONING_COMPREHENSIVE= 426 | CONFIG_HEAP_TRACING= 427 | 428 | # 429 | # libsodium 430 | # 431 | CONFIG_LIBSODIUM_USE_MBEDTLS_SHA=y 432 | 433 | # 434 | # Log output 435 | # 436 | CONFIG_LOG_DEFAULT_LEVEL_NONE= 437 | CONFIG_LOG_DEFAULT_LEVEL_ERROR= 438 | CONFIG_LOG_DEFAULT_LEVEL_WARN= 439 | CONFIG_LOG_DEFAULT_LEVEL_INFO=y 440 | CONFIG_LOG_DEFAULT_LEVEL_DEBUG= 441 | CONFIG_LOG_DEFAULT_LEVEL_VERBOSE= 442 | CONFIG_LOG_DEFAULT_LEVEL=3 443 | CONFIG_LOG_COLORS=y 444 | 445 | # 446 | # LWIP 447 | # 448 | CONFIG_L2_TO_L3_COPY= 449 | CONFIG_LWIP_IRAM_OPTIMIZATION= 450 | CONFIG_LWIP_MAX_SOCKETS=10 451 | CONFIG_USE_ONLY_LWIP_SELECT= 452 | CONFIG_LWIP_SO_REUSE=y 453 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 454 | CONFIG_LWIP_SO_RCVBUF= 455 | CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 456 | CONFIG_LWIP_IP_FRAG= 457 | CONFIG_LWIP_IP_REASSEMBLY= 458 | CONFIG_LWIP_STATS= 459 | CONFIG_LWIP_ETHARP_TRUST_IP_MAC= 460 | CONFIG_ESP_GRATUITOUS_ARP=y 461 | CONFIG_GARP_TMR_INTERVAL=60 462 | CONFIG_TCPIP_RECVMBOX_SIZE=32 463 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 464 | CONFIG_LWIP_DHCP_RESTORE_LAST_IP= 465 | 466 | # 467 | # DHCP server 468 | # 469 | CONFIG_LWIP_DHCPS_LEASE_UNIT=60 470 | CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 471 | CONFIG_LWIP_AUTOIP= 472 | CONFIG_LWIP_NETIF_LOOPBACK=y 473 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 474 | 475 | # 476 | # TCP 477 | # 478 | CONFIG_LWIP_MAX_ACTIVE_TCP=16 479 | CONFIG_LWIP_MAX_LISTENING_TCP=16 480 | CONFIG_TCP_MAXRTX=12 481 | CONFIG_TCP_SYNMAXRTX=6 482 | CONFIG_TCP_MSS=1436 483 | CONFIG_TCP_MSL=60000 484 | CONFIG_TCP_SND_BUF_DEFAULT=5744 485 | CONFIG_TCP_WND_DEFAULT=5744 486 | CONFIG_TCP_RECVMBOX_SIZE=6 487 | CONFIG_TCP_QUEUE_OOSEQ=y 488 | CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES= 489 | CONFIG_TCP_OVERSIZE_MSS=y 490 | CONFIG_TCP_OVERSIZE_QUARTER_MSS= 491 | CONFIG_TCP_OVERSIZE_DISABLE= 492 | 493 | # 494 | # UDP 495 | # 496 | CONFIG_LWIP_MAX_UDP_PCBS=16 497 | CONFIG_UDP_RECVMBOX_SIZE=6 498 | CONFIG_TCPIP_TASK_STACK_SIZE=2048 499 | CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 500 | CONFIG_TCPIP_TASK_AFFINITY_CPU0= 501 | CONFIG_TCPIP_TASK_AFFINITY_CPU1= 502 | CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF 503 | CONFIG_PPP_SUPPORT= 504 | 505 | # 506 | # ICMP 507 | # 508 | CONFIG_LWIP_MULTICAST_PING= 509 | CONFIG_LWIP_BROADCAST_PING= 510 | 511 | # 512 | # LWIP RAW API 513 | # 514 | CONFIG_LWIP_MAX_RAW_PCBS=16 515 | 516 | # 517 | # mbedTLS 518 | # 519 | CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y 520 | CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC= 521 | CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC= 522 | CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 523 | CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN= 524 | CONFIG_MBEDTLS_DEBUG= 525 | CONFIG_MBEDTLS_HARDWARE_AES=y 526 | CONFIG_MBEDTLS_HARDWARE_MPI= 527 | CONFIG_MBEDTLS_HARDWARE_SHA= 528 | CONFIG_MBEDTLS_HAVE_TIME=y 529 | CONFIG_MBEDTLS_HAVE_TIME_DATE= 530 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 531 | CONFIG_MBEDTLS_TLS_SERVER_ONLY= 532 | CONFIG_MBEDTLS_TLS_CLIENT_ONLY= 533 | CONFIG_MBEDTLS_TLS_DISABLED= 534 | CONFIG_MBEDTLS_TLS_SERVER=y 535 | CONFIG_MBEDTLS_TLS_CLIENT=y 536 | CONFIG_MBEDTLS_TLS_ENABLED=y 537 | 538 | # 539 | # TLS Key Exchange Methods 540 | # 541 | CONFIG_MBEDTLS_PSK_MODES= 542 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 543 | CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y 544 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 545 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 546 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 547 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 548 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 549 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 550 | CONFIG_MBEDTLS_SSL_PROTO_SSL3= 551 | CONFIG_MBEDTLS_SSL_PROTO_TLS1=y 552 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y 553 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 554 | CONFIG_MBEDTLS_SSL_PROTO_DTLS= 555 | CONFIG_MBEDTLS_SSL_ALPN=y 556 | CONFIG_MBEDTLS_SSL_SESSION_TICKETS=y 557 | 558 | # 559 | # Symmetric Ciphers 560 | # 561 | CONFIG_MBEDTLS_AES_C=y 562 | CONFIG_MBEDTLS_CAMELLIA_C= 563 | CONFIG_MBEDTLS_DES_C= 564 | CONFIG_MBEDTLS_RC4_DISABLED=y 565 | CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT= 566 | CONFIG_MBEDTLS_RC4_ENABLED= 567 | CONFIG_MBEDTLS_BLOWFISH_C= 568 | CONFIG_MBEDTLS_XTEA_C= 569 | CONFIG_MBEDTLS_CCM_C=y 570 | CONFIG_MBEDTLS_GCM_C=y 571 | CONFIG_MBEDTLS_RIPEMD160_C= 572 | 573 | # 574 | # Certificates 575 | # 576 | CONFIG_MBEDTLS_PEM_PARSE_C=y 577 | CONFIG_MBEDTLS_PEM_WRITE_C=y 578 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 579 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 580 | CONFIG_MBEDTLS_ECP_C=y 581 | CONFIG_MBEDTLS_ECDH_C=y 582 | CONFIG_MBEDTLS_ECDSA_C=y 583 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 584 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 585 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 586 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 587 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 588 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 589 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 590 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 591 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 592 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 593 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 594 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 595 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 596 | 597 | # 598 | # mDNS 599 | # 600 | CONFIG_MDNS_MAX_SERVICES=10 601 | 602 | # 603 | # ESP-MQTT Configurations 604 | # 605 | CONFIG_MQTT_PROTOCOL_311=y 606 | CONFIG_MQTT_TRANSPORT_SSL=y 607 | CONFIG_MQTT_TRANSPORT_WEBSOCKET=y 608 | CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y 609 | CONFIG_MQTT_USE_CUSTOM_CONFIG= 610 | CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED= 611 | CONFIG_MQTT_CUSTOM_OUTBOX= 612 | 613 | # 614 | # NVS 615 | # 616 | 617 | # 618 | # OpenSSL 619 | # 620 | CONFIG_OPENSSL_DEBUG= 621 | CONFIG_OPENSSL_ASSERT_DO_NOTHING=y 622 | CONFIG_OPENSSL_ASSERT_EXIT= 623 | 624 | # 625 | # PThreads 626 | # 627 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 628 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 629 | CONFIG_PTHREAD_STACK_MIN=768 630 | 631 | # 632 | # SPI Flash driver 633 | # 634 | CONFIG_SPI_FLASH_VERIFY_WRITE= 635 | CONFIG_SPI_FLASH_ENABLE_COUNTERS= 636 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 637 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 638 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS= 639 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED= 640 | CONFIG_SPI_FLASH_YIELD_DURING_ERASE= 641 | 642 | # 643 | # SPIFFS Configuration 644 | # 645 | CONFIG_SPIFFS_MAX_PARTITIONS=3 646 | 647 | # 648 | # SPIFFS Cache Configuration 649 | # 650 | CONFIG_SPIFFS_CACHE=y 651 | CONFIG_SPIFFS_CACHE_WR=y 652 | CONFIG_SPIFFS_CACHE_STATS= 653 | CONFIG_SPIFFS_PAGE_CHECK=y 654 | CONFIG_SPIFFS_GC_MAX_RUNS=10 655 | CONFIG_SPIFFS_GC_STATS= 656 | CONFIG_SPIFFS_PAGE_SIZE=256 657 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 658 | CONFIG_SPIFFS_USE_MAGIC=y 659 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 660 | CONFIG_SPIFFS_META_LENGTH=4 661 | CONFIG_SPIFFS_USE_MTIME=y 662 | 663 | # 664 | # Debug Configuration 665 | # 666 | CONFIG_SPIFFS_DBG= 667 | CONFIG_SPIFFS_API_DBG= 668 | CONFIG_SPIFFS_GC_DBG= 669 | CONFIG_SPIFFS_CACHE_DBG= 670 | CONFIG_SPIFFS_CHECK_DBG= 671 | CONFIG_SPIFFS_TEST_VISUALISATION= 672 | 673 | # 674 | # TCP/IP Adapter 675 | # 676 | CONFIG_IP_LOST_TIMER_INTERVAL=120 677 | CONFIG_TCPIP_LWIP=y 678 | 679 | # 680 | # Virtual file system 681 | # 682 | CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y 683 | CONFIG_SUPPORT_TERMIOS=y 684 | 685 | # 686 | # Wear Levelling 687 | # 688 | CONFIG_WL_SECTOR_SIZE_512= 689 | CONFIG_WL_SECTOR_SIZE_4096=y 690 | CONFIG_WL_SECTOR_SIZE=4096 691 | --------------------------------------------------------------------------------