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   阅读(362)   评论(0)
 标签: 创客 ESP32 SPI

涨知识
PID

PID控制算法是结合比例、积分和微分三种环节于一体的控制算法,它是连续系统中技术最为成熟、应用最为广泛的一种控制算法。

评论:
相关文章
在ESP32上实现WEB交互界面

本文主要介绍在未联网(AP热点)情况下实现WEB交互界面的CSS和javascript库。


Arduino ESP32获取芯片、RAM信息

本文介绍如何使用Arduino-ESP32库中的API函数获取ESP32的芯片、RAM信息等,并提供了一个示例程序代码。


ESP32 FreeRTOS 双核使用

ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。


ESP32 GPIO 矩阵和引脚多路复用

ESP32 芯片有34个物理GPIO管脚。每个GPIO管脚都可用作一个通用IO,或连接一个内部的外设信号。IO_MUX ¹、RTC IO MUX 和GPIO交换矩阵用于将信号从外设传输至GPIO管脚。


ESP32Encoder:高效的ESP32旋转编码器库

ESP32Encoder库是一个利用ESP32脉冲计数器硬件外设实现高效旋转编码器读取的软件库。


适合学习物联网的几款盒子

本文对比了几款适合物联网开发的盒子硬件参数,供大家参考。


乐动掌控

乐动掌控采用掌控板作为主控,塑胶一体式外壳,侧面和底面开具多个乐高扩展孔位,兼容乐高积木,可完成多种创意应用。


ESP32 MicroPython存储数据到闪存

在MicroPython的ESP32库中,NVS类用于管理非易失性存储,支持 32 位有符号整数和 二进制blob。


Arduino-ESP32 Preferences库使用详解

Arduino-ESP32项目提供的Preferences库是一个专为ESP32设计的非易失性存储解决方案,它替代了传统的Arduino EEPROM库,提供了更强大、更可靠的数据存储功能。


小鹏物联网 MicroPython 图像采集方案

本方案是一个基于ESP32-CAM + 物联网的图像采集方案。

搜索
小鹏STEM教研服务

专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。