zoukankan      html  css  js  c++  java
  • SPI的学习和ESP8266的SPI通讯测试

    SPI简介:

    SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便。

    SPI的通信原理:

    它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是:

    SCLK, Serial Clock, 主要的作用是 Master 设备往 Slave 设备传输时钟信号, 控制数据交换的时机以及速率;

    SS/CS, Slave Select/Chip Select, 用于 Master 设备片选 Slave 设备, 使被选中的 Slave 设备能够被 Master 设备所访问;

    SDO/MOSI, Serial Data Output/Master Out Slave In, Master 上面也被称为 Tx-Channel, 作为数据的出口, 主要用于 SPI 设备发送数据;

    SDI/MISO, Serial Data Input/Master In Slave Out, Master 上面也被称为 Rx-Channel, 作为数据的入口, 主要用于SPI 设备接收数据;

    其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个SPI设备成为可能。另外SPI没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,你发一个数据必然会收到一个数据;你要收一个数据必须也要先发一个数据。

    SPI通信模式:

    4种不同的模式,不同的从设备可能在出厂是就是配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式,具体如下:

    Mode0CPOL=0CPHA=0

    Mode1CPOL=0CPHA=1

    Mode2CPOL=1CPHA=0

    Mode3CPOL=1CPHA=1

    时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA

    是用来配置数据采样是在第几个边沿:

    CPHA=0,表示第一个边沿:

    对于CPOL=0闲时是低电平,第一个边沿就是从低变到高,所以是上升沿;

    对于CPOL=1闲时的是高电平,第一个边沿就是从高变到低,所以是下降沿;

    CPHA=1,表示第二个边沿:

    对于CPOL=0闲时是低电平,第二个边沿就是从高变到低,所以是下降沿;

    对于CPOL=1闲时是高电平,第一个边沿就是从低变到高,所以是上升沿;

    另外SCLK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCLK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCLK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

    基于ESP8266SPI通讯测试:

    硬件接口:

    | Signal              | Slave      | Master |

    | ------------------- | ----------- | ---------- |

    | SCLK              | GPIO14 | GPIO14 |

    | MISO              | GPIO12 | GPIO12 |

    | MOSI              | GPIO13 | GPIO13 |

    | CS                  | GPIO15 | GPIO15 |

    | HANDSHARK | GPIO4  | GPIO4   |

    | GND               | GND    | GND        |

    利用官方提供的例子,准备两个ESP8266芯片,一个烧录主机程序,一个烧录从机程序:

     

    对数据进行监视:

     完成ESP8266SPI通讯测试。

  • 相关阅读:
    推自己的镜像到网易云
    supervisord常见问题
    supervisord的配置
    一文解读SDN (转)
    一文解读ZooKeeper (转)
    使用 Docker 和 Nginx 打造高性能的二维码服务 (转)
    一文解读Docker (转)
    一文解读分布式架构 (转)
    一文解读分布式事务 (转)
    一文读懂工业大数据 (转)
  • 原文地址:https://www.cnblogs.com/fcchen/p/12933748.html
Copyright © 2011-2022 走看看