【发布时间】:2021-03-20 13:53:10
【问题描述】:
我正在尝试从 SPI 发送数据,但无法正常工作。 SPI 端口(D12、13、14;用示波器检查)上没有数据,ESP32 似乎挂起。我想使用 HSPI 端口。
我还想知道是否需要一个特殊的 SPI 驱动程序才能在 ESP32 上运行,如果需要,我如何检查我是否已经拥有该驱动程序以及如何安装它。当我查看库管理器时,我没有看到特殊的 SPI 驱动程序。
我尝试过使用这个程序(复制自https://diyi0t.com/spi-tutorial-for-arduino-and-esp8266/)。它显然是为 esp8266 设计的。它是否也适用于 ESP32?
#include "SPI.h"
char buff[]="Hello Slave\n";
void setup() {
SPI.begin();
}
void loop() {
for(int i=0; i<sizeof buff; i++)
{
SPI.transfer(buff[i]);
}
delay(1000);
}
还有这个程序:
#include "SPI.h"
char buff[]="Hello Slave\n";
SPIClass SPI1(HSPI);
void setup() {
SPI1.begin();
SPI1.setClockDivider(80);
}
void loop() {
for(int i=0; i<sizeof buff; i++)
{
SPI1.transfer(buff[i]);
}
delay(1000);
}
我使用的是 30 针 ESP32 开发板,Arduino 版本 1.8.13。在偏好-->更多董事会经理中,它说:
http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://dl.espressif.com/dl/package_esp32_index.json
【问题讨论】:
-
ESP8266 和 ESP32 不兼容。确保您拥有 ESP32 版本的 Arduino 库(看起来您可能拥有 ESP8266 库),找到 SPI 通信的 ESP32 示例。
-
使用您的引脚来查看您的板上哪些是 MOSI/MISO/SCK 线并选择您自己的 CS,确保在传输/读取数据之前/之后将其设置为 LOW/HIGH。
-
看来 Tarmo 是正确的,我使用了错误的库。我用 ESP8266 替换了 ESP32 硬件,很快就让它工作了。