#include "spi.h" #define SPI_HOST SPI2_HOST static const char *TAG = "SPI_2"; spi_device_handle_t lcd_spi; void spi_init() { ESP_LOGI(TAG, "初始化SPI IO总线"); esp_err_t ret; // 1. SPI 总线配置 spi_bus_config_t buscfg = { .miso_io_num = VSPI_MISO, // MISO 引脚 .mosi_io_num = VSPI_MOSI, // MOSI 引脚 .sclk_io_num = VSPI_SCLK, // 时钟引脚 .quadwp_io_num = -1, // 不使用 QWP .quadhd_io_num = -1, // 不使用 QHD .max_transfer_sz = 9600, // 最大传输大小 // .flags = 0, // .intr_flags = 0, }; // 2. 初始化 SPI 总线 ret = spi_bus_initialize(SPI_HOST, &buscfg, SPI_DMA_CH_AUTO); if (ret != ESP_OK) { ESP_LOGE(TAG, "IO总线初始化失败"); return; } ESP_LOGI(TAG, "SPI IO总线初始化成功"); ESP_LOGI(TAG, "SPI 设备配置"); spi_device_interface_config_t devcfg = { .command_bits = 0, // 无命令位 .address_bits = 0, // 无地址位 .dummy_bits = 0, .mode = 0, // SPI 模式 0 .clock_speed_hz = 80000000, // .spics_io_num = -1, .queue_size = 7, // 队列深度 .flags = SPI_DEVICE_NO_DUMMY, // 禁用 dummy 周期 .input_delay_ns = 0, .pre_cb = NULL, .post_cb = NULL, }; ret = spi_bus_add_device(SPI_HOST, &devcfg, &lcd_spi); if (ret != ESP_OK) { ESP_LOGE(TAG, "SPI 设备配置失败"); return; } }