HiFi player project, first commit.
This commit is contained in:
commit
4126ea13a1
49 files changed
+6333
No files matched your search
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
****************************************************************************************************
|
||||
* @file spilcd.h
|
||||
* @author HiFi Player Project
|
||||
* @version V1.0
|
||||
* @date 2026-01-01
|
||||
* @brief SPI LCD(ST7789,320x240)驱动
|
||||
* @note 引脚与初始化流程参考正点原子 DNESP32S3 标准例程(10_spilcd / 30_music)
|
||||
****************************************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef __SPILCD_H
|
||||
#define __SPILCD_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "esp_err.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "esp_lcd_panel_io.h"
|
||||
#include "esp_lcd_panel_ops.h"
|
||||
#include "xl9555.h"
|
||||
|
||||
/* ---------------- 管脚声明 ---------------- */
|
||||
#define LCD_DC_PIN GPIO_NUM_40 /* LCD 数据/命令选择脚 */
|
||||
#define LCD_CS_PIN GPIO_NUM_21 /* LCD 片选脚 */
|
||||
#define LCD_HOST SPI2_HOST /* LCD 与 SD 卡共用 SPI2 */
|
||||
|
||||
/* 背光 / 复位 / 电源由 XL9555 扩展 IO 控制 */
|
||||
#define LCD_PWR(x) do { x ? xl9555_pin_write(SLCD_PWR_IO, 1) : xl9555_pin_write(SLCD_PWR_IO, 0); } while (0)
|
||||
#define LCD_RST(x) do { x ? xl9555_pin_write(SLCD_RST_IO, 1) : xl9555_pin_write(SLCD_RST_IO, 0); } while (0)
|
||||
#define LCD_BL(x) do { x ? xl9555_pin_write(LCD_BL_IO, 1) : xl9555_pin_write(LCD_BL_IO, 0); } while (0)
|
||||
|
||||
/* ---------------- 屏幕分辨率(横屏) ---------------- */
|
||||
#define SPI_LCD_H_RES 320
|
||||
#define SPI_LCD_V_RES 240
|
||||
|
||||
/* 面板句柄,LVGL 移植层需要用到 */
|
||||
extern esp_lcd_panel_handle_t panel_handle;
|
||||
|
||||
/**
|
||||
* @brief 初始化 SPI LCD(SPI 总线必须已由 my_spi_init() 初始化)
|
||||
* @retval ESP_OK 成功
|
||||
*/
|
||||
esp_err_t spilcd_init(void);
|
||||
|
||||
/**
|
||||
* @brief 设置屏幕方向
|
||||
* @param dir 0: 竖屏 1: 横屏
|
||||
*/
|
||||
void spilcd_display_dir(uint8_t dir);
|
||||
|
||||
/**
|
||||
* @brief 用单色清屏
|
||||
*/
|
||||
void spilcd_clear(uint16_t color);
|
||||
|
||||
/**
|
||||
* @brief 将一块 RGB565 图像数据刷到屏幕(阻塞,直到 SPI 传输完成)
|
||||
* @param x1,y1 左上角坐标(包含)
|
||||
* @param x2,y2 右下角坐标(不包含,即 x2-x1 为宽度)
|
||||
* @param data RGB565 像素数据,**按大端字节序存放**(高字节在前)。
|
||||
* 如果是 LVGL 的原生小端数据,需要在调用前自行做字节交换
|
||||
* (参考 lvgl_port.c 中 disp_flush_cb() 的实现)。
|
||||
* @note 该函数供 LVGL 的 flush_cb 调用,也可以在其它地方直接使用
|
||||
*/
|
||||
void spilcd_flush(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, const void *data);
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user