Files
P4-USB-transfer/main/config.h
T
zhengxinandCursor 851e347cf5 初始提交卡包 USB 工程
纳入固件源码、屏幕组件、nand_xfer 工具和文档。忽略本机构建产物、sdkconfig,以及含本机路径的依赖锁。

Co-authored-by: Cursor <[email protected]>
2026-10-13 21:54:50 +08:00

215 lines
7.5 KiB
C

#include <stdio.h>
#include <unistd.h>
#include <sys/lock.h>
#include <sys/param.h>
#include <string.h>
#include <math.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "freertos/semphr.h"
#include "freertos/event_groups.h"
#include "driver/gpio.h"
// #include "driver/i2c.h"
// #include "driver/i2c_master.h"
#include "driver/spi_master.h"
#include "esp_timer.h"
#include "esp_lcd_panel_io.h"
#include "esp_lcd_panel_vendor.h"
#include "esp_lcd_panel_ops.h"
#include "esp_err.h"
#include "esp_log.h"
#include "lvgl.h"
#include "lv_demos.h"
#include "esp_lcd_qspi_amoled.h"
#include "esp_spiffs.h"
#include "sys/stat.h"
#include "driver/i2s.h"
#include "esp_afe_sr_models.h"
#include "esp_websocket_client.h"
#include "esp_mn_speech_commands.h"
#include "esp_mn_iface.h"
#include "esp_wn_iface.h"
#include "esp_wn_models.h"
#include "model_path.h"
#include "esp_mn_models.h"
#include "nvs_flash.h"
#include "esp_system.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "esp_mac.h"
// #include "BluFi.h"
// #include "WebSocket.h"
#include "FLASH/flash.h"
#include "OTA/ota_upgrade.h"
#include "MQTT/mqtt.h"
#include "cjson.h"
#include "miniz.h"
#include "MOTOR/motor.h"
#include "ZIP_EXTRACTOR/zip_extractor.h"
#include "SC7U22/SC7U22.h"
#include "event.h"
#include "esp_random.h"
#include "ES7243E/ES7243E.h"
// static const char *TAG = "example";
// 使用独特的TAG名称,避免冲突
extern const char *TAG_MAIN;
extern esp_lcd_panel_handle_t panel_handle;
#define LV_MEM_CUSTOM 1
#define LV_MEM_CUSTOM_INCLUDE "esp_heap_caps.h"
#define LV_MEM_CUSTOM_ALLOC(size) heap_caps_malloc(size, MALLOC_CAP_SPIRAM)
#define LV_MEM_CUSTOM_FREE(ptr) heap_caps_free(ptr)
#define LV_MEM_CUSTOM_REALLOC(ptr, size) heap_caps_realloc(ptr, size, MALLOC_CAP_SPIRAM)
#define LOTTIE_ANIM_WIDTH 516
#define LOTTIE_ANIM_HEIGHT 410
// #define LOTTIE_ANIM_WIDTH 200
// #define LOTTIE_ANIM_HEIGHT 200
#define EXAMPLE_LVGL_TASK_PRIORITY 7
#define FEED_TASK_PRIORITY 4
#define DETECT_TASK_PRIORITY 5
#define CHANGE_TASK_PRIORITY 7 //7
#define MAIN_TASK_PRIORITY 8 //5
#define BMI_TASK_PRIORITY 8
#define NST112_TASK_PRIORITY 8
#define MS523_TASK_PRIORITY 8
#define PET_TASK_PRIORITY 8
#define HOUR_WRITE_TASK_PRIORITY 8
// #define LVGL_TASK_STACK_SIZE (40 * 1024)
// #define FEED_TASK_STACK_SIZE (8 * 1024)
// #define DETECT_TASK_STACK_SIZE (8 * 1024)
// #define CHANGE_TASK_STACK_SIZE (30 * 1024)
// #define MAIN_TASK_STACK_SIZE (8 * 1024)
// #define BMI_TASK_STACK_SIZE (8192)
#define LVGL_TASK_STACK_SIZE (40 * 1024)
#define FEED_TASK_STACK_SIZE (16 * 1024)
#define DETECT_TASK_STACK_SIZE (32 * 1024)
#define CHANGE_TASK_STACK_SIZE (50 * 1024) //30 * 1024
#define MAIN_TASK_STACK_SIZE (16 * 1024)
#define BMI_TASK_STACK_SIZE (8192)
#define NST112_TASK_STACK_SIZE (8192)
#define MS523_TASK_STACK_SIZE (8192)
#define PET_TASK_STACK_SIZE (4096)
#define HOUR_WRITE_STACK_SIZE (4096)
#define LCD_HOST SPI2_HOST
// #define TOUCH_HOST I2C_NUM_1
#define TOUCH_HOST I2C_NUM_0
#if LV_COLOR_DEPTH == 16
#define LCD_BIT_PER_PIXEL (16)
#define LV_COLOR_FORMAT LV_COLOR_FORMAT_RGB565
#define LCD_RGB_ELEMENT_ORDER LCD_RGB_ELEMENT_ORDER_RGB
#elif LV_COLOR_DEPTH == 24
#define LCD_BIT_PER_PIXEL (24)
#define LV_COLOR_FORMAT LV_COLOR_FORMAT_RGB888
#define LCD_RGB_ELEMENT_ORDER LCD_RGB_ELEMENT_ORDER_BGR
#endif
#define EXAMPLE_USE_TOUCH 1 //开启或者关闭触摸
extern esp_lcd_panel_handle_t panel_handle;
extern esp_lcd_panel_io_handle_t io_handle;
#define CST816_ID 1
#define CST820_ID 2
#define CHSC6417_ID 3
#define EXAMPLE_LVGL_TICK_PERIOD_MS 2
#define EXAMPLE_LVGL_TASK_MAX_DELAY_MS 500
#define EXAMPLE_LVGL_TASK_MIN_DELAY_MS 1
#define EXAMPLE_LVGL_TASK_STACK_SIZE (4 * 1024 * 2)
#define AM196Q410502LK_196_410x502 1
#define AM178Q368448LK_178_368x448 2
#define AM151Q466466LK_151_466x466_C 3
#define AM160Q480480LK_160_480x480_C 4
#define AM201Q240296LK_201_240x296 5
#define AM200Q460460LK_200_460x460 6
#define AM160Q320360ZS_160_320x360 7
#define AM119Q390390FLS2_119_390x390 8
#define AM165Q348442FLS_165_348x442 9
#define CURRENT_SCREEN_SIZE AM196Q410502LK_196_410x502
#if CURRENT_SCREEN_SIZE == AM196Q410502LK_196_410x502
// #define EXAMPLE_PIN_NUM_LCD_CS (GPIO_NUM_40)
// #define EXAMPLE_PIN_NUM_LCD_PCLK (GPIO_NUM_21)
// #define EXAMPLE_PIN_NUM_LCD_DATA0 (GPIO_NUM_47)
// #define EXAMPLE_PIN_NUM_LCD_DATA1 (GPIO_NUM_45)
// #define EXAMPLE_PIN_NUM_LCD_DATA2 (GPIO_NUM_38)
// #define EXAMPLE_PIN_NUM_LCD_DATA3 (GPIO_NUM_39)
// #define EXAMPLE_PIN_NUM_LCD_RST (GPIO_NUM_41)
// #define EXAMPLE_PIN_NUM_LCD_CS (GPIO_NUM_8)
// #define EXAMPLE_PIN_NUM_LCD_PCLK (GPIO_NUM_3)
// #define EXAMPLE_PIN_NUM_LCD_DATA0 (GPIO_NUM_9)
// #define EXAMPLE_PIN_NUM_LCD_DATA1 (GPIO_NUM_46)
// #define EXAMPLE_PIN_NUM_LCD_DATA2 (GPIO_NUM_16)
// #define EXAMPLE_PIN_NUM_LCD_DATA3 (GPIO_NUM_15)
// #define EXAMPLE_PIN_NUM_LCD_RST (GPIO_NUM_17)
// #define EXAMPLE_PIN_NUM_LCD_TE (GPIO_NUM_18)
//#define EXAMPLE_PIN_NUM_LCD_CS (GPIO_NUM_7)
//#define EXAMPLE_PIN_NUM_LCD_PCLK (GPIO_NUM_1)
//#define EXAMPLE_PIN_NUM_LCD_DATA0 (GPIO_NUM_8)
//#define EXAMPLE_PIN_NUM_LCD_DATA1 (GPIO_NUM_10)
//#define EXAMPLE_PIN_NUM_LCD_DATA2 (GPIO_NUM_11)
//#define EXAMPLE_PIN_NUM_LCD_DATA3 (GPIO_NUM_6)
//#define EXAMPLE_PIN_NUM_LCD_RST (GPIO_NUM_20)
//#define EXAMPLE_PIN_NUM_LCD_TE (GPIO_NUM_21)
#define EXAMPLE_PIN_NUM_LCD_CS (GPIO_NUM_7)
#define EXAMPLE_PIN_NUM_LCD_PCLK (GPIO_NUM_9)
#define EXAMPLE_PIN_NUM_LCD_DATA0 (GPIO_NUM_8) //8
#define EXAMPLE_PIN_NUM_LCD_DATA1 (GPIO_NUM_10) //11
#define EXAMPLE_PIN_NUM_LCD_DATA2 (GPIO_NUM_11)
#define EXAMPLE_PIN_NUM_LCD_DATA3 (GPIO_NUM_6)
#define EXAMPLE_PIN_NUM_LCD_RST (GPIO_NUM_4)
#define EXAMPLE_PIN_NUM_LCD_TE (GPIO_NUM_5)
#define EXAMPLE_PIN_NUM_TOUCH_SCL (GPIO_NUM_51)
#define EXAMPLE_PIN_NUM_TOUCH_SDA (GPIO_NUM_50)
#define EXAMPLE_PIN_NUM_TOUCH_RST (GPIO_NUM_0)
#define EXAMPLE_PIN_NUM_TOUCH_INT (GPIO_NUM_1)
#define EXAMPLE_LCD_H_RES 410
#define EXAMPLE_LCD_V_RES 502
// #define EXAMPLE_LCD_H_RES 310
// #define EXAMPLE_LCD_V_RES 402
#define EXAMPLE_LCD_X_GAP 0
#define EXAMPLE_LCD_Y_GAP 22
#define EXAMPLE_TOUCH_MIRROR_X false
#define EXAMPLE_TOUCH_MIRROR_Y false
#define TOUCH_IC_CONFIG CST820_ID
#define AMOLED_QSPI_MODE 0
#define AMOLED_QSPI_MAX_PCLK 20 * 1000 * 1000
#define EXAMPLE_LVGL_BUF_HEIGHT (EXAMPLE_LCD_V_RES / 15)
#endif
#if TOUCH_IC_CONFIG == CST816_ID
#include "esp_lcd_touch_cst816.h"
#define TOUCH_IO_I2C_CONFIG ESP_LCD_TOUCH_IO_I2C_CST816_CONFIG
#define esp_lcd_touch_new_i2c esp_lcd_touch_new_i2c_cst816
#elif TOUCH_IC_CONFIG == CST820_ID
#include "esp_lcd_touch_cst820.h"
#define TOUCH_IO_I2C_CONFIG ESP_LCD_TOUCH_IO_I2C_CST820_CONFIG
#define esp_lcd_touch_new_i2c esp_lcd_touch_new_i2c_cst820
#elif TOUCH_IC_CONFIG == CHSC6417_ID
#include "esp_lcd_touch_chsc6417.h"
#define TOUCH_IO_I2C_CONFIG ESP_LCD_TOUCH_IO_I2C_CHSC6417_CONFIG
#define esp_lcd_touch_new_i2c esp_lcd_touch_new_i2c_chsc6417
#endif
extern esp_lcd_touch_handle_t tp;