0°

(九)Nodemcu的MircoPython之旅:SPI通信教程

简介

在本章中,我将解释如何在MicroPython板上使用SPI通信。

步骤一 材料准备

硬件准备:

软件准备:

步骤二 原理说明

串行外围接口(SPI)是一种通信总线,用于将一个或多个从外围集成电路(IC)连接到单个主SPI设备;通常是某种微控制器或微处理器。 NodeMCU板上的SPI可以在以下引脚上定义:

  • MOSI
  • MISO
  • SCK

您可以在SPI NodeMCU板上看到这些引脚,如下图所示:

(七)Nodemcu的MicroPython之旅:I2C(IIC)的使用方法
(七)Nodemcu的MicroPython之旅:I2C(IIC)的使用方法

我们可以将所有引脚用于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引脚

以下是接线图:

(九)Nodemcu的MircoPython之旅:SPI通信教程

步骤四 编写程序

首先,我们为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,这样我们就可以在串行监视器上看到它:

(九)Nodemcu的MircoPython之旅:SPI通信教程

将此程序保存为Arduino_spi。构建程序并将其上传到Arduino板。下一步是为Nodemcu板编写程序。创建一个名为spidemo.py的文件,然后编写这些程序:

已有3人支付

步骤五 验证结果

现在您可以使用WebREPL将MicroPython程序上传到MicroPython板。如果完成,您可以运行该命令:

>>> import spidemo
>>> spidemo.run()

你应该可以看到SPI收到的数据:

(九)Nodemcu的MircoPython之旅:SPI通信教程
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
STM8
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论