Skip to main content

Crate sdmmc_protocol

Crate sdmmc_protocol 

Source
Expand description

no_std SD/MMC protocol building blocks for embedded systems.

This crate provides protocol-level types and driver skeletons for SD, MMC and SDIO cards. It is transport-agnostic at the trait level and brings its own SPI-mode driver plus an SDIO host-controller abstraction.

§What you get

§Cargo features

FeatureDefaultPurpose
spiyesEnables spi::SpiTransport and spi::SpiSdmmc.
sdionoEnables the host trait and submit/poll data-command contract.

Diagnostic output goes through the log crate; configure a logger in your application to capture it.

§Example

use embedded_hal::delay::DelayNs;
use sdmmc_protocol::{
    Error,
    spi::{SpiSdmmc, SpiTransport},
};

struct MySpi;

impl SpiTransport for MySpi {
    fn transfer_byte(&mut self, byte: u8) -> Result<u8, Error> {
    }
}

fn boot<D: DelayNs>(spi: MySpi, delay: D) -> Result<(), Error> {
    let mut card = SpiSdmmc::new(spi, delay);
    let _info = card.init()?;
    let mut block = [0u8; 512];
    card.read_block(0, &mut block)?;
    Ok(())
}

§Maturity

The SPI path has protocol-level unit tests and basic block read/write support. The SDIO path is a host abstraction skeleton and needs platform-specific validation before use on real hardware.

§MSRV

Rust 1.85 (the first stable to ship edition 2024).

Re-exports§

pub use block::BlockBufferConfig;
pub use block::BlockPoll;
pub use block::BlockRequestId;
pub use block::BlockTransferDirection;
pub use block::BlockTransferMode;
pub use block::BlockTransferState;
pub use block::CommandPoll;
pub use block::CommandResponsePoll;
pub use block::DataCommandDirection;
pub use block::DataCommandPoll;
pub use block::DataCommandState;
pub use block::OperationPoll;
pub use cmd::Command;
pub use cmd::DataDirection;
pub use error::Error;
pub use error::ErrorContext;
pub use error::Phase;
pub use response::CidResponse;
pub use response::CsdResponse;
pub use response::Response;
pub use response::SwitchStatus;

Modules§

block
Block request state shared by SD/MMC host controller backends.
cmd
error
Error and diagnostic context types returned by drivers and parsers.
ext_csd
Extended CSD (EXT_CSD) register parsing for eMMC / MMC cards.
response
spi
SPI mode transport layer for SD/MMC cards