114 for (
uint8_t i = 0; i < 10; i++) {
469 (void) cmd; (void) arg;
547 for (
uint8_t i = 0; i < len; i++) {
Reading R1 response to CMD0 byte by byte.
Reading the 32-bit parameter after receiving 0x00 from CMD58.
enum SPIClockPolarity cpol
clock polarity control
Initialization sequence succesful.
enum SPIClockDiv cdiv
prescaler of main clock to use as SPI clock
enum SDCardType card_type
Type of SDCard.
uint8_t input_buf[SD_BLOCK_SIZE+10]
The input buffer for the SPI transaction.
uint16_t output_length
number of data words to write
uint8_t response_counter
Response counter used at various locations.
void sdcard_spi_send_cmd(struct SDCard *sdcard, uint8_t cmd, uint32_t arg)
Send a command to the SDCard.
void sdcard_spi_write_block(struct SDCard *sdcard, uint32_t addr)
Write a single block (512 bytes) to the SDCard at a given address.
Reading R1 response to CMD24 byte by byte.
About to send dummy clock cycles to initialize spi mode.
struct spi_transaction spi_t
The SPI transaction used for the writing and reading of registers.
enum SDCardStatus status
The status of the SD card.
Reading R3 response to CMD58 byte by byte.
void sdcard_spi_init(struct SDCard *sdcard, struct spi_periph *spi_p, const uint8_t slave_idx)
Configure initial values for SDCard.
void sdcard_spi_read_block(struct SDCard *sdcard, uint32_t addr, SDCardCallback callback)
Read a single block (512 bytes) from the SDCard at a given address.
uint8_t output_buf[SD_BLOCK_SIZE+10]
The output buffer for the SPI transaction.
Reading R7 response to CMD8 byte by byte.
SPI transaction structure.
slave is not selected nor unselected
bool spi_submit(struct spi_periph *p, struct spi_transaction *t)
Submit SPI transaction.
enum SPIBitOrder bitorder
MSB/LSB order.
Reading R1 response to CMD16 byte by byte.
volatile uint8_t * output_buf
pointer to transmit buffer for DMA
SDCardCallback external_callback
Callback to call when external operation finishes.
void sdcard_spi_multiwrite_stop(struct SDCard *sdcard)
Stop with multiwrite procedure.
enum SPISlaveSelect select
slave selection behavior
void sdcard_spi_multiwrite_next(struct SDCard *sdcard, SDCardCallback callback)
Write a(nother) data block (512 bytes) to the SDCard.
void sdcard_spi_periodic(struct SDCard *sdcard)
Periodic function of the SDCard.
Reading the 32-bit parameter after receiving 0x01.
void sdcard_spi_send_app_cmd(struct SDCard *sdcard, uint8_t cmd, uint32_t arg)
Send a app-command to the SDCard.
enum SPIClockPhase cpha
clock phase control
SPI peripheral structure.
void sdcard_spi_request_bytes(struct SDCard *sdcard, uint8_t len)
Request one or more bytes from the SDCard.
void(* SDCardCallback)(void)
SDCard Callback function.
Busy sending the stop token.
SPICallback after_cb
NULL or function called after the transaction.
struct spi_periph * spi_p
The SPI peripheral for the connection.
Busy with the SPI transfer in multiwrite.
uint32_t timeout_counter
Timeout counter used for initialization checks with ACMD41.
An error has occured, sending debug message.
void sdcard_spi_multiwrite_start(struct SDCard *sdcard, uint32_t addr)
Start writing multiple blocks of 512 bytes to the SDCard.
uint16_t input_length
number of data words to read
Busy sending CMD25 (multiwrite start command)
Interface for reading and writing blocks of data to and from an SD card directly over SPI...
Reading R1 response to CMD17 byte by byte.
enum SDCardErrorStatus error_status
Contains information on where the error has occured.
struct SDCard sdcard1
This is the definition of the SD card.
slave is selected before transaction and unselected after
Reading R1 response to CMD25 byte by byte.
enum SPIDataSizeSelect dss
data transfer word size
uint8_t slave_idx
slave id: SPI_SLAVE0 to SPI_SLAVE4
SDCard is busy with internal process.
Busy sending CMD17 (block read request)
Busy flag after sending data block in multiwrite.
volatile uint8_t * input_buf
pointer to receive buffer for DMA
CMD25 complete, ready to sent blocks.
void sdcard_spi_spicallback(struct spi_transaction *t)
Callback function for SPI transactions.
Busy sending dummy clock cycles.
Reading a byte each period until there is a data token or error.
Start data block transfer.
enum SPITransactionStatus status
Reading R1 response to ACMD41 byte by byte.