ESP32 SPI

ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。

一、简介

ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。
SPI0是专用于Flash的缓存,ESP32将连接的SPI Flash设备映射到内存中。
SPI1和SPI0 使用相同的硬件线,SPI1用于写入flash芯片。
HSPI和VSPI可以任意使用。
SPI1、HSPI和VSPI共有三条片选线,因此作为SPI主机允许ESP32 至多驱动三个SPI设备
1. HSPI和VSPI的接口及引脚
SPI名 MOSI MISO SCLK SS
VSPI 23 19 18 5
HSPI 13 12 14 15
2.SPI通讯流程如下:

ESP32 SPI

二、SPI相关函数

1.SPI初始化 :SPI.begin()
SPI.begin();
 SPI接口默认VSPI. 接口频率1 000 000, 数据默认采用MSBFIRST(低有效位优先), 时钟模式:SPI_MODE0(SCLK闲置为0, SCLK上升沿采样)


2. 设置数据在SPI上的传输方式 :SPI.setBitOrder(bitOrder);

SPI.setBitOrder(LSBFIRST);
参数:
bitOrder : 传输方式, 可选: LSBFIRST 低有效位先传 ; HSBFIRST 高有效位先传


3. 设置SPI频率 SPI.setFrequency(freq)

SPI.setFrequency(1000000);
参数:
freq 频率


4. 设置SPI的时钟模式 SPI.setDataMode(dataMode);

SPI.setDataMode(SPI_MODE0);
参数:
dataMode: 时钟模式, 可以取以下值
模式 说明
SPI_MODE0 SCLK闲置为低电平,上升沿采样(默认)
SPI_MODE1 SCLK闲置为低电平,下降沿采样
SPI_MODE2 SCLK闲置为高电平,上升沿采样
SPI_MODE3 SCLK闲置为高电平,下降沿采样


5. 按照setting的设置启动SPI通信: SPI.beginTransaction(setting);

 采用该函数,可以代替上面三个函数了.
SPI.beginTransaction(setting);
参数:
setting 设置. 是SPISettings类型的对象, 有_bitOrder ,_clock ,_dataMode 这三个属性. 

示例:

  setting1._bitOrder = LSBFIRST;
  setting1._clock = 1000000;
  setting1._dataMode = SPI_MODE0;
  SPI.beginTransaction(setting1);


6. 结束SPI通信 SPI.endTransaction();

SPI.endTransaction();
功能:结束SPI通信

7. 接收/发送一个字节的数据 SPI.transfer(data);
uint8_t SPIClass::transfer(uint8_t data) 
参数:
data: 要发送的数据
返回值: 接收到的数据
这里我们可以选择发送数据的长度,如下:
示例:
  SPI.transfer(0x01);
  SPI.transfer16(0x0102);
  SPI.transfer32(0x01020304);
 
  uint8_t byte1;
  uint16_t bytes2;
  uint32_t bytes3;
  byte1 = SPI.transfer();
  bytes2 = SPI.transfer16();
  bytes3 = SPI.transfer32();
- 本文内容来自网络,如有侵权,请联系本站处理。

2024-02   阅读(628)   评论(0)
 标签: 创客 ESP32 SPI

涨知识
串口

串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。

评论:
相关文章
【ESP32 C++教程】Unit2-2 Ws2812灯珠

本小节主要介绍Ws2812灯珠的使用、对父类进行扩展实现自定义功能,和指针向下强制转换的使用。


【ESP32 C++教程】Unit2-1 RGB三色LED

本小节主要介绍RGB三色LED的使用,以及多态的具体实现。


【ESP32 C++教程】Unit1-3 ESP32 Arduino 开发框架

ESP32 Arduino Framework是专门针对ESP32开发板的Arduino应用开发框架,为用户开发IOT应用、HMI应用提供一致的开发体验。


ESPConnect:基于浏览器的ESP32管理器

ESPConnect是一个基于现代浏览器的管理器,在你需要快速验证、调试、管理文件、检查状态的时候,它能帮你省下大量打开和切换重型工具的时间。


用ESP32做一个FM收音机

本文介绍两种使用TEA5767收音机模块实现FM收音机的方案,感兴趣的朋友可在此基础上实现更丰富的功能。


GPIOViewer:让ESP32引脚状态一览无余!

GPIOViewer 是一个强大的 Arduino 库,专门为 ESP32 芯片设计,可以实时监控 ESP32 芯片上的所有 GPIO 引脚状态。它可以帮助你快速直观地了解每个引脚的当前状态,例如高电平、低电平、输入、输出、中断等等。


ESP32 I2S音频:初识I2S通信与配置基础

在音频处理领域,I2S是一种广泛使用的通信协议,它专门用于芯片之间的音频数据传输。ESP32 作为一款高性能的微控制器,不仅支持 I2S 通信,还提供了强大的硬件接口和灵活的软件库,使其成为音频项目开发的理想选择。


小鹏物联网自动浇花套件

小鹏物联网智能浇花系统是照顾植物的好帮手,支持自动控制和手动控制两种模式,可通过电脑端和手机端查看数据和控制浇水。


ESP32 Arduino 开发框架

Arduino开发环境下适用于ESP32芯片系列开发板的应用开发框架。


【ESP32 C++教程】Unit1-2 C++类基础知识

本小节主要介绍C++ 类相关的基础知识,包括类的定义、继承、多态,范围作用域等。