ESP32-S3-CAM 使用SPI-TFT_eSPI与ST7735S驱动通信,屏幕白屏问题解决方案

最近在准备毕设,需要使用屏幕,我使用ESP32-S3-CAM 作为核心开发板,使用SPI与ST7735S 驱动的1.8寸屏幕通信。弄了一天,屏幕一直白屏,串口监视器一直显示core1崩溃并重启。

开发环境:Arduino IDE 2.3.4
ESP32 开发板版本:3.0.6
TFT_eSPI 版本:2.5.34

版本太新了,后面可能有新的问题,建议降低版本。
最后偶然看到这篇文章

https://blog.csdn.net/raybbs/article/details/144473110

最后成功点亮屏幕,以下是TFT_eSPI的 User_Setup.h 配置内容,可以看情况更改参数

#define USER_SETUP_INFO "User_Setup"
// 此处解决无限重启问题
#define USE_HSPI_PORT 
#define ST7735_DRIVER 

#define TFT_RGB_ORDER TFT_RGB 
 #define TFT_WIDTH  128
  #define TFT_HEIGHT 160
   #define ST7735_REDTAB
#define TFT_MOSI 45
#define TFT_SCLK 3
#define TFT_CS   14  // Chip select control pin
#define TFT_DC   47  // Data Command control pin
#define TFT_RST  21  // Reset pin (could connect to Arduino RESET pin)
#define TFT_BL   0  // LED back-light (required for M5Stack)
#define LOAD_GLCD   // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2  // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4  // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6  // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7  // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8  // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT

#define SPI_FREQUENCY  20000000
//#define SPI_FREQUENCY  27000000
//#define SPI_FREQUENCY  40000000
// #define SPI_FREQUENCY  55000000 // STM32 SPI1 only (SPI2 maximum is 27MHz)
// #define SPI_FREQUENCY  80000000

// Optional reduced SPI frequency for reading TFT
#define SPI_READ_FREQUENCY  20000000

可能是库的版本冲突导致。
在这里插入图片描述

在这里插入图片描述

### eSPI Alert 1 技术文档故障排除 #### eSPI协议概述 Embedded Serial Peripheral Interface (eSPI) 是一种串行接口标准,旨在替代传统的LPC总线。该协议提供了更高效的数据传输机制以及更低功耗的操作模式。对于嵌入式系统而言,eSPI不仅简化了硬件设计还提高了性能。 #### eSPI Alert信号说明 Alert信号是eSPI规范中的一个重要特性之一,在主机和外设之间传递异步事件通知。当发生特定类型的错误或其他需要注意的情况时,设备会通过拉低ALERT#引脚来向控制器报告异常状况[^1]。 #### 常见原因分析及排查方法 针对ESP32使用TFT_eSPI库遇到的问题,可能触发eSPI Alert 1的原因有: - **内存访问冲突** 如果程序试图执行非法存储器操作(如越界读取/写入),可能会引起处理器内部保护机制启动并发送中断请求给外部组件,进而激活alert线路。 - **初始化配置不当** 不正确的参数设置可能导致显示屏无法正常工作甚至进入不稳定状态而频繁重启。例如,某些情况下SPI频率过高会影响数据稳定性和完整性,造成显示乱码或空白等问题[^2]。 - **电源管理问题** 确保供电电压处于制造商推荐范围内非常重要;不足的电流供应也可能引发类似的警报条件。 为了有效定位具体成因,建议采取如下措施逐步验证假设: - 检查代码逻辑是否存在潜在缺陷; - 调整相关寄存器值至合理区间内测试效果变化; - 排除外界干扰因素影响,比如重新连接所有物理连线确认接触良好等。 #### 实际案例解析 在处理ESP32-S3-CAM配合ST7735S显示器出现白屏现象的过程中发现,适当降低SPI波特率可以显著改善通讯质量从而解决问题。这表明有时简单的调整就能带来意想不到的好转。 另外值得注意的是,不同型号间可能存在细微差异,因此官方提供的最新版固件更新往往包含了对已知漏洞修复和支持新特性的增强功能,及时升级有助于获得更好的兼容性和稳定性表现[^3]。 ```cpp // 设置较低的SPI速度作为临时解决方案尝试 #define TFT_SPI_FREQUENCY 2000000UL // 将默认值改为2MHz试试看是否有改观 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值