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

涨知识
新冠肺炎

新型冠状病毒肺炎(Corona Virus Disease 2019,COVID-19),简称“新冠肺炎”,世界卫生组织命名为“2019冠状病毒病” [1-2] ,是指2019新型冠状病毒感染导致的肺炎。

评论:
相关文章
ESP32 使用DAC模拟输出完成两路呼吸灯

ESP32的DAC函数可以实现真正的模拟输出。


在 ESP32 上使用 LEDC (PWM)

ESP32 没有Arduino输出 PWM 的 analogWrite(pin, value) 方法,取而代之的 ESP32 有一个 LEDC 来实现PWM功能。


Micropython基于ESP32的多线程开发

本文学习如何使用ESP32开发板来进行多线程的开发。


MicroPython SPI类

MicroPython的SPI是一个用于进行串行外设接口总线协议的类。


ESP8266 Arduino WIFI

ESP8266有三种工作模式,分别为:AP,STA,AP混合STA

搜索
小鹏STEM教研服务

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