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

Parameters:
  • 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')
os.listdir('/sd')
count(self)

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
deinit(self)

Disable permanently.

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

Read one or more blocks from the card

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

None

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

Write one or more blocks to the card

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

None