目录
简介
在本章中,我将解释如何在MicroPython板上使用SPI通信。
步骤一 材料准备
硬件准备:
软件准备:
步骤二 原理说明
串行外围接口(SPI)是一种通信总线,用于将一个或多个从外围集成电路(IC)连接到单个主SPI设备;通常是某种微控制器或微处理器。 NodeMCU板上的SPI可以在以下引脚上定义:
- MOSI
- MISO
- SCK
您可以在SPI NodeMCU板上看到这些引脚,如下图所示:
我们可以将所有引脚用于SPI。要访问SPI,我们可以使用SPI库。在本章中,我使用Arduino UNO作为与Nodemcu板通信的SPI源。开始吧!
步骤三 电路搭建
为了测试,我使用Arduino板。接线如下:
- NodeMCU MOSI GPIO4(D2)引脚连接到Arduino MOSI(数字11)引脚
- NodeMCU MISO GPIO4(D3)引脚连接到Arduino MOSI(数字11)引脚
- NodeMCU SCLK GPIO5(D1)引脚连接到Arduino SCK(数字13)引脚
- NodeMCU GND引脚连接到Arduino GND引脚
以下是接线图:
步骤四 编写程序
首先,我们为Arduino编写程序。在Arduino IDE上编写这些代码:
Arduino程序:
#include <SPI.h>
char buf;
volatile byte pos;
volatile boolean isAvailable;
void setup() {
Serial.begin (9600); // for debugging
// SPI slave mode
SPCR |= bit (SPE);
SPCR |= _BV(SPIE);
isAvailable = false;
pos = 0;
pinMode(MISO, OUTPUT);
SPI.attachInterrupt();
}
ISR (SPI_STC_vect)
{
byte c = SPDR;
if (c > 64 && c < 91) {
buf = c;
isAvailable = true;
}
}
void loop() {
if (isAvailable) {
Serial.println (buf);
isAvailable = false;
}
}
该程序确实等待来自SPI主设备的输入数据,然后将接收的数据显示给Arduino Serial,这样我们就可以在串行监视器上看到它:
将此程序保存为Arduino_spi。构建程序并将其上传到Arduino板。下一步是为Nodemcu板编写程序。创建一个名为spidemo.py的文件,然后编写这些程序:
步骤五 验证结果
现在您可以使用WebREPL将MicroPython程序上传到MicroPython板。如果完成,您可以运行该命令:
>>> import spidemo
>>> spidemo.run()
你应该可以看到SPI收到的数据: