arduinoesp32使用hspi和vspi接口挂载sd卡区别(代码片段)

perseverance52 perseverance52     2023-02-20     541

关键词:

Arduino ESP32 使用HSPI和VSPI接口挂载SD卡区别


在挂载SD卡时,ESP32使用HSPI和VSPI接口挂载SD卡区别

如果使用hard SPI(HSPI)接口需要注意以下几点:

  1. 烧写程序前先断开SD卡供电,否则无法进行程序烧录。
  2. 并且SD卡需要在复位或重启后再给SD卡供电。否则ESP32会无限重启。

如果使用soft SPI(VSPI)接口不存在以上问题。

不定义SPI引脚直接使用SD.begin();进行初始化时,默认是VSPI接口。



  • 以上为验证开发板和SD卡槽模块。

   if(!SD.begin())
    Serial.println("存储卡挂载失败");
    return;
  

接线说明

HSPI接口接线方式:

		HSPI 
[ESP32 IO26 – CS MICRO SD]
[ESP32 IO14 – MOSI MICRO SD]
[ESP32 IO13 – MISO MICRO SD]
[ESP32 IO27 – SCK MICRO SD]
[ESP32 GND – GND MICRO SD]
[VIN – VCC MICRO SD]


VSPI接口接线方式:

    		VSPI
 * MICROSD CS    -    ESP32 IO5
  MICROSD SCK   -     ESP32 IO18
  MICROSD MOSI  -    ESP32 IO23
  MICROSD MISO   -   ESP32 IO19
  MICROSD Vcc   -      ESP32 VIN
  MICROSD GND   -    ESP32 GND

兼容两种模式下的挂载的示例程序程序

根据不同的需求请对应的宏定义即可。

/*
 如果使用hard SPI(HSPI)接口需要注意以下几点:
 1.烧写程序前先断开SD卡供电,否则无法进行程序烧录。
 2.并且SD卡需要在复位或重启后再给SD卡供电。否则ESP32会无限重启。
 如果使用soft SPI(VSPI)接口不存在以上问题。
 不定义SPI引脚直接使用SD.begin();默认是VSPI接口。
*/

#include <Arduino.h>
//引用SD相关库
#include <SD.h>
#include <FS.h>
#include <SPI.h>
//HSPI接口和VSPI接口二选一
//#define  hspi
#define  vspi
#ifdef vspi
SPIClass sdSPI(VSPI);
#define SD_MISO     19
#define SD_MOSI     23
#define SD_SCLK     18
#define SD_CS       5

#else
SPIClass sdSPI(HSPI);
#define SD_MISO     12
#define SD_MOSI     13
#define SD_SCLK     14
#define SD_CS       15

#endif
void SD_init();
 
void setup()

  Serial.begin(115200);
  delay(500);
#ifdef  hspi 
  Serial.println("请插入内存卡");
  delay(12000);
#endif 
  SD_init();//初始化SD函数


 
void loop() 
  //打印存储卡信息
  Serial.printf("存储卡总大小是: %lluMB \\n", SD.cardSize() / (1024 * 1024)); // "/ (1024 * 1024)"可以换成">> 20"
  Serial.printf("文件系统总大小是: %lluB \\n", SD.totalBytes());
  Serial.printf("文件系统已用大小是: %lluB \\n", SD.usedBytes());
  delay(5000);

 
 
void SD_init() 
  //挂载文件系统
   sdSPI.begin(SD_SCLK, SD_MISO, SD_MOSI, SD_CS);
  if (!SD.begin(SD_CS, sdSPI))
  
    // if(!SD.begin())
    Serial.println("存储卡挂载失败");
    return;
  
  uint8_t cardType = SD.cardType();
 
  if (cardType == CARD_NONE)
  
    Serial.println("未连接存储卡");
    return;
  
  else if (cardType == CARD_MMC)
  
    Serial.println("挂载了MMC卡");
  
  else if (cardType == CARD_SD)
  
    Serial.println("挂载了SDSC卡");
  
  else if (cardType == CARD_SDHC)
  
    Serial.println("挂载了SDHC卡");
  
  else
  
    Serial.println("挂载了未知存储卡");
  

如何使用arduinoesp32将数据存储到microsd(软spi和硬spi)(代码片段)

如何使用ArduinoESP32将数据存储到MicroSD(软SPI和硬SPI)主要针对使用这个库:github地址:https://github.com/nhatuan84/esp32-micro-sdcard如果网页无法加载,将域名改为镜像地址的例如:https://hub.fastgit.org/nhatuan84/esp32-micro-sdcard该... 查看详情

arduinoesp32sd卡读写实例(代码片段)

ArduinoESP32SD卡读写实例Arduino官方文档参考:https://www.arduino.cc/en/Reference/SDSD卡硬件连接方式ESP32有两种使用SD卡的方法,一种是使用SPI接口访问SD卡,另一种是使用SDMMC接口访问SD卡。ArduinocorefortheESP32中SPI方式占用4个IO口... 查看详情

arduinoesp32第三方库读取sd卡信息(代码片段)

ArduinoESP32第三方库读取SD卡信息(三)相关篇《ArduinoESP32第三方库读取SD卡信息(一)》《ArduinoESP32第三方库读取SD卡信息(二)》所需库github地址:https://github.com/nhatuan84/esp32-micro-sdcard如果网页无法加... 查看详情

arduinoesp32第三方库读取sd卡信息(代码片段)

ArduinoESP32第三方库读取SD卡信息(二)相关篇《ArduinoESP32第三方库读取SD卡信息(一)》所需库github地址:https://github.com/nhatuan84/esp32-micro-sdcard如果网页无法加载,将域名改为镜像地址的例如:https://hub.f... 查看详情

arduinoesp32第三方库读取sd卡信息(代码片段)

ArduinoESP32第三方库读取SD卡信息所需库github地址:https://github.com/nhatuan84/esp32-micro-sdcard如果网页无法加载,将域名改为镜像地址的例如:https://hub.fastgit.org/nhatuan84/esp32-micro-sdcard该库支持软SPI接口和硬SPI接口.如果使用硬... 查看详情

arduinoesp32通过getstring方法获取网络时间和气象数据(代码片段)

ArduinoESP32-通过getString方法获取网络时间和气象数据国家气象数据API接口:http://www.weather.com.cn/data/sk/101010100.html全国城市代码:全国各城市代码如下:北京:101010100朝阳:101010300顺义:101010400怀柔:101010500通州:101010600昌平:10 查看详情

arduinoesp32定时器功能使用(代码片段)

ArduinoESP32定时器功能使用ESP32硬件定时器介绍ESP32芯片包含两个硬件定时器组。每组有两个通用硬件定时器。它们都是基于16位预分频器和64位自动重载功能的向上/向下计数器的64位通用定时器。初始化(开启)定时器timerB... 查看详情

arduinoesp32使用外部中断(代码片段)

ArduinoESP32使用外部中断ESP32支持库版本:3.0.1esp32型号:esp32DevModule实例程序//togglesLEDwheninterruptpinchangesstateintled=2;//板载led灯volatileintstate=LOW;constbyteinterruptPin_0=25;//设置中断的目标 查看详情

arduinoesp8266/esp32读取和改写mac(代码片段)

ArduinoESP8266/ESP32读取和改写MACESP8266/ESP32读取MAC示例代码/*读取MAC*/#ifdefESP32#include<WiFi.h>#else#include<ESP8266WiFi.h> 查看详情

arduinoesp32获取网络数据(httppost方式)(代码片段)

ArduinoESP32获取网络数据(HTTPPOST方式)相关篇《ArduinoESP32获取网络数据(HTTPGET方式)》《ArduinoESP32获取网络数据(HTTPGET方式)》《ArduinoESP32获取网络数据(HTTPPATCH方式)》《ArduinoESP32获取网络数据(HTTPPUT方式)》客户端与服务器通讯时最常被... 查看详情

arduinoesp32深度睡眠与外部唤醒(ext0)(代码片段)

ArduinoESP32深度睡眠与外部唤醒(EXT0)使用10K下拉电阻连接到按钮GPIO4和GND之间,防止其他杂波信号干扰,在3.3V和GPIO4之间接按键,用来触发EXT0,接线示意图:实例代码/*深度睡眠与外部唤醒(这里... 查看详情

arduinoesp32:使用ledcwrite函数淡入淡出led(代码片段)

ArduinoESP32:使用ledcWrite函数淡入淡出LED使用ledcWrite函数淡入淡出LED实例代码/*使用ledcWrite函数淡入淡出LED接线说明:LED引脚==>D18*///使用16个通道中的第一个通道(从零开始)#defineLEDC_CHANNEL_00//为LEDC定时器使用13... 查看详情

stm32hal库怎么使用spi的发送和接收函数

参考技术Acmd[0]=0x9F;if(HAL_SPI_Transmit(&hspi1,cmd,1,1000)==HAL_OK)if(HAL_SPI_Receive(&hspi1,data,5,1000)==HAL_OK)本回答被提问者采纳 查看详情

arduinoesp32获取网络数据(httpget方式)(代码片段)

ArduinoESP32获取网络数据(HTTPGET方式)相关篇《ArduinoESP32获取网络数据(HTTPPOST方式)》《ArduinoESP32获取网络数据(HTTPPATCH方式)》《ArduinoESP32获取网络数据(HTTPPUT方式)》本实例介绍,ESP32通过联网,访问指定服务器网站,获取... 查看详情

arduinoesp32通过pwm控制无源蜂鸣器(代码片段)

ArduinoESP32通过PWM控制无源蜂鸣器相关篇《ESP32在Arduino开发环境中的PWM的使用方法》ESP32通过PWM控制无源蜂鸣器发出声音。有源和无源蜂鸣器知识科普有源和无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂... 查看详情

arduinoesp32web网页控制rgb灯(代码片段)

ArduinoESP32Web网页控制RGB灯ESP32LEDPWM控制器具有16个独立通道,可配置为生成具有不同属性的PWM信号。我们可以使用ESP32的LEDPWM控制器和零知开发工具对LED进行调光。连线:1、红色引脚连接到ESP32的GPIO252、绿色引脚连接到ESP3... 查看详情

arduinoesp32adc模拟量信号读取(代码片段)

ArduinoESP32ADC模拟量信号读取这篇文章展示如何使用ArduinoIDE读取与ESP32模拟输入。模拟读数对于读出可变电阻(如电位器或模拟传感器)的值很有用。使用ESP32读取模拟输入就像使用analogRead(GPIO)函数一样简单,它接受要读取的GPIO... 查看详情

arduinoesp32获取网络数据(httppatch方式)(代码片段)

ArduinoESP32获取网络数据(HTTPPATCH方式)相关篇《ArduinoESP32获取网络数据(HTTPPOST方式)》《ArduinoESP32获取网络数据(HTTPGET方式)》《》《》本实例通过PATCH方式请求获取网络数据。不需要要额外库,全部使用自带固件的库访问对象ÿ... 查看详情