首页 » 科学 » Arduino模块连接多个 SPI 设备_引脚_草图

Arduino模块连接多个 SPI 设备_引脚_草图

落叶飘零 2024-11-19 06:39:11 0

扫一扫用手机浏览

文章目录 [+]

你想连接多个 SPI 设备。

办理方案

Arduino模块连接多个 SPI 设备_引脚_草图 科学

下面的代码利用 SD 卡读卡器从 SD 卡加载位图图像。
这些图像会显示在 TFT 显示屏上。
两个设备都是 SPI 设备。
图 13-8 显示了连接办法:

/两个 SPI 设备的示例代码从连接的 SD 卡中加载所有位图并在 TFT 屏幕上显示它们。
/#include <Adafruit_GFX.h>#include <Adafruit_ILI9341.h>#include <SdFat.h>#include <Adafruit_ImageReader.h>#define SD_CS 4 // SD 读卡器的片选引脚#define TFT_CS 10 // TFT 显示屏的片选引脚#define TFT_DC 9 // TFT 显示屏的数据/命令引脚#define TFT_RST 8 // TFT 显示屏的复位引脚// 为每个 SPI 设备创建工具SdFat SD;Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);SdFile root; // SD 卡的根目录Adafruit_ImageReader reader(SD); // 加载和显示图像的工具void setup(void){ Serial.begin(9600); if (!SD.begin(SD_CS, SD_SCK_MHZ(25))) // 以 25MHz 的速率启动 SD 卡读卡器 { Serial.println("Could not initialize SD card"); while (1) ; // 停滞运行 } tft.begin(); // 初始化 TFT 显示屏 if (!root.open("/")) { Serial.println("Could not read SD card directory"); while (1) ; // 停滞运行 }}void loop(){ ImageReturnCode rc; // 图像操作的返回代码 SdFile file; // 当前文件 char filename[256]; // 存储文件名的缓冲区 while (file.openNext(&root, O_RDONLY)) // 找到 SD 卡上的下一个文件 { file.getName(filename, sizeof(filename) / sizeof(filename[0])); if (isBMP(filename)) // 如果是 BMP 文件,则在 TFT 显示屏上显示 { tft.fillScreen(0); rc = reader.drawBMP(filename, tft, 0, 0); delay(2000); // 停息 2 秒 } file.close(); } root.rewind(); // 回到根目录中的第一个文件}// 判断文件是否为位图(BMP)文件int isBMP(char fname[]){ String fn = String(fname); fn.toLowerCase(); return fn.endsWith("bmp");}

SPI连接用于SD卡读卡器和LCD面板

谈论

该办理方案利用了基于ILI9341的TFT LCD显示屏和一个SD卡读卡器扩展板,它们都是SPI设备。
你可以从各种供应商那里找到这两种设备。
在某些情形下,例如Adafruit 1480型号,microSD卡读卡器被包含在TFT显示屏扩展板上。
在这种情形下,你将少连接一些引脚,由于LCD和SD卡扩展板共享MISO、MOSI、SCK、GND和VIN引脚。

办理方案利用了几个库,你须要安装它们。
通过Arduino库管理器安装Adafruit GFX、Adafruit ILI9341和Adafruit ImageReader库。
虽然Arduino IDE包含了自己的SD卡库,但卖力从卡中加载图像的Adafruit ImageReader库利用了Bill Greiman的SdFat库的修正版,你可以在库管理器中搜索“SdFat - Adafruit Fork”找到它。

SD卡读卡器有各种不同的形式。
最大略的形式,比如SparkFun BOB-12941,是一个焊接在一个分立板上的SD卡连接器。
这是由于SD卡本身可以作为SPI设备运行(在紧急情形下,您乃至可以直接将电线焊接到SD卡上)。
这种类型的读卡器只能以3.3V运行。
一些SD卡读卡器,比如Adafruit部件号254,包括电平转换器,因此您可以用5V电源供电,并将5V逻辑引脚连接到它们。

在I2C中,每个设备都有一个唯一的地址。
在SPI中,每个设备都有一个芯片选择(CS)线,库利用它来表示它要与该设备通信。
在草图中,引脚4用作SD卡的片选线,引脚10用于TFT LCD显示器。
Adafruit_ILI9341库还利用数据/命令引脚与显示器进行通信。

草图设置了许多工具:一个表示SD卡的工具,一个用于TFT显示器的工具,另一个表示卡上文件系统的根目录的工具,以及一个用于加载和显示图像的工具。
在setup函数中,草图初始化SD卡读卡器和TFT显示器,然后打开根目录以进行读取。
在loop中,草图调用openNext()以获取下一个文件,并利用isBMP()函数来决定文件是否为位图。
如果是,则草图在停息并移动到下一个之前在屏幕上显示位图。

位图图像必须保存为未压缩的BMP文件,24位色,否则草图将无法加载这些图像。

相关文章

我国芯片最强的三个公司_芯片_华为

1.中芯国际(SMIC):中芯国际是我国最大的集成电路制造商,成立于2000年,总部位于上海。该公司致力于集成电路芯片的研发与生产...

科学 2025-01-23 阅读0 评论0