1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在尝试将 Adafruit 684 SPI OLED 模块与 ESP32-WROVER 模块结合使用。已经使用 Arduino UNO 证明了 OLED 和代码的功能(可从 Adafruit 获得有关此的指南),我转移到 ESP32 并更改了 ESP32 的 SPI 引脚代码中的引脚定义。我使用打印到串行监视器的基本草图确认这些是正确的引脚,每个 SPI 信号使用哪些引脚。
我无法从 VSPI 线路获得良好的通信,并且在 OLED 上显示损坏的数据。如果我使用 SW SPI 而不是 HW SPI 启动 OLED,我可以进行通信(例如 Adafruit_SSD1331 tft = Adafruit_SSD1331(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCK, TFT_RST);)。 我不完全理解为什么代码在移植到 ESP32 时不起作用,网上有很多其他人使用 ESP32 和相同库(TFT 驱动程序库、Adafruit_GFX.h 和 Adafruit_ImageReader.h)的例子,但没有问题其中提到进行任何更改。我觉得必须有一些设置元素才能让 SPI 在 ESP32 上工作,但在库中看不到任何明显的东西。 有没有其他人尝试使用 Adafruit 库使用 OLED 或 TFT 显示器?作为目标,我希望从 SD 卡中读取 .BMP 图像并将它们显示在 OLED 模块上。 请看下面我的代码,它是 BreakoutSSD1331.ino 示例的改编版本,它是 Adafruit_ImageReader 库的一部分: [Codebox]#include #include #include #include #include // 注释掉下一行以从 SPI/QSPI 闪存而不是 SD 卡加载: #define USE_SD_CARD // 颜色定义 #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF // TFT 显示器和 SD 卡共享硬件 SPI 接口,使用 // 每个“选择”引脚来识别总线上的活动设备。 #define TFT_CS 4 // TFT 选择引脚 #define TFT_RST -1 // 或设置为 -1 并连接到 Arduino RESET 引脚 #define TFT_DC 3 // TFT 显示/命令引脚 #define SD_CS 5 // SD 卡选择引脚 #define TFT_MOSI 23 #define TFT_MISO 19 #define TFT_SCK 18 #if defined(USE_SD_CARD) SdFat SD;// SD 卡文件系统 Adafruit_ImageReader reader(SD); // Image-reader 对象,传入 SD filesys #else // SPI 或 QSPI 闪存文件系统(即 CIRCUITPY 驱动器) #if defined(__SAMD51__) || 定义(NRF52840_XXAA) Adafruit_FlashTransport_QSPI flashTransport(PIN_QSPI_SCK,PIN_QSPI_CS, PIN_QSPI_IO0,PIN_QSPI_IO1,PIN_QSPI_IO2,PIN_QSPI_IO3); #else #if (SPI_INTERFACES_COUNT == 1) Adafruit_FlashTransport_SPI flashTransport(SS, &SPI); #else Adafruit_FlashTransport_SPI flashTransport(SS1, &SPI1); #endif #endif Adafruit_SPIFlash 闪存(&flashTransport); FatVolume 文件系统; Adafruit_ImageReader 阅读器(文件系统);// 图像读取器,传入闪存文件系统 #endif Adafruit_SSD1331 tft = Adafruit_SSD1331(&SPI, TFT_CS, TFT_DC, TFT_RST); 无效设置(无效){ ImageReturnCode统计;// 图像读取函数的状态 Serial.begin(115200); Serial.println(F("初始化屏幕")); tft.开始();// 初始化屏幕 // 填充屏幕蓝色。不是必需的步骤,这只是表明我们 // 成功地与屏幕通信。 Serial.println("填充屏幕蓝色"); tft.fillScreen(蓝色); Serial.println("屏幕填充完成"); // Adafruit_ImageReader 构造函数调用(上面,在 setup() 之前) // 接受未初始化的 SdFat 或 FatVolume 对象。这必须 // 在使用任何图像阅读器功能之前被初始化! Serial.print(F("正在初始化文件系统...")); // SD 卡非常简单,一次调用... if(!SD.begin(SD_CS, SD_SCK_MHZ(10))) { // 由于电线较长,分线需要 10 MHz 限制 Serial.println(F("SD begin () 失败的”)); 为了(;;); // 致命错误,不要继续 } Serial.println(F("OK!")); // 在位置 (0,0)(左上角)加载全屏 BMP 文件 'daffodil.bmp'。 // 注意 'reader' 对象以 'tft' 作为参数执行此操作。 Serial.print(F("正在将 daffodil.bmp 加载到屏幕...")); stat = reader.drawBMP("/daffodil.bmp", tft, 0, 0); reader.printStatus(统计);// 我们怎么样?[/Codebox] |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1936个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36437 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
5097 浏览 1 评论
6121 浏览 1 评论
6825 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4255 浏览 0 评论
656浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
646浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
648浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
738浏览 2评论
855浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 02:54 , Processed in 0.962084 second(s), Total 44, Slave 38 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号