sdcardio – Interface to an SD card via the SPI bus

class sdcardio.SDCard(bus: busio.SPI, cs: microcontroller.Pin, baudrate: int = 8000000)

SD Card Block Interface

Controls an SD card over SPI. This built-in module has higher read performance than the library adafruit_sdcard, but it is only compatible with busio.SPI, not bitbangio.SPI. Usually an SDCard object is used with storage.VfsFat to allow file I/O to an SD card.

Construct an SPI SD Card object with the given properties

  • spi (busio.SPI) – The SPI bus
  • cs (microcontroller.Pin) – The chip select connected to the card
  • baudrate (int) – The SPI data rate to use after card setup

Note that during detection and configuration, a hard-coded low baudrate is used. Data transfers use the specified baurate (rounded down to one that is supported by the microcontroller)

Example usage:

import os

import board
import sdcardio
import storage

sd = sdcardio.SDCard(board.SPI(), board.SD_CS)
vfs = storage.VfsFat(sd)
storage.mount(vfs, '/sd')

Returns the total number of sectors

Due to technical limitations, this is a function and not a property.

Returns:The number of 512-byte blocks, as a number

Disable permanently.

readblocks(self, start_block: int, buf: WriteableBuffer)

Read one or more blocks from the card

  • start_block (int) – The block to start reading from
  • buf (WriteableBuffer) – The buffer to write into. Length must be multiple of 512.


writeblocks(self, start_block: int, buf: ReadableBuffer)

Write one or more blocks to the card

  • start_block (int) – The block to start writing from
  • buf (ReadableBuffer) – The buffer to read from. Length must be multiple of 512.