Skip to content

xcore/sc_sdcard

Repository files navigation

SD Card Libary

Stable release:1.0.1
Status: alpha
Maintainer:interactive_matter
Description:SD card driver library

Key Features

  • Read and write data operations on SD cards using either the SPI interface or native 4bit interface
  • Port of FatFS - FAT file system module R0.09 (C)ChaN, 2011 (http://elm-chan.org/fsw/ff/00index_e.html).
  • Beware: FAT with long file names may be covered by various patents (in particular those held by Microsoft). Use of this code may require licensing from the patent holders
  • Beware: 4bit SD protocol is subject to petents of the SD Association. When enabled on commercial products a license may be required. (see: https://www.sdcard.org/developers/howto/ )
  • Benchmark with 4bit interface multiblock read speed is about 4MBytes/sec. 1.2MBytes/sec with SPI.

To Do

  • Initialization at low clock speed (400KHz max) for the 4bit interface.
  • Test with SDXC card, SD physical layer ver 1.0 compliant card and MMC card (currently supported only with SPI interface).
  • support for MMC/eMMC at 4 and 8bit bus.
  • Date/Time function for files timestamp returning real date/time.

Firmware Overview

This module provides functions to initialize SD cards, read and write data. To enable the 4bit SD native bus interface functions it is necessary to uncomment the "//#define BUS_MODE_4BIT" in the "module_FatFs/src/diskio.h". Resources (ports and clock blocks) used for the interface need to be specified in either "module_sdcardSPI/SDCardHostSPI.xc" or "module_sdcard4bit/SDCardHost4bit.xc" in the initialization of the SDif structure. If you run it in a core other than XS1_G you need pull-up resistor for miso line (if in spi mode) or Cmd line and D0(=Dat port bit 3) line (if in 4bit bus mode)

Known Issues

  • Initialization for the 4bit protocol not done at correct clock speed of 400KHz maximum.

Required Repositories

Support

Issues may be submitted via the Issues tab in this github repo. Response to any issues submitted are at the discretion of the maintainers of this component.