SdFat
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | List of all members
SdSpiCard Class Reference

Raw access to SD and SDHC flash memory cards via shared SPI port. More...

#include <SdSpiCard.h>

Public Member Functions

bool begin (SdSpiConfig spiConfig)
 
bool cardCMD6 (uint32_t arg, uint8_t *status)
 
void end ()
 
bool erase (uint32_t firstSector, uint32_t lastSector)
 
bool eraseSingleSectorEnable ()
 
void error (uint8_t code)
 
uint8_t errorCode () const
 
uint32_t errorData () const
 
bool hasDedicatedSpi ()
 
bool isBusy ()
 
bool isDedicatedSpi ()
 
bool isSpi ()
 
bool readCID (cid_t *cid)
 
bool readCSD (csd_t *csd)
 
bool readData (uint8_t *dst)
 
bool readOCR (uint32_t *ocr)
 
bool readSCR (scr_t *scr)
 
bool readSDS (sds_t *status)
 
bool readSector (uint32_t sector, uint8_t *dst)
 
bool readSectors (uint32_t sector, uint8_t *dst, size_t ns)
 
bool readStart (uint32_t sector)
 
bool readStop ()
 
 SdSpiCard ()
 
uint8_t sdState ()
 
uint32_t sectorCount ()
 
bool setDedicatedSpi (bool value)
 
bool stopTransfer ()
 
bool syncDevice ()
 
uint8_t type () const
 
bool writeData (const uint8_t *src)
 
bool writeSector (uint32_t sector, const uint8_t *src)
 
bool writeSectors (uint32_t sector, const uint8_t *src, size_t ns)
 
bool writeStart (uint32_t sector)
 
bool writeStop ()
 

Static Public Attributes

static const uint8_t IDLE_STATE = 0
 
static const uint8_t READ_STATE = 1
 
static const uint8_t WRITE_STATE = 2
 

Detailed Description

Raw access to SD and SDHC flash memory cards via shared SPI port.

Constructor & Destructor Documentation

◆ SdSpiCard()

SdSpiCard::SdSpiCard ( )
inline

Construct an instance of SdSpiCard.

Member Function Documentation

◆ begin()

bool SdSpiCard::begin ( SdSpiConfig spiConfig)

Initialize the SD card.

Parameters
[in]spiConfigSPI card configuration.
Returns
true for success or false for failure.

◆ cardCMD6()

bool SdSpiCard::cardCMD6 ( uint32_t arg,
uint8_t * status )

CMD6 Switch mode: Check Function Set Function.

Parameters
[in]argCMD6 argument.
[out]statusreturn status data.
Returns
true for success or false for failure.

◆ end()

void SdSpiCard::end ( )

End use of card

◆ erase()

bool SdSpiCard::erase ( uint32_t firstSector,
uint32_t lastSector )

Erase a range of sectors.

Parameters
[in]firstSectorThe address of the first sector in the range.
[in]lastSectorThe address of the last sector in the range.
Note
This function requests the SD card to do a flash erase for a range of sectors. The data on the card after an erase operation is either 0 or 1, depends on the card vendor. The card must support single sector erase.
Returns
true for success or false for failure.

◆ eraseSingleSectorEnable()

bool SdSpiCard::eraseSingleSectorEnable ( )

Determine if card supports single sector erase.

Returns
true is returned if single sector erase is supported. false is returned if single sector erase is not supported.

◆ error()

void SdSpiCard::error ( uint8_t code)
inline

Set SD error code.

Parameters
[in]codevalue for error code.

◆ errorCode()

uint8_t SdSpiCard::errorCode ( ) const
inline
Returns
code for the last error. See SdCardInfo.h for a list of error codes.

◆ errorData()

uint32_t SdSpiCard::errorData ( ) const
inline
Returns
error data for last error.

◆ hasDedicatedSpi()

bool SdSpiCard::hasDedicatedSpi ( )
inline
Returns
false for shared class.

◆ isBusy()

bool SdSpiCard::isBusy ( )

Check for busy. MISO low indicates the card is busy.

Returns
true if busy else false.

◆ isDedicatedSpi()

bool SdSpiCard::isDedicatedSpi ( )
inline
Returns
true if in dedicated SPI state.

◆ isSpi()

bool SdSpiCard::isSpi ( )
inline
Returns
true if card is on SPI bus.

◆ readCID()

bool SdSpiCard::readCID ( cid_t * cid)
inline

Read a card's CID register. The CID contains card identification information such as Manufacturer ID, Product name, Product serial number and Manufacturing date.

Parameters
[out]cidpointer to area for returned data.
Returns
true for success or false for failure.

◆ readCSD()

bool SdSpiCard::readCSD ( csd_t * csd)
inline

Read a card's CSD register. The CSD contains Card-Specific Data that provides information regarding access to the card's contents.

