Quantcast
Channel: Tutorials – lucadentella.it
Viewing all articles
Browse latest Browse all 84

esp32 Arduino: SD card con pin custom

$
0
0

Il core Arduino per il chip esp32 include due librerie per la gestione di SD card:

Questo perché – come indicato nel datasheet – il chip esp32 è dotato di un host controller dedicato per SD/SDIO/MMC, in aggiunta a quello “generico” SPI.

Se adottiamo la libreria SD_MMC utilizzeremo quindi tale host controller, mentre se adottiamo la libreria SD utilizzeremo il controller SPI.

Il chip esp32-s2 non è dotato di un host controller MMC: per interfacciare tale chip a una scheda SD è quindi necessario utilizzare il controller SPI e quindi la libreria SD.

Entrambe le librerie definiscono, per i vari segnali, dei pin standard.

Una delle potenzialità del chip esp32 è però quella di poter mappare le periferiche su diversi pin. In questo breve tutorial vi mostrerò come indicare alla libreria SD quali pin vogliamo utilizzare.

Il chip mette a disposizione due interfacce SPI:

  • HSPI
  • VSPI

Per prima cosa dobbiamo definire una istanza della classe SPIClass, indicando quale interfaccia vogliamo utilizzare:

vspi = new SPIClass(VSPI);
hspi = new SPIClass(HSPI);

Il metodo begin ci consente di indicare i pin da utilizzare per i diversi segnali:

vspi->begin(SCLK, MISO, MOSI, SS);

Se ad esempio vogliamo usare l’interfaccia HSPI con i pin 2-13-14-15 scriviamo:

#define HSPI_MISO   2
#define HSPI_MOSI   15
#define HSPI_SCLK   14
#define HSPI_SS     13

SPIClass *spi = NULL;

spi = new SPIClass(HSPI);
spi->begin(HSPI_SCLK, HSPI_MISO, HSPI_MOSI, HSPI_SS);

Infine indichiamo alla libreria SD quale istanza SPIClass utilizzare e quale pin di chip select:

SD.begin(HSPI_SS, *spi)

Possiamo ora usare i diversi metodi della libreria come al solito, ad esempio:

uint8_t cardType = SD.cardType();

Viewing all articles
Browse latest Browse all 84

Trending Articles