(六)Arduino系列:NodeMCU与Arduino进行SPI通信

释放双眼,带上耳机,听听看~!

介绍

串行外设接口(SPI)是最初由Motorola公司发起的总线接口连接协议。

  • SPI接口使用四条线进行通信。因此,它也被称为四线串行通信协议。
  • SPI是全双工主从通信协议。这意味着只有一个主设备和一个从设备可以同时在接口总线上通信。
  • SPI使能器件工作在SPI操作的两种基本模式,即SPI主模式和SPI从模式。
  • 主设备负责启动通信。主设备生成串行时钟以进行同步数据传输。主设备可以通过逐个选择来处理总线上的多个从设备。

基于NodeMCU的ESP8266具有硬件SPI,具有四个可用于SPI通信的引脚。通过这个SPI接口,我们可以将任何支持SPI的设备与NodeMCU连接,并与之建立通信。

ESP8266具有SPI引脚(SD1,CMD,SD0,CLK),专门用于与ESP-12E上的闪存进行Quad-SPI通信,因此不能用于SPI应用。我们可以将硬件SPI接口用于用户端应用程序。

下图显示了内部用于闪存的Quad SPI接口引脚。它包括四通道(4位数据总线),即四个(SDIO_DATA0 – SDIO_DATA3)双向(i / p和o / p)数据信号,具有同步时钟(SDIO_CLK)和片选引脚(SDIO_CMD)。它主要用于获得比双i / o(2位数据总线)接口更多的带宽/吞吐量。

NodeMCU SPI引脚

(六)Arduino系列:NodeMCU与Arduino进行SPI通信

NodeMCU SPI引脚

 

MISO(Master In Slave Out)

          主机接收数据,从机通过该引脚传输数据。

MOSI (Master Out Slave In)

          主机发送数据,从机通过该引脚接收数据。

SCLK(Serial Clock)

          Master为通信生成此时钟,由从机使用。

          只有主设备才能启动串行时钟。

CS (Chip Select)

          主机可以通过该引脚选择从机设备以开始与之通信。

 

让我们为NodeMCU编写SPI通信的Arduino程序。这里NodeMCU充当主设备,我们使用Arduino uno作为从设备。

在这个例子中,我们发送“Hello Slave”字符串,其中’\ n’作为NodeMCU Master设备的字符串结尾。从设备接收此字符串并将其打印在串行监视器上。

(六)Arduino系列:NodeMCU与Arduino进行SPI通信

NodeMCU Arduino SPI接口图

 

NodePU 主设备 SPI的Arduino程序

#include<SPI.h>

char buff[]="Hello Slave\n";

void setup() {
 Serial.begin(9600); /* begin serial with 9600 baud */
 SPI.begin();  /* begin SPI */
}

void loop() {
 for(inti=0; i<sizeof buff; i++)  /* transfer buff data per second */
  SPI.transfer(buff[i]);
 delay(1000);  
}

 

Arduino Uno从设备 SPI的Arduino程序

从设备输出结果

从主设备发送的从设备接收该输出。

(六)Arduino系列:NodeMCU与Arduino进行SPI通信

完整项目下载

给TA打赏
共{{data.count}}人
人已打赏
动态

(五)Arduino系列:NodeMCU GPIO定时器中断

2019-5-2 13:17:11

动态

(七)Arduino系列:NodeMCUI2C通信方法

2019-5-2 14:01:54

4 条回复 A文章作者 M管理员
  1. LZiHaN

    您好 为什么串口无法打印数据

    • Luca

      看看SPI线有没有接错哦,正常是可以出来数据的。

    • LZiHaN

      谢谢

    • LZiHaN

      您好 arduino给nodemcu发送就会报错 是不是只能arduino给nodemcu发数据

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
'); })();