Parameters
[out]csdpointer to area for returned data.
Returns
true for success or false for failure.

◆ readData()

bool SdSpiCard::readData ( uint8_t * dst)

Read one data sector in a multiple sector read sequence

Parameters
[out]dstPointer to the location for the data to be read.
Returns
true for success or false for failure.

◆ readOCR()

bool SdSpiCard::readOCR ( uint32_t * ocr)

Read OCR register.

Parameters
[out]ocrValue of OCR register.
Returns
true for success or false for failure.

◆ readSCR()

bool SdSpiCard::readSCR ( scr_t * scr)

Read SCR register.

Parameters
[out]scrValue of SCR register.
Returns
true for success or false for failure.

◆ readSDS()

bool SdSpiCard::readSDS ( sds_t * status)

Return the 64 byte SD Status register.

Parameters
[out]statuslocation for 64 status bytes.
Returns
true for success or false for failure.

◆ readSector()

bool SdSpiCard::readSector ( uint32_t sector,
uint8_t * dst )

Read a 512 byte sector from an SD card.

Parameters
[in]sectorLogical sector to be read.
[out]dstPointer to the location that will receive the data.
Returns
true for success or false for failure.

◆ readSectors()

bool SdSpiCard::readSectors ( uint32_t sector,
uint8_t * dst,
size_t ns )

Read multiple 512 byte sectors from an SD card.

Parameters
[in]sectorLogical sector to be read.
[in]nsNumber of sectors to be read.
[out]dstPointer to the location that will receive the data.
Returns
true for success or false for failure.

◆ readStart()

bool SdSpiCard::readStart ( uint32_t sector)

Start a read multiple sector sequence.

Parameters
[in]sectorAddress of first sector in sequence.
Note
This function is used with readData() and readStop() for optimized multiple sector reads. SPI chipSelect must be low for the entire sequence.
Returns
true for success or false for failure.

◆ readStop()

bool SdSpiCard::readStop ( )

End a read multiple sectors sequence.

Returns
true for success or false for failure.

◆ sdState()

uint8_t SdSpiCard::sdState ( )
inline
Returns
SD multi-sector read/write state

◆ sectorCount()

uint32_t SdSpiCard::sectorCount ( )

Determine the size of an SD flash memory card.

Returns
The number of 512 byte data sectors in the card or zero if an error occurs.

◆ setDedicatedSpi()

bool SdSpiCard::setDedicatedSpi ( bool value)

Set SPI sharing state

Parameters
[in]valuedesired state.
Returns
true for success.

◆ stopTransfer()

bool SdSpiCard::stopTransfer ( )

end a multi-sector transfer.

Returns
true for success or false for failure.

◆ syncDevice()

bool SdSpiCard::syncDevice ( )
Returns
success if sync successful. Not for user apps.

◆ type()

uint8_t SdSpiCard::type ( ) const
inline

Return the card type: SD V1, SD V2 or SDHC/SDXC

Returns
0 - SD V1, 1 - SD V2, or 3 - SDHC/SDXC.

◆ writeData()

bool SdSpiCard::writeData ( const uint8_t * src)

Write one data sector in a multiple sector write sequence.

Parameters
[in]srcPointer to the location of the data to be written.
Returns
true for success or false for failure.

◆ writeSector()

bool SdSpiCard::writeSector ( uint32_t sector,
const uint8_t * src )

Write a 512 byte sector to an SD card.

Parameters
[in]sectorLogical sector to be written.
[in]srcPointer to the location of the data to be written.
Returns
true for success or false for failure.

◆ writeSectors()

bool SdSpiCard::writeSectors ( uint32_t sector,
const uint8_t * src,
size_t ns )

Write multiple 512 byte sectors to an SD card.

Parameters
[in]sectorLogical sector to be written.
[in]nsNumber of sectors to be written.
[in]srcPointer to the location of the data to be written.
Returns
true for success or false for failure.

◆ writeStart()

bool SdSpiCard::writeStart ( uint32_t sector)

Start a write multiple sectors sequence.

Parameters
[in]sectorAddress of first sector in sequence.
Note
This function is used with writeData() and writeStop() for optimized multiple sector writes.
Returns
true for success or false for failure.

◆ writeStop()

bool SdSpiCard::writeStop ( )

End a write multiple sectors sequence.

Returns
true for success or false for failure.

Member Data Documentation

◆ IDLE_STATE

const uint8_t SdSpiCard::IDLE_STATE = 0
static

SD is in idle state

◆ READ_STATE

const uint8_t SdSpiCard::READ_STATE = 1
static

SD is in multi-sector read state.

◆ WRITE_STATE

const uint8_t SdSpiCard::WRITE_STATE = 2
static

SD is in multi-sector write state.


The documentation for this class was generated from the following files: